本指南說明如何在 GKE 中,使用 Parallelstore CSI 驅動程式和動態佈建,建立新的 Kubernetes 磁碟區。您可以視需要建立由全代管 Parallelstore 執行個體支援的儲存空間,並以磁碟區的形式存取這些儲存空間,用於有狀態的工作負載。
事前準備
開始之前,請確認您已完成下列工作:
- 啟用 Parallelstore API 和 Google Kubernetes Engine API。 啟用 API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
- 如需限制和需求,請參閱 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 掛接- 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 模型。