若要轉載本文,請務必聲明出處: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插件的安裝。
(該方法有取巧的嫌疑,但解決了我的問題)