本文說明如何使用儲存空間政策管理 (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
管理員叢集必要條件
管理員叢集必須具備高可用性控制層。如果管理員叢集具有非高可用性控制層,請先遷移至高可用性,再繼續操作。
確認管理員叢集是否具備 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 ...
所有叢集 (管理員和使用者) 的必要條件
叢集必須停用節點自動修復功能。如果已啟用節點自動修復功能,請停用節點自動修復功能。
叢集必須使用以儲存空間政策為基礎的管理 (SPBM)。如果叢集未使用 SPBM,請先建立儲存空間政策,再繼續操作。
確認叢集使用 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。叢集不得使用 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 環境中執行的步驟,以及在管理員工作站上執行的指令:
在 vSphere 環境中,將目標資料存放區新增至儲存空間政策。
在 vSphere 環境中,將使用舊資料儲存庫的叢集 VM 遷移至新資料儲存庫。如需操作說明,請參閱「將虛擬機器遷移至新的運算資源和儲存空間」。
在管理工作站上,確認 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
確認叢集中所有機器的所有磁碟都已遷移至目標資料儲存庫。
在管理員工作站上執行
gkectl diagnose
,確認叢集健康狀態良好。
呼叫 CNS Relocation API,移動 CNS 磁碟區
如果只想遷移 vSphere CSI 驅動程式佈建的 CNS 磁碟區,請按照「在 vSphere 中遷移容器磁碟區」一文中的操作說明進行。如果舊資料存放區中只有 CNS 磁碟區,這項作業可能會比較簡單。
視需要更新儲存空間政策
在 vSphere 環境中,更新儲存空間政策,排除舊的資料存放區。否則,新磁碟區和重新建立的 VM 可能會指派給舊的資料存放區。