k8s集群node节点一直NotReady, 且node节点(并非master)的kubelet报错:Unable to update cni config: No networks found in /etc/cni/net.d
若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11401031.html
问题:
集群搭建的过程中,master节点初始化成功,但 node节点加入集群时却一直显示NotReady状态,如下:
使用kubeclt describe node xxxx
命令,发现报错:
KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
进入node节点,执行 systemctl status kubelet
和 journalctl -xeu kubelet
命令,发现报错:
Unable to update cni config: No networks found in /etc/cni/net.d
原因:
该错误意思是 CNI插件还未安装,所以状态会是NotReady。
解决:
方法一:
编辑 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件(有的是/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf文件),
删除最后一行里的$KUBELET_NETWORK_ARGS 即可。
(该方法治标不治本,没能解决我的问题)
方法二:
考虑到node节点的kubelet报错Unable to update cni config: No networks found in /etc/cni/net.d,并且master节点的/etc/cni/net.d目录里拥有10-flannel.conflist文件,
我们可以把该文件从master节点复制到node节点的对应目录中,然后重启kubelet服务即可。
(该方法亡羊补牢,对我的问题也没用)
方法三:
注意到master节点的/etc/cni/net.d/10-flannel.conflist文件是经过 安装flannel插件 才生成的,而node节点则是在master节点安装完flannel插件后才加入集群的,
所以,我们不妨 先加入node节点,再执行 flannel插件的安装。
(该方法有取巧的嫌疑,但解决了我的问题)