到有问题节点上执行 journalctl -f -u kubelet.service 命令看到有如下报错
k8s-node1 kubelet[27242]: I1014 11:17:29.409068 27242 cni.go:239] "Unable to update cni config" err="no networks found in /etc/cni/net.d"
Oct 14 11:17:29 k8s-node1 kubelet[27242]: E1014 11:17:29.996079 27242 kubelet.go:2332] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized"
主节点:
我发现 /opt/cni/bin
目录下缺少很多可执行文件,处理方式是重新安装kubernetes-cni
从节点:
解决方法,将master上/etc/cni/net.d 目录下的文件拷贝到有问题的节点上:
scp server4:/etc/cni/net.d/* /etc/cni/net.d/
可以了
kubectl edit cm coredns -n kube-system
需要先进入 coredns的configmap然后删除他的loop然后保存退出
然后删除两个coredns pod
kubectl delete pod coredns-8686dcc4fd-859r5 coredns-8686dcc4fd-j9nfd -n kube-system
略作解释
kubelet配置 --network-plugin=cni
,仅当CNI(容器网络插件)正确安装后才会改变状态为 READY。
上文出现的情况原因就是缺少CNI可执行文件,导致CNI初始化失败。