本指南說明如何在 GKE 中,使用 Parallelstore CSI 驅動程式和動態佈建,建立新的 Kubernetes 磁碟區。您可以視需要建立由全代管 Parallelstore 執行個體支援的儲存空間,並以磁碟區的形式存取這些儲存空間,用於有狀態的工作負載。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Parallelstore API 和 Google Kubernetes Engine API。 啟用 API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
- 如需限制和需求,請參閱 CSI 驅動程式總覽。
- 設定虛擬私有雲網路。
- 如要使用 GKE Standard 叢集,請務必啟用 CSI 驅動程式。
使用 Parallelstore CSI 驅動程式建立新磁碟區
下列各節說明在 GKE 中,透過 Parallelstore CSI 驅動程式建立 Kubernetes 磁碟區的典型程序:
(選用) 建立儲存空間類別
啟用 Parallelstore CSI 驅動程式後,GKE 會自動建立名為 parallelstore-rwx
的 StorageClass,用於佈建 Parallelstore 執行個體。這個 StorageClass 會指示 CSI 驅動程式在與 GKE 叢集相同的區域中佈建 Parallelstore 執行個體,確保 I/O 效能達到最佳狀態。
(選用) 您可以建立具有特定拓撲的自訂 StorageClass。如要宣告,請按照下列步驟進行:
將下列 StorageClass 資訊清單儲存至名為
parallelstore-class.yaml
的檔案:Pod mount
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: LOCATION
更改下列內容:
- LOCATION:包含叢集的 Compute Engine 可用區。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
如需 StorageClass 支援的完整欄位清單,請參閱 Parallelstore CSI 參考說明文件。
節點支架
您可以使用 Parallelstore CSI 驅動程式,直接在節點上掛接磁碟區。節點掛接功能支援 GKE 叢集 1.32.3 以上版本。
節點層級的掛接可讓節點上的所有 Pod 共用同一個掛接點。共用相同掛接點可提升擴充性,因為掛接點數量會隨著節點數量增加,而非 Pod 數量 (如側車模式)。
因此,您可以在共用同一個 Parallelstore 執行個體時,執行更多 Pod。
注意:指定 mountLocality: node 參數即可啟用這項功能。Pod 掛接位置的預設值為 mountLocality: pod。 dfuse CPU、記憶體要求和限制標記僅適用於 mountLocality: node 設定。
如果設定要求或限制的值,但未設定另一個值,系統會將兩者都設為相同的值。
您可以使用 `'0'` 做為值,取消設定任何資源限制。舉例來說,dfuseMemoryLimit: '0' 會移除 dfuse 程序的記憶體限制。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: LOCATION parameters: mountLocality: node dfuseCPURequest: DFUSE_CPU_REQUEST dfuseMemoryRequest: DFUSE_MEMORY_REQUEST dfuseCPULimit: DFUSE_CPU_LIMIT dfuseMemoryLimit: DFUSE_MEMORY_LIMIT
更改下列內容:
- LOCATION:包含叢集的 Compute Engine 可用區。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
- DFUSE_CPU_REQUEST:dfuse 程序的 CPU 要求。預設值為
250m
。 - DFUSE_MEMORY_REQUEST:dfuse 程序的記憶體要求。預設值為
512Mi
。 - DFUSE_CPU_LIMIT:dfuse 程序的 CPU 限制。預設值為「未設定」。
- DFUSE_MEMORY_LIMIT:dfuse 程序的記憶體限制。預設值為
10Gi
。
如需 StorageClass 支援的完整欄位清單,請參閱 Parallelstore CSI 參考說明文件。
執行下列指令來建立 StorageClass:
kubectl create -f parallelstore-class.yaml
使用 PersistentVolumeClaim 存取磁碟區
您可以建立參照 Parallelstore CSI 驅動程式 StorageClass 的 PersistentVolumeClaim 資源。
以下資訊清單檔案範例說明如何以 ReadWriteMany
存取模式 建立 PersistentVolumeClaim,並參照您先前建立的 StorageClass。
將下列資訊清單儲存到名為
parallelstore-pvc.yaml
的檔案:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: STORAGE_SIZE storageClassName: parallelstore-class
將 STORAGE_SIZE 替換為儲存空間大小,例如
12000Gi
。值必須介於 12,000 GiB 至 100,000 GiB 之間 (以 4,000 GiB 為單位調整)。執行下列指令來建立 PersistentVolumeClaim:
kubectl create -f parallelstore-pvc.yaml
(選用) 設定補充容器的資源
建立使用 Parallelstore 支援磁碟區的工作負載 Pod 時,CSI 驅動程式會判斷磁碟區是否以 Parallelstore 執行個體為基礎。
如果驅動程式偵測到磁碟區是以 Parallelstore 為基礎,或是您指定 gke-parallelstore/volumes: "true"
註解,CSI 驅動程式就會自動將名為 gke-parallelstore-sidecar
的 Sidecar 容器插入 Pod。這個 Sidecar 容器會將 Parallelstore 執行個體掛接至工作負載。
根據預設,GKE 會使用下列資源要求設定 Sidecar 容器,且未設定資源上限:
- 250 mCPU
- 512 MiB 記憶體
- 10 MiB 臨時儲存空間
如要覆寫這些值,您可以選擇指定註解 gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request]
,如以下範例所示:
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-parallelstore/volumes: "true"
gke-parallelstore/cpu-request: 500m
gke-parallelstore/memory-request: 1Gi
gke-parallelstore/ephemeral-storage-request: 500Mi
gke-parallelstore/cpu-limit: 1000m
gke-parallelstore/memory-limit: 2Gi
gke-parallelstore/ephemeral-storage-limit: 1Gi
決定要分配多少資源時,請考量下列事項:
- 如果設定了其中一個要求或限制值,但未設定另一個,則這兩個值都會設為相同的值。
- 如果工作負載需要更高的輸送量,請為 Sidecar 容器分配更多 CPU。CPU 不足會導致 I/O 節流。
- 您可以使用
"0"
做為值,取消設定標準叢集的所有資源限制;例如,gke-parallelstore/memory-limit: "0"
會移除 Sidecar 容器的記憶體限制。如果您無法決定工作負載所需的資源量,並希望讓 Sidecar 消耗節點上的所有可用資源,這項功能就非常實用。gke-parallelstore-sidecar
建立會耗用磁碟區的工作負載
本節提供範例,說明如何建立會耗用您先前建立的 PersistentVolumeClaim 資源的 Pod。
多個 Pod 可以共用同一個 PersistentVolumeClaim 資源。
將下列資訊清單儲存至名為
my-pod.yaml
的檔案。apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: parallelstore-volume mountPath: /data volumes: - name: parallelstore-volume persistentVolumeClaim: claimName: parallelstore-pvc
執行下列指令,將資訊清單套用至叢集。
kubectl apply -f my-pod.yaml
Pod 會等到 PersistentVolumeClaim 佈建完成後,才會開始執行。這項作業可能需要幾分鐘的時間才能完成。
管理 Parallelstore CSI 驅動程式
本節說明如何視需要啟用及停用 Parallelstore CSI 驅動程式。
在新叢集上啟用 Parallelstore CSI 驅動程式
如要在建立新的 Standard 叢集時啟用 Parallelstore CSI 驅動程式,請使用 Google Cloud CLI 執行下列指令:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--network=NETWORK_NAME \
--addons=ParallelstoreCsiDriver \
--cluster-version=VERSION
更改下列內容:
- CLUSTER_NAME:叢集名稱。
- LOCATION:包含叢集的 Compute Engine 可用區。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
- NETWORK_NAME:您在「設定虛擬私有雲網路」中建立的虛擬私有雲網路名稱。
- VERSION:GKE 版本號碼。
如要使用這項功能,請務必指定支援的版本號碼,例如 GKE 1.29 以上版本。或者,您也可以使用
--release-channel
旗標並指定發布管道。
在現有叢集上啟用 Parallelstore CSI 驅動程式
如要在現有的 GKE Standard 叢集上啟用驅動程式,請使用 Google Cloud CLI 執行下列指令:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=ENABLED
更改下列內容:
- CLUSTER_NAME:叢集名稱。
- LOCATION:包含叢集的 Compute Engine 可用區。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
確認 GKE 叢集是在「設定虛擬私有雲網路」中設定的相同虛擬私有雲網路中執行。如要驗證 GKE 叢集的虛擬私有雲網路,請在Google Cloud 控制台中或透過 gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
指令檢查。
停用 Parallelstore CSI 驅動程式
您可以使用 Google Cloud CLI,在現有的 Autopilot 或標準叢集上停用 Parallelstore CSI 驅動程式。
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=DISABLED
更改下列內容:
- CLUSTER_NAME:叢集名稱。
- LOCATION:包含叢集的 Compute Engine 可用區。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
搭配 Parallelstore 磁碟區使用 fsGroup
Parallelstore CSI 驅動程式支援變更所掛接檔案系統根層級目錄的群組擁有權,以符合 Pod SecurityContext 中指定的使用者要求 fsGroup。這項功能僅適用於 GKE 叢集 1.29.5 以上版本,或 1.30.1 以上版本。
疑難排解
如需疑難排解指南,請參閱 Parallelstore 說明文件中的「疑難排解」頁面。
後續步驟
- 探索 Parallelstore CSI 參考說明文件。
- 瞭解如何使用 Parallelstore 攔截程式庫提升工作負載效能。
- 瞭解如何將資料從 Cloud Storage 轉移至 Parallelstore。
- 瞭解如何使用 GKE Volume Populator,自動將資料從 Cloud Storage 儲存空間來源儲存空間移轉至以 Parallelstore 執行個體為後端的目的地 PersistentVolumeClaim。
- 參加教學課程,瞭解如何在 GKE 上使用 Keras 訓練 TensorFlow 模型。