我已经安装了一个 K8s 集群。工作节点已成功加入集群。但是,它尚未准备就绪:
a@front:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
front Ready control-plane 49m v1.27.1
wn1 NotReady <none> 40m v1.27.1
这是因为:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
a@front:~$ kubectl describe node wn1
Name: wn1
Roles: <none>
...
Taints: node.kubernetes.io/not-ready:NoExecute
node.cilium.io/agent-not-ready:NoSchedule
node.kubernetes.io/not-ready:NoSchedule
Unschedulable: false
...
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Tue, 24 Oct 2023 21:26:10 +0000 Tue, 24 Oct 2023 21:05:34 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 24 Oct 2023 21:26:10 +0000 Tue, 24 Oct 2023 21:05:34 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Tue, 24 Oct 2023 21:26:10 +0000 Tue, 24 Oct 2023 21:05:34 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
Ready False Tue, 24 Oct 2023 21:26:10 +0000 Tue, 24 Oct 2023 21:05:34 +0000 KubeletNotReady container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
确实,Pod 无法正常工作:
a@front:~$ kubectl get pods -o wide --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system cilium-drrww 1/1 Running 0 20m 10.10.17.2 front <none> <none>
kube-system cilium-gj6h6 0/1 Init:0/6 0 10m 10.10.17.3 wn1 <none> <none>
kube-system cilium-operator-788c7d7585-htnr6 0/1 ContainerCreating 0 48m 10.10.17.3 wn1 <none> <none>
kube-system cilium-operator-788c7d7585-trmrk 1/1 Running 0 48m 10.10.17.2 front <none> <none>
...
kube-system kube-proxy-7tsfd 0/1 ContainerCreating 0 44m 10.10.17.3 wn1 <none> <none>
kube-system kube-scheduler-front 1/1 Running 4 52m 10.10.17.2 front <none> <none>
我可以删除它,因此它被重新创建,但问题仍然是一样的。
这地点提到了 CIDR 的一个潜在问题,但事实似乎并非如此:
a@front:~$ kubectl cluster-info dump | grep cidr
"--allocate-node-cidrs=true",
"--cluster-cidr=10.10.17.0/16",
可能发生什么事情或者我如何进一步研究该问题?
在工作节点中,我基本上安装了kubeadm
,kubelet
并kubectl
加入了集群,但我没有安装任何与 CNI 插件相关的东西(我只在 CP 上安装了)。Kubernetes 应该从 CP 处理这个问题,但这让Network plugin returns error: cni plugin not initialized
我很困惑。
答案1
您能否描述一下这些 Pod,看看是否有任何事件,就像您对节点所做的那样?此外,您终端的复制和粘贴显示 Pod 仍在准备就绪 - 您等待了多长时间,一段时间(几分钟)后它们会发生什么?
我是从 Calico 的角度(另一个 CNI)来讨论这个问题的,因为这是我的经验,而且看起来你已经完成了初步的步骤安装 Kubernetes您的节点已启动并运行。您与 Cilium 结缘了吗?Calico 有文档“艰难之路“这听起来就像你正在做的事情,而且可能会带来更多的成功,尤其是正如你所说”我无法分享任何文档。复制很困难。“(我不知道这是因为你没有遵循文档,还是这是一个秘密)安装 Calico 时,你必须配置并应用自定义资源定义在安装 CNI 之前 - 您是否做过类似的事情,您能验证它是否正确吗?您是否绝对确定您使用的 CIDR 不会与其他任何内容重叠?Calico 和 Cilium 都有 CLI - 您安装了它吗?您可以使用该工具获取状态,然后获取任何错误吗?
我的建议如下:
- 描述 pod 或获取 pod 日志并查找错误/事件
- 检查所有 CDR 并确保配置正确
- 安装并使用 CNI CLI 工具检查状态
- 尝试不同的 CNI/按照说明进行复制/调试