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状态,如下:

img

使用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 kubeletjournalctl -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插件的安装。
​ (该方法有取巧的嫌疑,但解决了我的问题)

posted @ 2019-08-23 16:41  <予安>  阅读(17818)  评论(3编辑  收藏  举报