OpenShift:叢集部署程序失敗,因為靜態 Pod 狀態不正常。
摘要: OpenShift 容器平台問題導致叢集部署失敗,靜態 Pod 狀態變更為已完成。
症狀
案例 1:叢集部署組態程序失敗,並顯示錯誤「無法執行步驟等待 OCP 控制平面就緒」
案例 2:叢集部署組態程序失敗,錯誤訊息「無法執行步驟 Config OCP Registry」
透過 SSH 登入主要節點 (預設登入資料為 root/Passw0rd!),執行以下命令以檢查叢集版本、clusteroperator 和靜態 pod 狀態。
1.執行命令:kubectl --kubeconfig="/usr/share/mcp_ocp/pv/mcp-installer-ocp/auth/kubeconfig" get clusterversion
命令傳回「kube-scheduler is degraded」,例如:
| 名稱版本 可用 進行開始於狀態
版本 False 5h4m 協調時發生錯誤 4.13.12: 叢集操作員 kube-scheduler 降級 |
或者它返回「kube-controller-manager is degraded」,例如:
| 名稱版本 可用 正在進行「開始於狀態
」版本 False 5h4m 協調 4.13.12 時發生錯誤:叢集操作員 kube-controller-manager 降級 |
2.執行命令:
kubectl --kubeconfig="/usr/share/mcp_ocp/pv/mcp-installer-ocp/auth/kubeconfig" get co
將 kube-controller-manager 降級例如,命令顯示一個 kube-controller-manager 降級,並顯示訊息「GuardControllerDegraded:節點上缺少操作數”
|
可用名稱版本 進度 降級至今訊息 ...... kube-controller-manager 4.13.12 True True True 4d7h GuardControllerDegraded:[節點 h01-01-compute-02.p82.local 上缺少操作數,節點 h01-01-compute-03.p82.local 上缺少操作數]... ...... 機器組態 4.13.12 True False True 4D7h 無法重新同步 4.13.12,因為: syncRequiredMachineConfigPools 期間發生錯誤:[等待狀況逾時,錯誤集區主機尚未就緒,正在重試。狀態:(池已降級:True 總計:3、就緒 1、已更新:1、無法使用:2)] |
3.執行命令:
kubectl --kubeconfig="/usr/share/mcp_ocp/pv/mcp-installer-ocp/auth/kubeconfig" get pods -A | grep kube-controller-manager
以 kube-controller-manager 降級為例,命令顯示一個 kube-controller-manager 為 0/1
|
名稱就緒狀態重新起始期限 安裝程式-4-H01-01-compute-03.p82.local 0/1 已完成 0 4d7h 安裝程式-4-H01-01-compute-04.p82.local 0/1 已完成 0 4d7h 安裝程式-5-H01-01-compute-03.p82.local 0/1 已完成 0 4d7h 安裝程式-5-H01-01-compute-04.p82.local 0/1 已完成 0 4d7h 安裝程式-6-H01-01-compute-03.p82.local 0/1 已完成 0 4d7h kube-controller-manager-guard-h01-01-compute-03.p82.local 0/1 執行 0 4d7h kube-controller-manager-guard-h01-01-compute-04.p82.local 1/1 執行 0 4d7h kube-controller-manager-h01-01-compute-04.p82.local 4/4 執行 0 4d7h |
原因
根本原因是 Kubernetes 無法刪除某些 Pod,並導致某些服務運行到不正常狀態。
解析度
此問題將於未來的 OCP 版本中修正。
針對受影響的 OCP 版本,請遵循以下步驟解決問題:
SSH 登入已識別的節點,在上述範例中,已識別的節點名稱為「c4-esx02.rackj03.local」。
1.儲存與您在叢集部署精靈網頁上產生的 ssh 公開金鑰對應的私密金鑰。
執行命令: ssh-keygen -t ecdsa -b 521
- 輸入要保存金鑰的檔名或使用預設值。
- 輸入密碼片語或使用預設值。
您的公開金鑰已儲存在 /root/.ssh/id_ecdsa.pub 中
3.執行命令: sudo systemctl restart kubelet
4.從精靈網頁重試叢集部署程序