透過以儲存空間政策為基礎的管理功能遷移儲存空間

本文說明如何使用儲存空間政策管理 (SPBM),將磁碟從一個 vSphere Datastore 遷移至另一個 vSphere Datastore。

1.29:正式版
1.28:搶先版
1.16:不適用

您可以遷移下列類型的儲存空間:

  • Google Distributed Cloud 管理的系統元件儲存空間,包括:

    • 管理員叢集和 Controlplane V2 使用者叢集的控制層節點所用的資料磁碟 (VMDK 檔案)

    • 所有管理員叢集和使用者叢集節點使用的開機磁碟 (VMDK 檔案)

    • 管理員叢集中的 PV/PVC 代表的 vSphere Volumes,由 kubeception 使用者叢集的控制層元件使用

  • 儲存空間,適用於您在使用者叢集工作站節點上部署的工作負載,並透過樹內 vSphere 磁碟區外掛程式或 vSphere CSI 驅動程式佈建 PV/PVC

管理員叢集必要條件

  1. 管理員叢集必須具備高可用性控制層。如果管理員叢集具有非高可用性控制層,請先遷移至高可用性,再繼續操作。

  2. 確認管理員叢集是否具備 HA 控制層:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes
    

    ADMIN_CLUSTER_KUBECONFIG 替換為管理員叢集 kubeconfig 檔案的路徑。

    在輸出內容中,確認您看到三個控制平面節點。例如:

    admin-cp-1   Ready    control-plane,master ...
    admin-cp-2   Ready    control-plane,master ...
    admin-cp-3   Ready    control-plane,master ...
    

所有叢集 (管理員和使用者) 的必要條件

  1. 叢集必須停用節點自動修復功能。如果已啟用節點自動修復功能,請停用節點自動修復功能

  2. 叢集必須使用以儲存空間政策為基礎的管理 (SPBM)。如果叢集未使用 SPBM,請先建立儲存空間政策,再繼續操作。

  3. 確認叢集使用 SPBM:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get onpremadmincluster --namespace kube-system \
      -ojson | jq '{datastore: .items[0].spec.vCenter.datastore, storagePolicyName: .items[0].spec.vCenter.storagePolicyName}'
    

    (僅限使用者叢集) 確認節點集區使用 SPBM:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremnodepools --namespace USER_CLUSTER_NAME-gke-onprem-mgmt \
      -ojson | jq '.items[] | {name: .metadata.name, datastore: .spec.vsphere.datastore, storagePolicyName: .spec.vsphere.storagePolicyName}'
    

    更改下列內容:

    • CLUSTER_KUBECONFIG:叢集 kubeconfig 檔案的路徑 (管理員或使用者)。

    • ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑

    • USER_CLUSTER_NAME:使用者叢集名稱

    在輸出內容中,如果 datastore 欄位空白,且 storagePolicyName 欄位不為空白,則表示叢集使用 SPBM。

  4. 叢集不得使用 vSphere 樹內磁碟區外掛程式。

    如果叢集是從舊版 Google Distributed Cloud 升級而來,可能會有由 vSphere 樹內磁碟區外掛程式佈建的 PV/PVC。這類磁碟區可能由 kubeception 使用者叢集的控制層節點使用,也可能由您在工作站節點上建立的工作負載使用。

    列出所有 PVC 及其 StorageClass:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get pvc --all-namespaces  \
       -ojson | jq '.items[] | {namespace: .metadata.namespace, name: .metadata.name, storageClassName: .spec.storageClassName}'
    

    列出所有 StorageClass,並查看使用的供應商:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass
    

    在輸出內容中,如果 PROVISIONER 欄為 kubernetes.io/vsphere-volume,則使用這個 StorageClass 建立的 PVC 會使用 vSphere 樹狀結構內磁碟區外掛程式。對於使用這些 PV/PVC 的 StatefulSet,請將其遷移至 vSphere CSI 驅動程式

執行儲存空間遷移作業

Google Distributed Cloud 支援兩類儲存空間遷移:

  • VM 的 Storage vMotion,可移動 VM 儲存空間,包括節點上執行的 Pod 所用的附加 vSphere CNS 磁碟區,以及附加至節點的這些 VM CNS 磁碟區所用的 VMDK

  • CNS 磁碟區重新定位:將指定的 vSphere CNS 磁碟區移至相容的資料存放區,而不對 VM 執行儲存空間 vMotion

對 VM 執行儲存空間 vMotion

遷移作業包含在 vSphere 環境中執行的步驟,以及在管理員工作站上執行的指令:

  1. 在 vSphere 環境中,將目標資料存放區新增至儲存空間政策。

  2. 在 vSphere 環境中,將使用舊資料儲存庫的叢集 VM 遷移至新資料儲存庫。如需操作說明,請參閱「將虛擬機器遷移至新的運算資源和儲存空間」。

  3. 在管理工作站上,確認 VM 已成功遷移至新的資料存放區。

    取得叢集中的 Machine 物件:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get machines --output yaml

    在輸出內容的 status.disks 下方,您可以看到附加至 VM 的磁碟。例如:

    status:
    addresses:
    – address: 172.16.20.2
      type: ExternalIP
    disks:
    – bootdisk: true
      datastore: pf-ds06
      filepath: me-xvz2ccv28bf9wdbx-2/me-xvz2ccv28bf9wdbx-2.vmdk
      uuid: 6000C29d-8edb-e742-babc-9c124013ba54
    – datastore: pf-ds06
      filepath: anthos/gke-admin-nc4rk/me/ci-bluecwang-head-2-data.vmdk
      uuid: 6000C29e-cb12-8ffd-1aed-27f0438bb9d9
    

    確認叢集中所有機器的所有磁碟都已遷移至目標資料儲存庫。

  4. 在管理員工作站上執行 gkectl diagnose,確認叢集健康狀態良好。

呼叫 CNS Relocation API,移動 CNS 磁碟區

如果只想遷移 vSphere CSI 驅動程式佈建的 CNS 磁碟區,請按照「在 vSphere 中遷移容器磁碟區」一文中的操作說明進行。如果舊資料存放區中只有 CNS 磁碟區,這項作業可能會比較簡單。

視需要更新儲存空間政策

在 vSphere 環境中,更新儲存空間政策,排除舊的資料存放區。否則,新磁碟區和重新建立的 VM 可能會指派給舊的資料存放區。