1、步骤一:K8S集群节点异常重启后,再终端执行kubectl get nodes命令,出现报错dial tcp 10.200.18.100:6443: connect: connection refused。
2、步骤二:通过docker ps -a可以看到api现在处于exit退出状态。
3、步骤三:查看apiserver服务容器的启动日志, 发现又出现报错Error while dialing dial tcp 127.0.0.1:2379: con荏鱿胫协nect: connection refused,2379是etcd的端口,那么apiserver是由于etcd无法连接而启动不了。
4、步骤四:接着查看etcd的启动日志,发现报错mvcc: cannot unmarshal event多唉捋胝: proto: wrong wireType = 0 for field Key。经查询资料,此报错是由于服务器非正常关机(意外掉电,强制拔电)后 etcd数据损坏导致的,这个节点之前确实是出现异常关机,etcd无法启动,那么解决此问题就行了。
5、步骤五:按照指导进行操作,在故障节点上停止etcd服务并删除损坏的 etcd 数据,现在etcd服务本来就没有启动,删除前先备份数据,最后启动etcd服务。注:容儡泌掩羞器的数据在/var/lib目录下,按照下图操作。
6、步骤六:最后先启动etcd服务,然后启动api-server,执行kubectl get nodes后可以正常显示节点状态,问题解决。