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正常运行。故重点查看容器运行时,是否存在问题。

接下来,排查容器运行时

说明,此次的集群中,我安装了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

重启启动docker服务

再次查看 节点状态

可以看到,已经是Ready了。(既然 已经Ready,也从另一个角度说明了 containerd应该没有问题。)

不相信的话,systemctl status containerd 查看以下。

ok,问题解决,撤!

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