0
点赞
收藏
分享

微信扫一扫

k8s集群故障之-etcd启动异常

kiliwalk 2022-07-18 阅读 83

故障问题

执行kubectl get nodes命令出现如下错误信息:

the connection to server 192.168.58.100:6443 was refused

问题分析

步骤一

k8s集群中6443是apiserver的端口,通过docker ps -a查看到apiserver处于Exited状态;

步骤二

docker logs -f apiserver的CONTAINER ID

查看apiserver服务容器的启动日志, 发现又出现报错Error while dialing dial tcp 127.0.0.1:2379: connect: connection refused,2379是etcd的端口,那么apiserver是由于etcd无法连接而启动不了。

步骤三

接着查看etcd的启动日志,发现报错mvcc: cannot unmarshal event: proto: wrong wireType = 0 for field Key经查询资料,此报错是由于服务器非正常关机(意外掉电,强制拔电)后 etcd数据损坏导致的,这个节点之前确实是出现异常关机,etcd无法启动,那么解决此问题就行了。

步骤四

在故障节点上停止etcd服务并删除损坏的 etcd数据,现在etcd服务本来就没有启动,删除前先备份数据,最后启动etcd服务。etcd容器的数据在/var/lib/etcd/member目录下;

#不知道路径可以查找etcd数据目录
find / -type d -name member
cd /var/lib/etcd/member
#删除或者移走备份都可以
rm -rf *

步骤五

然后先启动etcd服务,然后启动api-server,最后执行kubectl get nodes后可以正常显示节点状态,该问题成功解决。

注:k8s集群遇到这种问题,etcdapiserver会一直重启,因此不需要手动启动etcdapiserver,等待它自动重启成功即可。

举报

相关推荐

0 条评论