StatefulSet CSI 遷移工具可讓您將 StatefulSet 從樹狀結構內 vSphere 磁碟區外掛程式,遷移至 Google Distributed Cloud 中的 vSphere CSI 驅動程式。這項工具會遷移 PersistentVolume,不會造成應用程式停機或資料遺失,因此工作負載可以使用完整的 CSI 功能,例如磁碟區擴充和磁碟區快照。
這項工具僅適用於完全支援的 Google Distributed Cloud 版本。
總覽
Google Distributed Cloud 透過 VMware vSphere 儲存空間、Kubernetes 樹狀結構內磁碟區外掛程式 (或「驅動程式」) 和 Container Storage Interface (CSI) 驅動程式,與外部區塊或檔案儲存系統整合。
1.15 版預設啟用 Kubernetes CSI 遷移功能,因此由樹狀結構內 vSphere 磁碟區外掛程式支援的 PersistentVolume,在僅限 CSI 的環境中仍可正常運作。CSI 遷移功能會將樹狀結構內外掛程式作業呼叫重新導向至 CSI 驅動程式。由於 PersistentVolume 規格不可變更,因此仍由樹狀結構內外掛程式提供支援。可用的功能組合與樹狀結構內磁碟區外掛程式相同。
這類磁碟區無法使用磁碟區擴充和磁碟區快照等完整的 CSI 功能。如要使用這些功能,必須重新建立由 vSphere CSI 驅動程式支援的 PersistentVolume,將有狀態工作負載完全遷移至 CSI。您可以使用 CSI 遷移工具,將有狀態工作負載遷移至 CSI,並使用完整的 CSI 功能。
這項工具可讓您將 StatefulSet 的 PersistentVolume 和 PersistentVolumeClaim 逐步遷移至 CSI,且不會造成應用程式停機。這項工具會在本機目錄中備份 Kubernetes 資源,並在遷移前將 ReclaimPolicy 設為 Retain。因此不會遺失資料。
限制
自動化工具僅適用於完全支援的 Google Distributed Cloud 版本。
這項功能僅適用於 StatefulSet。您可以使用這項工具執行預檢,在正式使用工具前先進行幾項安全檢查。
./statefulset-csi-migration-tool preflight \
--kubeconfig ADMIN_KUBECONFIG \
--cluster-name USER_CLUSTER_NAME \
--sts-name STS_NAME \
--sts-namespace STS_NAMESPACE \
--intree-storageclass INTREE_STORAGECLASS \
--csi-storageclass CSI_STORAGECLASS
更改下列內容:
ADMIN_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。USER_CLUSTER_NAME:如果 StatefulSet 在使用者叢集上執行,請提供使用者叢集名稱。如果工作負載是在管理員叢集上執行,請略過這個旗標。STS_NAME::StatefulSet 的名稱。STS_NAMESPACE:StatefulSet 的命名空間。INTREE_STORAGECLASS:支援 StatefulSet PersistentVolume 的樹狀結構內 StorageClass 名稱。CSI_STORAGECLASS:遷移後支援 StatefulSet PersistentVolume 的 CSI StorageClass 名稱。
下載
請前往 gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool 下載工具。請注意,這項工具為預先發布版。
程序
本節說明如何將 StatefulSet 從 vSphere 樹狀結構內 vCP 內部佈建工具 (kubernetes.io/vsphere-volume) 遷移至 vSphere CSI 佈建工具 (csi.vsphere.vmware.com)。
./statefulset-csi-migration-tool rolling-migration all \
--kubeconfig ADMIN_KUBECONFIG \
--cluster-name USER_CLUSTER_NAME \
--sts-name STS_NAME \
--sts-namespace STS_NAMESPACE \
--intree-storageclass INTREE_STORAGECLASS \
--csi-storageclass CSI_STORAGECLASS \
--working-directory WORKING_DIRECTORY
更改下列內容:
ADMIN_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。
USER_CLUSTER_NAME:如果 StatefulSet 在使用者叢集上執行,請提供使用者叢集名稱。如果工作負載是在管理員叢集上執行,請略過這個旗標。
STS_NAME:StatefulSet 的名稱。
STS_NAMESPACE:StatefulSet 的命名空間。
INTREE_STORAGECLASS:支援 StatefulSet PersistentVolume 的樹狀結構內 StorageClass 名稱。
CSI_STORAGECLASS:遷移後支援 StatefulSet PersistentVolume 的 CSI StorageClass 名稱。
WORKING_DIRECTORY:本機目錄,用於儲存 StatefulSet 及其 Pod、PersistentVolumeClaim 和 PersistentVolume 的 Kubernetes 資源規格。每個 StatefulSet 的目錄名稱不得重複。這個目錄應為空白或不存在。 建議您不要建立這個目錄,讓工具為您建立。
這個指令會執行下列工作:
在目前使用的目錄中,備份 StatefulSet 及其依附元件,例如 PersistentVolume、PersistentVolumeClaim 和 Pod 副本規格。
刪除採用孤立刪除政策的 StatefulSet。這個步驟只會刪除 StatefulSet,不會刪除其依附元件,例如 Pod 副本、PersistentVolume 和 PersistentVolumeClaim。
將每個 Pod 遷移至 CSI 驅動程式 (類似選項 1),並執行下列操作:
a. 將 PersistentVolume 的 ReclaimPolicy 欄位設為 Retain。
b. 刪除 Pod、PersistentVolume 和 PersistentVolumeClaim。
c. 將現有的 VMDK 轉換為 FCD。
d. 再次建立 PersistentVolume、PersistentVolumeClaim 和 Pod。
重新建立 StatefulSet,但其規格中的 PVCTemplate 欄位會指向 CSI StorageClass。StatefulSet 控制器應再次對應至孤立副本。