K8S报错Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady的解决方案
你看 systemctl status kubelet 里的这一行报错: "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady"
这说明 Kubelet 在抱怨:“我找不到网络插件(CNI),网络还没准备好。”
既然另外两台节点都是 Ready,说明 Calico 网络插件在集群级别是部署成功的,并且在另外两台机器上运行良好。之所以只有 ubuntu2204 罢工,是因为这台机器之前经历了太多次的失败、重启和 kubeadm reset。
kubeadm reset 会清理配置,但它不会帮你清理残留的虚拟网卡(比如 tunl0、cni0 等)和 iptables 路由。这些上个“失败世代”遗留下来的脏网络配置,卡住了当前这台机器的 Calico Pod,导致它一直无法就绪。
🛠️ 终极收尾:一键清理脏网络
你只需要在 ubuntu2204 这台机器上,手动把这些残留的虚拟网卡删掉,然后让服务重启一下即可。
请在 ubuntu2204 上依次执行以下命令:
1. 删除残留的 CNI 虚拟网卡
sudo ip link delete cni0 2>/dev/null || true
sudo ip link delete flannel.1 2>/dev/null || true
sudo ip link delete tunl0 2>/dev/null || true
(注意:如果提示 Cannot find device 是正常现象,说明那个网卡已经被清理或不存在,忽略即可)
2. 清理残留的 CNI 配置文件
sudo rm -rf /var/lib/cni/
sudo rm -rf /etc/cni/net.d/
3. 重启容器引擎和 Kubelet
sudo systemctl restart containerd
sudo systemctl restart kubelet
4. 强制删除该节点上卡住的 Calico Pod(让它自动重建)
kubectl delete pod -n kube-system -l k8s-app=calico-node --field-selector spec.nodeName=ubuntu2204
🚀 见证大功告成
执行完上面的清理步骤后,稍微等个 30 秒左右,再次输入:
kubectl get nodes
这次,你应该能看到所有 3 台 Master 节点全部整整齐齐地变成了 Ready。你的高可用 Kubernetes 集群,正式宣告搭建完毕!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。






