Kubernetes in Docker(Kind)节点NotReady问题求助
解决kind集群节点NotReady(CNI插件未初始化)问题
针对Windows10+WSL2(Ubuntu22.04)+Docker Desktop环境下,kind创建集群后节点提示runtime network not ready: NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized的问题,可按以下步骤排查解决:
1. 验证Docker与WSL集成状态
- 打开Docker Desktop,进入Settings > Resources > WSL Integration,确认Ubuntu 22.04的集成开关已开启,点击
Apply & Restart重启Docker。 - 在WSL终端执行
docker info,确认输出中包含WSL 2相关标识,确保Docker服务在WSL环境正常运行。
2. 删除现有集群并重新创建
CNI初始化失败多为临时网络配置异常,重新创建集群大概率能解决:
- 删除问题集群:
kind delete cluster --name wslkind - 用默认配置重新创建集群:
kind create cluster --name wslkind - 创建完成后等待2-3分钟,执行
kubectl get nodes查看节点状态。
3. 手动检查并修复CNI插件(若重新创建无效)
- 进入集群的control-plane容器:
docker exec -it wslkind-control-plane bash - 查看CNI插件目录是否存在有效文件:
正常应存在ls /etc/cni/net.d/10-kindnet.conflist文件,若为空或缺失,手动生成默认CNI配置:cat > /etc/cni/net.d/10-kindnet.conflist <<EOF { "cniVersion": "0.3.1", "name": "kindnet", "plugins": [ { "type": "kindnet", "ipam": { "type": "host-local", "subnet": "10.244.0.0/16", "routes": [{"dst": "0.0.0.0/0"}] } }, { "type": "portmap", "capabilities": {"portMappings": true} } ] } EOF - 重启kubelet服务:
systemctl restart kubelet - 退出容器,等待1-2分钟后再次执行
kubectl get nodes确认状态。
4. 检查WSL网络配置
- 在WSL终端执行
ip addr,确认eth0接口已分配有效IP地址。 - 检查DNS配置,确保
/etc/resolv.conf中的nameserver为有效地址(如8.8.8.8),避免因DNS解析失败导致CNI插件下载异常。
内容的提问来源于stack exchange,提问作者DrCyclotron
相关产品推荐
相关产品推荐

