為什麼OpenShift顯示叢集版本不是最新的?

虛擬私有雲 經典基礎架構 Satellite

您會在一段很長的時間內看到下列一或多個項目。

  • 「OpenShift Web 主控台」會顯示一個橫幅,指出叢集正在更新,且「叢集設定」頁面會顯示現行版本的狀態為 Partial。

  • 當您執行 ibmcloud oc cluster get --cluster <cluster_name> 指令時,您會看到 warning 狀態,以及顯示群集操作員未達最新版本的狀態。

    State:                          warning
    Status:                         Some Cluster Operators are down-level and need to be updated, see 'https://ibm.biz/rhos_clusterversion_ts'
    
  • 當您執行 oc get clusterversion 指令時,會看到舊版。

    NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
    version   4.11.27   True        True          27h     Unable to apply 4.12.3: an unknown error has occurred: MultipleErrors
    
  • 您看到群集主站升級已取消,其狀態類似如下。

    Version update canceled. CAE012: Cannot complete cluster master operations because the current OpenShift clusterversion rollout is not complete. For more information, see the troubleshooting docs: 'https://ibm.biz/rhos_clusterversion_ts'
    

未完成對新修補程式版本的叢集主節點更新或對新次要版本的升級。

在更新「叢集版本操作器」之後,叢集主節點更新很快就會完成。 群集版本操作員管理各種群集操作員的更新,在群集主控更新完成後繼續進行。

$ oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.13.11   True        False         33h     Cluster version is 4.13.11

$ oc get co
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
console                                    4.13.11   True        False         False      2d3h    
csi-snapshot-controller                    4.13.11   True        False         False      2d4h    
dns                                        4.13.11   True        False         False      2d4h    
image-registry                             4.13.11   True        False         False      2d4h    
ingress                                    4.13.11   True        False         False      2d4h    
insights                                   4.13.11   True        False         False      2d4h    
kube-apiserver                             4.13.11   True        False         False      2d4h    
kube-controller-manager                    4.13.11   True        False         False      2d4h    
kube-scheduler                             4.13.11   True        False         False      2d4h    
kube-storage-version-migrator              4.13.11   True        False         False      2d4h    
marketplace                                4.13.11   True        False         False      2d4h    
monitoring                                 4.13.11   True        False         False      2d4h    
network                                    4.13.11   True        False         False      2d4h    
node-tuning                                4.13.11   True        False         False      32h     
openshift-apiserver                        4.13.11   True        False         False      2d4h    
openshift-controller-manager               4.13.11   True        False         False      2d4h    
openshift-samples                          4.13.11   True        False         False      33h     
operator-lifecycle-manager                 4.13.11   True        False         False      2d4h    
operator-lifecycle-manager-catalog         4.13.11   True        False         False      2d4h    
operator-lifecycle-manager-packageserver   4.13.11   True        False         False      2d4h    
service-ca                                 4.13.11   True        False         False      2d4h    
storage                                    4.13.11   True        False         False      2d4h    

如果叢集剛剛升級,則叢集操作器可能需要幾分鐘才能升級。 正常會看到類似下列的狀態,且已完成的步驟數會隨著時間而增加。

Working towards 4.13.11: 511 of 616 done (82% complete), waiting on network

如果叢集繼續長時間顯示局部更新,則叢集中發生問題,導致叢集操作員無法更新至現行版本。 這可能是由許多事物所造成,例如下列範例。

  • 不健全的叢集元件,例如工作者節點,會封鎖轉出操作器更新項目。
  • 叢集運算子配置的變更不正確。
  • 叢集配置的變更衝突,例如 RBAC 變更會影響 OpenShift 元件。

首先,請取得叢集操作器更新進度及問題的其他詳細資訊。

  1. 執行下列指令可取得更多資訊。

    oc get clusterversion
    
    oc get clusteroperators
    
    oc describe clusteroperator NAME
    
  2. 檢閱指令輸出中的 MESSAGE 直欄,以識別目前正在封鎖進度的叢集運算子,並提供問題的指示。 OpenShift 更新運算子的方式可能會導致非預期的相依關係; 例如,部分叢集運算子更新可能正在等待其他運算子完成它們現在正在執行的步驟。

  3. 使用 oc get nodes 指令檢查工作者節點狀態。 有時節點不是 Ready,這可能是因為節點上缺少資源,或 kube-proxy 或 kubelet 有問題。 這可能會在更新期間造成問題。

    • 如果您最近變更了其中一個不完整運算子的配置,請執行 oc describe clusteroperator NAME 來說明該運算子以取得更多詳細資料。例如,oc describe cluster-operator image-registry 可能顯示有助於識別問題的錯誤。

    • 繼續檢查操作器 Pod 的狀態及日誌,以進一步除錯問題。 有時操作員欠佳,但這並不表示更新失敗或無法運作。

  4. 如果您無法識別或解決問題,或問題持續存在,請聯絡支援中心。 開啟 支援案例。 在案例詳細資料中,請務必包括任何相關日誌檔、錯誤訊息或指令輸出。