
我已經安裝了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並且您的節點已啟動並正在運行。你和西里姆結婚了嗎? Calico 有文檔“艱難的道路“這聽起來像你正在做的事情,並且可能會取得更大的成功,尤其是正如你所說的那樣”我無法共享任何文件。複製是困難的。」(不知道是因為你沒有遵循文檔,還是這是一個秘密)安裝Calico時,你必須配置並應用自訂資源定義在安裝 CNI 之前 - 您是否做過類似的事情並且您可以驗證它是否正確?您絕對確定您使用的 CIDR 不會與其他任何內容重疊嗎? Calico 和 Cilium 都有 CLI - 您安裝了嗎?您可以使用該工具取得狀態然後收到任何錯誤嗎?
TLDR 我的建議:
- 描述 Pod 或取得 Pod 日誌並尋找錯誤/事件
- 檢查所有 CDR 並確保配置正確
- 安裝並使用CNI CLI工具檢查狀態
- 嘗試不同的 CNI/按照說明進行複製/調試