Openshift:OCP 升級預先檢查失敗,發生 dryrun drain node 錯誤
Summary: OCP 升級預先檢查失敗,因為某些虛擬機器無法即時遷移或某些 Pod 無法逐出。
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
在 LCM 預先檢查期間,可能會發生試執行排出節點故障,導致 LCM 程序停止。
錯誤訊息可能包括但不限於下列情況:
錯誤訊息可能包括但不限於下列情況:
- 案例 1:「VMI XXXXXX 已設定驅逐策略,但無法即時遷移。」
- 案例 2:“不能驅逐豆莢,因為它會違反豆莢的中斷預算。”
- 案例 3:找不到 pod:xxxxxxxxxxxx 的「pods xxx」
Cause
案例 1 的根本原因:虛擬機器已設定唯讀寫入一次 (RWO) 儲存磁碟區,無法在錯誤報告節點上即時遷移。
案例 2 根本原因:容器「PodDistruptionBudget」設定配置為「minAvailable:1", 這會封鎖 Pod 逐出程序。
塞納里奧 3 根本原因:OpenShift 計劃作業將啟動 Pod,並在作業完成後終止該 Pod。因此,有可能在預檢查試運行排水節點步驟中找不到 pod。
案例 2 根本原因:容器「PodDistruptionBudget」設定配置為「minAvailable:1", 這會封鎖 Pod 逐出程序。
塞納里奧 3 根本原因:OpenShift 計劃作業將啟動 Pod,並在作業完成後終止該 Pod。因此,有可能在預檢查試運行排水節點步驟中找不到 pod。
Resolution
案例 1 解決方案
1.請先停止 VM 實例,再更改其 PV 設置。
2.按一下 VM 並切換至 YAML 標籤。
3.將存取模式從「ReadWriteOnce」變更為「ReadWriteMany」
4.如果 PV 無法設定為 ReadWriteMany (VM 無法使用 ReadWriteMany 啟動),則將 evictionStrategy 從「LiveMigrate」設定為「無」。
注意:請執行適用於您環境的步驟 3 或 4,不需要同時執行這兩個步驟。
5.按一下儲存並重新啟動虛擬機器。
6.重試 LCM 預先檢查,並繼續升級。
案例 2 解決方案
執行下列適用於您的環境的程序之一。
程序 1:手動刪除無法逐出的容器。
- 執行以下命令刪除無法逐出的 pod/pod,並讓它們在不同的節點中重新建立。
$ oc delete pod <pod_name> -n <pod_namespace>
- 重試 LCM 預先檢查,並繼續升級。
程序 2:如果無法手動刪除容器,請修補其「PodDisruptionBudget」配置為「minAvailable:1"
- 執行以下命令以檢查 pod「PodDisruptionBudget」值
例如:
$ oc get pdb <pdb_name> -n <pod_namespace> NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE <pdb_name> 1 N/A 0 18h
- 如果命令輸出顯示「MIN AVAILABLE」為「1」,請透過以下命令將 PodDisruptionBudget minAvailable 值修補為「0」。
$ oc patch pdb <pdb_name> -n <pod_namespace> --type=merge -p '{"spec":{"minAvailable":0}}'
- 重試 LCM 預先檢查,並繼續升級。
- 等待升級完成且 MCO 可用,執行以下命令以檢查一切正常。
$ watch -n10 "oc get clusterversion; echo; oc get mcp; echo; oc get nodes -o wide; echo; oc get co"
例如:
- OCP 升級完成後,請將 PodDisruptionBudget minAvailable 值還原為「1」
$ oc patch pdb <pdb_name> -n <pod_namespace> --type=merge -p '{"spec":{"minAvailable":1}}'
程序 3:如果修補 pod 命中錯誤「PodDisruptionBudget.policy “<pdb_name>”無效:spec:禁止:禁止更新 poddisruption 預算規格“,請按照以下步驟進行解決。
- 備份設定為「minAvailable:1"
$ oc get pdb <pdb_name> -n <pod_namespace> -o yaml > <pdb_name>_backup.yaml
- 移除配置「minAvailable:1"
$ oc delete pdb <pdb_name> -n <pod_namespace>
- 重試 LCM 預先檢查,並繼續升級。
- 等待升級完成且 MCO 可用,執行以下命令以檢查一切正常。
$ watch -n10 "oc get clusterversion; echo; oc get mcp; echo; oc get nodes -o wide; echo; oc get co"
例如:
- OCP 升級完成後,請還原備份的 yaml 檔案。
$ oc create -f <pdb_name>_backup.yaml -n <pod_namespace>
案例 3 解決方案
只要重試 LCM 預先檢查即可,這次應該會過去。
Additional Information
請查看以下 OpenShift 文件,以取得有關虛擬機器磁碟儲存磁碟區的詳細資訊。
Affected Products
APEX Cloud Platform for Red Hat OpenShiftArticle Properties
Article Number: 000216907
Article Type: Solution
Last Modified: 18 Feb 2026
Version: 3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.