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重启,重启就会重新加载配置文件。

相关推荐
MongoDB 数据平台5 分钟前
破解车联网数据管理困局,MongoDB助力长城汽车构建车联数智化核心引擎
数据库·mongodb
2301_779622416 分钟前
如何自动计算SQL税费信息_利用触发器实时扣算税额
jvm·数据库·python
weixin_444012937 分钟前
mysql在高并发环境下的读写分离与负载均衡
jvm·数据库·python
2401_824697667 分钟前
如何通过phpMyAdmin给WordPress所有用户发送全站通知_系统表插入
jvm·数据库·python
CLX05058 分钟前
如何管理Oracle服务器的内核共享内存_shmmax与shmall计算
jvm·数据库·python
云边有个稻草人10 分钟前
端边云一体化时序数据管理:数据库选型与技术实现
数据库·端边云时序数据方案·工业物联网时序数据库·开源时序数据库选型·高压缩时序存储技术·时序数据库选型指南·tsfile 存储引擎技术
2301_8125396711 分钟前
golang如何实现备忘录模式_golang备忘录模式实现方案
jvm·数据库·python
weipt11 分钟前
国产数据库私有化部署实战:PolarDB for PostgreSQL 免费容器版踩坑记
数据库·postgresql
woxihuan12345614 分钟前
HTML怎么构建课程学习仪表盘_HTML进度环+任务列表【教程】
jvm·数据库·python
三产15 分钟前
Hermes 教程 03:Skills 系统
android·java·数据库