解决k8s核心组件calico pod资源不创建问题

解决k8s核心组件calico pod资源不创建问题

1.问题描述

由于K8S集群Master节点故障,导致calico网络组件虽然处于Running状态,但是一直无法准备就绪,如下图所示

在这里插入图片描述

calico-node-lpt7h运行在master节点,第一时间紧急处理方法就是将其pod删除,让K8S自动重建该pod,使整个集群快速恢复

但是就当我将calico-node-lpt7h pod删除后,该pod始终无法自建,就好像是从来没有这个pod似的

在这里插入图片描述

2.解决方法

期初排查时,我觉得可能是由于当前master节点核心组件apiserver、kubelet产生了问题,当将这两个组件重启完后,calico pod始终没有在master上进行自建,这有点不太乐观,然后我又将该主机进行重启,问题依旧无法解决。

就在此时,我想起来曾经遇到过类似的问题,当时是以kubeadm方式安装的K8S集群,apiserver这个核心组件就是始终无法在当前服务器上创建pod,不光是apiserver,controllermanager、scheduler也无法启动,我当时的处理方法是查看了当前服务器上运行的所有容器,发现居然还有apiserver、controllermanager、scheduler这些容器,心想,这不应该了,都应有用kubectl delete删除这个pod了,为什么有容器在运行呢,得到的结论可能就是核心组件只是删除的表面,并没有在docker里完成删除,导致新的claico容器启动不了。

这时用docker ps -a | grep calico命令进行查看,很清楚的看到运行了好多calico容器
在这里插入图片描述

将容器全部删除

在这里插入图片描述

3.总结

pod不在集群中创建的可能原因:

1)上次删除pod时没有删除干净,docker中任然存在

2)kube-apiserver、kube-scheduler、kube-controller-manage、kubelet、kube-proxy组件中集群api地址写的有错误导致

3)还有可能是由于pod调度的主机设置了污点,所以导致无法创建pod

kubectl taint node binary-k8s-master1 node-role.kubernetes.io/master:NoExecute

kubectl taint node binary-k8s-master1 node-role.kubernetes.io/master:NoExecute-

4)如果以上三种可能都不存在,那么就是scheduler组件或者kubelet的问题了

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>