為什麼我的 OpenShift Data Foundation 儲存叢集的狀態會卡在「Failed to reconcile」?

虛擬私有雲 傳統基礎設施

當您建立 OpenShift Data Foundation 儲存叢集並執行 oc describe storagecluster <storage-cluster-name> 時,會看到一則錯誤訊息,指出 PVC 名稱超過 Kubernetes 的字元限制。

裝置集是由 OSD( Object Storage 守護程式)所組成的群組,OpenShift Data Foundation 會利用這些裝置集將資料分佈至您的叢集各處。 當您建立儲存叢集時,OpenShift Data Foundation 會自動為這些裝置集建立 PVC。

當您執行 describe 指令時,會看到類似以下範例的錯誤訊息。

ceph-cluster-controller: failed to reconcile. failed to reconcile cluster "ocs-storagecluster-cephcluster": failed to configure local ceph cluster: failed to create cluster: failed to start ceph osds: 3 failures encountered while running osds in namespace openshift-storage: failed to create "provision" job for node "ocs-deviceset-ibmc-vpc-block-metro-retain-10iops-tier-0-datnv6k". Job.batch "rook-ceph-osd-prepare-aaa000aaa111a1a0e10ba1a11aa1a119" is invalid: [spec.template.spec.volumes[8].name: Invalid value: "ocs-deviceset-ibmc-vpc-block-metro-retain-10iops-tier-0-aaaaa1b-bridge": must be no more than 63 characters

Kubernetes PVC 名稱的字元數必須少於 63 個。 如果您擁有一個多區域 VPC 叢集,並使用 retain 儲存類別(例如 ibmc-vpc-block-metro-retain-10iops-tier )來建立 OpenShift Data Foundation 儲存叢集,則對應的裝置集 PVC 所分配的名稱將超過 63 個字元的限制。

建立一個名稱較短的自訂儲存類別,以確保生成的 PVC 名稱不超過 Kubernetes 的字元限制。

  1. 取得您要在 ODF 儲存體叢集中使用之儲存類別的 YAML 配置,並將它儲存在本端機器上的檔案中。

    oc get sc ibmc-vpc-block-metro-retain-10iops-tier -o yaml
    
  2. 編輯儲存類別的名稱。 請確保您的儲存類別名稱長度不超過 30 個字元,以便讓「OpenShift Data Foundation」儲存叢集裝置的設定 ID 能符合 63 個字元 Kubernetes 的限制。 在叢集裡建立儲存空間類別。

    oc create -f <custom-storage-class.yaml>
    
  3. 清理您的 OpenShift Data Foundation 部署

  4. 建立 OpenShift 資料基礎架構部署 該程式會使用您所建立的儲存類別。