解决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资源不创建问题的主要内容,如果未能解决你的问题,请参考以下文章

k8s故障案例:calico无限重启

k8s网络通信(flannelcalico)

基于containerd搭建的K8S集群calico与coredns组件一直处于pending状态

云原生之kubernetes实战k8s集群核心资源对象之Pod

K8s网络插件flannel与calico

k8s基于canel的网络策略