kubernetes运维其他常见问题

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

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运维其他常见问题

1 K8S主机messages日志中,出现node "xxx" not found,原因是etcd运行异常现象:1、K8S节点运行异常;2、K8S主机/var/log/messages日志...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息