prometheus监控etcd证书报错问题

背景

prometheus重启之后显示集群中的etcd节点全部down掉了。

在集群中查看etcd状态是正常的

进一步查看etcd日志发现

json 复制代码
{"level":"warn","ts":"2023-10-27T07:52:58.389Z","caller":"embed/config_logging.go:169","msg":"rejected connection","remote-addr":"192.168.1.38:38062","server-name":"","error":"tls: failed to verify client certificate: x509: certificate has expired or is not yet valid: current time 2023-10-27T07:52:58Z is after 2023-10-23T03:26:36Z"}

分析

Prometheus连接到etcd抓取监控信息需要配置证书才可以。

集群中的etcd证书更新之后,没有同步到Prometheus的pod中去。

解决

直接使用kubectl cp报权限错误

bash 复制代码
root@dev-k8s-master03:/etc/kubernetes/pki# kubectl cp /etc/kubernetes/pki/apiserver-etcd-client.crt -c prometheus prometheus-54b464684f-ss6vv:/prometheus/dev-etcd/apiserver-etcd-client.crt
tar: can't remove old file apiserver-etcd-client.crt: Permission denied

找到Prometheus的部署文件发现挂载的是pvc存储卷,使用的集群中storageclass存储。

从nfs-client-provisioner中找到使用的nfs服务器的地址,远程到服务器中去,手动copy证书文件。crt文件和key文件都要拷贝

bash 复制代码
root@dev-k8s-master03:/etc/kubernetes/pki# scp apiserver-etcd-client.crt nfs服务器IP地址:/nfsroot/prometheus的pvc/pod中使用的目录/

问题解决。

思考

一些排错的思路是可以学习的:比如看到etcd集群中的报错,是warn级别的,一般是客户端的报错。

而在发现etcd报错之后,登陆k8s集群正常使用,证明etcd集群本身是没有问题的。

继续分析报错是客户端连接的报错。既不是同步数据使用的2380端口,更不是提供服务的2379端口。而是remote addr。

回想自己做的操作,prometheus重启,重启就会重新加载配置文件。

相关推荐
Bert.Cai14 小时前
MySQL LPAD()函数详解
数据库·mysql
OnlyEasyCode15 小时前
Navicat 任务自动备份指定数据库
数据库
if else15 小时前
Redis 哨兵集群部署方案
数据库·redis
yejqvow1216 小时前
Pandas 高效实现组内跨行时间戳匹配与布尔标记
jvm·数据库·python
了不起的云计算V16 小时前
从DeepSeek V4适配看国产算力的三个拐点
数据库·人工智能
qq_1898070316 小时前
html标签如何提升可访问性_aria-label与title区别【指南】
jvm·数据库·python
norq juox16 小时前
MySQL 导出数据
数据库·mysql·adb
qq_3493174816 小时前
mysql如何设置定时自动备份脚本_编写shell脚本与cron任务
jvm·数据库·python
9523617 小时前
Spring IoC&DI
java·数据库·spring
尚雷558017 小时前
从电商订单支付更新,吃透 Oracle 数据修改的底层设计哲学与全组件协同原理
数据库·oracle