刪除所有工作者節點之後,為何我的 Pod 不在新的工作者節點上啟動?
排除工作節點刪除失敗及 Pod 卡住的問題。
虛擬私有雲 經典基礎架構
您已刪除叢集裡的所有工作者節點,因此存在零個工作者節點。 然後,您新增了一或多個工作者節點。 當您執行下列指令時,數個 Kubernetes 元件的 Pod 會卡在 ContainerCreating 狀態,而 calico-node Pod 則卡在 CrashLoopBackOff 狀態。
oc -n calico-system get pods
當您刪除叢集裡的所有工作者節點時,沒有工作者節點可供 calico-kube-controllers Pod 執行。 Calico 控制器 pod 的資料無法更新,無法移除已刪除 Worker 節點的資料。 當 Calico 控制器 pod 重新開始在新的 Worker 節點上執行時,它的資料不會針對新的 Worker 節點更新,也不會啟動 calico-node pod。
刪除現有的 calico-node 工作者節點項目,以便可以建立新的 Pod。
開始之前: 安裝 Calico CLI。
-
執行
ibmcloud oc cluster config指令,並複製並貼上輸出,以設定KUBECONFIG環境變數。 請在--admin指令包含--network及ibmcloud oc cluster config選項。 「--admin」選項會下載用於存取您的基礎架構組合,並在您的工作節點上執行 Calico 指令所需的金鑰。--network選項會下載 Calico 配置檔,以便執行所有 Calico 指令。ibmcloud oc cluster config --cluster CLUSTER_NAME_OR_ID --admin --network -
對於停留在
CrashLoopBackOff狀態的calico-nodePod,請記下NODEIP 位址。oc -n calico-system get pods -o wide在此範例輸出中,
calico-nodePod 無法在工作者節點10.176.48.106上啟動。NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ... calico-kube-controllers-656c5785dd-kc9x2 1/1 Running 0 25h 10.176.48.107 10.176.48.107 <none> <none> calico-node-mkqbx 0/1 CrashLoopBackOff 1851 25h 10.176.48.106 10.176.48.106 <none> <none> coredns-7b56dd58f7-7gtzr 0/1 ContainerCreating 0 25h 172.30.99.82 10.176.48.106 <none> <none> -
取得
calico-node工作者節點項目的 ID。 僅 複製您在前一個步驟中擷取的工作者節點 IP 位址的 ID。calicoctl get nodes -o wide -
使用 ID 來刪除工作者節點項目。 刪除工作者節點項目之後,Calico 控制器會重新排定新工作者節點上的
calico-nodePod。calicoctl delete node <node_ID> -
驗證 Kubernetes 元件 Pod (包括
calico-nodePod) 現在正在執行中。 可能需要幾分鐘才能排定calico-nodePod,以及建立新的元件 Pod。oc -n calico-system get pods
若要防止未來發生此錯誤,請永遠不要刪除叢集裡的所有工作者節點。 一律在叢集裡至少執行一個工作者節點,如果您使用 Ingress 或路徑來公開應用程式,則每個區域至少執行兩個工作者節點。