k8s集群中控制节点处于NotReady,怎么办?

昨天成功部署了单master节点的k8s集群,可是master节点处于NotReady?(今天刚注意到)

如何解决呢?

排查思路如下:

  • 可能是容器运行时(**Containerd/Docker)**未正常启动
  • 可能是网络插件calico的配置文件,有问题

首先,排查网络插件calico

root@103 \~\]# kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE calico-kube-controllers-b48d575fb-jngns 1/1 Running 0 13h calico-node-59gdp 1/1 Running 0 13h calico-node-m6x29 1/1 Running 0 13h calico-node-tlqdq 1/1 Running 0 13h coredns-567c556887-58cwt 1/1 Running 0 16h coredns-567c556887-wdcrh 1/1 Running 0 16h etcd-103.org 1/1 Running 2 16h kube-apiserver-103.org 1/1 Running 2 16h kube-controller-manager-103.org 1/1 Running 2 16h kube-proxy-6wt6v 1/1 Running 0 16h kube-proxy-nfwgf 1/1 Running 0 16h kube-proxy-tv5t5 1/1 Running 0 16h kube-scheduler-103.org 1/1 Running 2 16h # 根据以上内容,大致可以看出 calico正常运行。故重点查看容器运行时,是否存在问题。 ![](https://i-blog.csdnimg.cn/direct/f17f47bb8ae6410e9f25b7f08f6268a3.png)

接下来,排查容器运行时

说明,此次的集群中,我安装了docker、containerd。docker负责拉取、打包镜像。containerd 用于解压、使用镜像。

#查看 docker运行状态,结果 没有该服务

root@103 \~\]# systemctl status docker Unit docker.service could not be found. # 开启docker、并设置开机自启 \[root@103 \~\]# systemctl start docker; systemctl enable docker --now Failed to start docker.service: Unit docker.service not found. Failed to enable unit: Unit file docker.service does not exist. 根据上面的输出提示,可知: docker 可能未安装 \[root@103 \~\]# yum install docker-ce -y #重新安装docker ![](https://i-blog.csdnimg.cn/direct/39ceeeb42de54f50bd7c25920fe55bfe.png) 重启启动docker服务 ![](https://i-blog.csdnimg.cn/direct/f514a40b00454797a52c8e57d8f84600.png) 再次查看 节点状态 ![](https://i-blog.csdnimg.cn/direct/9827961966c5468f9a0c81f2c8b97ab6.png) 可以看到,已经是Ready了。(既然 已经Ready,也从另一个角度说明了 containerd应该没有问题。) 不相信的话,systemctl status containerd 查看以下。 ![](https://i-blog.csdnimg.cn/direct/96fbe25f27b045c09671aa93e4288cc6.png)

ok,问题解决,撤!

如要转载,请附上原文链接!