问题场景:
- K8S master节点安装完kube-flannel之后(加粗是重点) 执行kubectl get nodes命令看到master状态依旧是NotReady
- K8S node节点kubeadm join命令后,已成功添加到集群,但是执行kubectl get nodes命令看到node状态依旧是NotReady
图片展示的是node节点的NotReady状态,master节点最开始也是这个状态,我已经解决过了,无论master节点还是node节点,都可以试下这个方法
核对问题症状:
-
执行journalctl -f -u kubelet命令
报错:NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
或者报错:Unable to update cni config: no valid networks found in /etc/cni/net.d
-
执行ls /opt/cni/bin/命令,看是否有flannel这个文件,如果没有,就是有问题的
解决办法:
手工复制flannel到/opt/cni/bin/文件夹,并添加执行权限
-
下载文件cni-plugins-linux-amd64-v0.8.6.tgz,并提取flannel文件
这个文件挺不容易下载,我附一个百度云地址,也可以自己从网上找百度云地址:https://pan.baidu.com/s/19awtK-7_wJWvpQ3d-l8NTg
提取码:8888 -
把提取到的flannel复制或上传到/opt/cni/bin/
-
执行chmod +x /opt/cni/bin/flannel 命令添加权限
-
返回master节点,执行kubectl get nodes命令查看状态,问题解决
当然出现问题的原因可能有很多种,这个方案不能百分百解决