问题:重复执行 kubectl get pods 执行时获取到的pod节点状态在变化请添加图片描述
怀疑:etcd中有节点数据不正确

1、部署 etcd可视化服务查看数据

etcdkeeper下载
上传只etcd节点,解压后,赋予执行权限,启动程序
./etcdkeeper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/peer.crt -key /etc/kubernetes/pki/etcd/peer.key -p 8011

登录访问:http://10.10.10.13:8011/etcdkeeper/

2、查看有问题的pod存储在etcd中的数据

可以看到在 10.10.10.13 节点上 etcd中的数据和10.10.10.11 节点上是有差异的。
集群模式,还存在10.10.10.12节点,其数据与10.10.10.11 一致,此处未展示
10.10.10.13 节点数据
10.10.10.11 节点数据

3、通过容器状态判断哪个节点etcd数据不正确

容器状态
对应容器启动正常,说明pod也是正常的,所以是10.10.10.13 节点的数据存在问题。

4、处理问题节点的etcd服务恢复数据

通过重启问题节点的数据,让其在重启时去重新同步其他正确节点的数据

停止10.10.10.13 节点的etcd服务
systemctl stop etcd
从集群中删除该节点
etcdctl member list
etcdctl member remove c6eaa306941ff399

再将该节点加入集群
etcdctl member add master3 --peer-urls=“https://10.10.10.13:2380”

修改10.10.10.13 启动文件配置,删除该节点数据(再次启动时从其他节点同步正确的数据过来)
sed -i “s#initial-cluster-state: ‘new’#initial-cluster-state: ‘existing’” /etc/etcd/etcd.config.yml
cd /var/lib/etcd && tar -zcvf 20220106back.tar.gz member/ wal/
rm -rf member/ wal/

再次启动该节点etcd
systemctl start etcd

查看etcd状态
etcdctl member list
请添加图片描述

5、再次确认节点数据

数据已经恢复正常。
请添加图片描述

6、问题原因

已有大神进行了详细的分析。
问题详细原因及原理:https://zhuanlan.zhihu.com/p/138424613

Logo

开源、云原生的融合云平台

更多推荐