解决k8s核心组件calico pod资源不创建问题
Posted Jiangxl~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决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的问题了
以上是关于解决k8s核心组件calico pod资源不创建问题的主要内容,如果未能解决你的问题,请参考以下文章
基于containerd搭建的K8S集群calico与coredns组件一直处于pending状态