kubernetes运维其他常见问题
1 K8S主机messages日志中,出现node "xxx" not found,原因是etcd运行异常
现象:
1、K8S节点运行异常;
2、K8S主机/var/log/messages日志中,出现node "xxx" not found,并不停地打印该日志:
May 06 11:27:22 cqcsk8s2 kubelet[23408]: E0506 11:27:22.679189 23408 kubelet.go:2183] node "cqcsk8s2" not found May 06 11:27:22 cqcsk8s2 kubelet[23408]: E0506 11:27:22.779409 23408 kubelet.go:2183] node "cqcsk8s2" not found May 06 11:27:22 cqcsk8s2 kubelet[23408]: E0506 11:27:22.834362 23408 controller.go:136] failed to ensure node lease exists, will retry in 7s, error: Get "https://10.18.xx.xx:6443/apis/coordination.k8s.io/v1/namespaces/kube-node-lease/leases/cqcsk8s2?timeout=10s": dial tcp 10.18.xx.xx:6443: connect: connection refused May 06 11:27:22 cqcsk8s2 kubelet[23408]: E0506 11:27:22.879617 23408 kubelet.go:2183] node "cqcsk8s2" not found May 06 11:27:22 cqcsk8s2 kubelet[23408]: E0506 11:27:22.979850 23408 kubelet.go:2183] node "cqcsk8s2" not found May 06 11:27:23 cqcsk8s2 kubelet[23408]: I0506 11:27:23.037403 23408 kubelet_node_status.go:70] Attempting to register node cqcsk8s2 May 06 11:27:23 cqcsk8s2 kubelet[23408]: E0506 11:27:23.037924 23408 kubelet_node_status.go:92] Unable to register node "cqcsk8s2" with API server: Post "https://10.18.xx.xx:6443/api/v1/nodes": dial tcp 10.18.xx.xx:6443: connect: connection refused May 06 11:27:23 cqcsk8s2 kubelet[23408]: E0506 11:27:23.080005 23408 kubelet.go:2183] node "cqcsk8s2" not found May 06 11:27:23 cqcsk8s2 kubelet[23408]: E0506 11:27:23.180238 23408 kubelet.go:2183] node "cqcsk8s2" not found May 06 11:27:23 cqcsk8s2 kubelet[23408]: E0506 11:27:23.280433 23408 kubelet.go:2183] node "cqcsk8s2" not found May 06 11:27:23 cqcsk8s2 kubelet[23408]: E0506 11:27:23.380692 23408 kubelet.go:2183] node "cqcsk8s2" not found May 8 23:22:34 cqcsk8s1 kubelet: E0508 23:22:34.716068 28838 kubelet_node_status.go:442] Error updating node status, will retry: error getting node "cqcsk8s1": Get "https://10.18.xx.xx:6443/api/v1/nodes/cqcsk8s1?timeout=10s": dial tcp 10.18.xx.xx:6443: connect: connection refused |
3、执行kubectl 无法连接上apiserver,执行失败。
分析:
从messages直接可以看到,当前节点无法注册到apiserver中,原因是API server dial tcp connection refused,也就是当前节点无法连接apiserver 6443端口。这需要分析apiserver 6443无法访问的原因。
进一步发现,是kube-apiserver组件异常,没有启动,此时不能通过kubectl 命令查看容器日志,可以使用docker logs 命令查看kube-apiserver容器的日志,发现是etcd连接异常:
grpc: addrConn.createTransport failed to connect to {https://xx.xx.xx.xx:2379 <nil> 0 <nil>}. Err :connection error: desc = "transport: Error while dialing dial tcp xx.xx.xx.xx:2379: connect: connection refused"
再排查etcd运行状态,发现etcd运行异常。
这时原因大概就清楚了:etcd异常 导致 kube-apiserver 异常,最终导致node节点异常。
解决方案参考:
etcd运行异常,需要进一步分析,首先重启etcd,或者重启docker和主机,可以恢复正常。
如果是集群部署,要查看是否是其它的etcd节点停止,无法连接上,则要从etcd集群角度进行etcd集群恢复。
另外,还有可能是etcd的数据损坏了,如果有备份数据,可以进行恢复,没有备份数据,那只能重装k8s。如果是高可用部署,可以简单地删除当前etcd的数据,通过其它节点同步来恢复,具体可参考文章:K8S集群 etcd 异常恢复。
2 K8S主机messages日志中,出现node "xxx" not found,原因是修改了主机名称
现象:
k8s的主机重启后,发现组件无法启动(master节点),node节点也无法加入到集群中,查看K8S主机/var/log/messages日志中,出现node "xxx" not found,并不停地打印该日志。
仔细查看/var/log/messages日志,发现日志中的node名称,与当前主机名称不一致。经了解,k8s安装后,修改过主机名称,修改后也没有重启过主机,未能发现问题。k8s默认是以主机名称作为节点加入到集群当中,不能随意修改主机。
解决方法:
1. 把主机名称修改回原来的名称,然后重启主机;
2. 修改k8s kubelet的启动参数,编辑: vi /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=kcr.kingdee.com/k8s/pause:3.2 --hostname-override=xxxx" |
增加参数:--hostname-override=xxxx,xxxx为原来的主机名称
最后重启kubelet:systemctl restart kubelet
kubernetes运维其他常见问题
本文2024-09-23 01:10:18发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144229.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf