一次Kubernetes集群故障处理案例:etcd无法选出Leader导致Kubernetes API-Server启动失败
1. 概述
1、集群信息
Name | IP | Role |
---|---|---|
Node1 | 172.17.1.120 | 控制节点1 |
Node2 | 172.17.1.121 | 控制节点2 |
k8s-2 | 172.17.1.131 | 工作节点1 |
k8s-3 | 172.17.1.132 | 工作节点2 |
2、故障现象
我按照正常卸载工作节点的操作步骤,一切顺利,当时并没有什么异常。
1 | root@node1:~# kubectl drain node node2 --ignore-daemonsets --delete-emptydir-data |
故障出现原因:双控制平面Kubernetes(这个状态本身就异常,但不在本次讨论范围内)删除Node2
控制节点后,另外一个控制平面无法正常工作。具体表现为ETCD启动失败,导致Kubernetes api-server
启动失败。
1 | Jul 22 23:17:05 node1 kubelet[3301]: E0722 23:17:05.135471 3301 controller.go:145] "Failed to ensure lease exists, will retry" err="Get \"https://172.17.1.120:6443/apis/coordination.k8s.io/v1/namespaces/kube-node-lease/leases/node1?timeout=10s\": dial tcp 172.17.1.120:6443: connect: connection refused" interval="7s" |