從 Google Kubernetes Engine 建立及連線至 Parallelstore 執行個體

Parallelstore 僅供受邀者使用。如要在 Google Cloud 專案中要求存取 Parallelstore,請與業務代表聯絡。

本指南說明如何在 GKE 中,使用 Parallelstore CSI 驅動程式和動態佈建,建立新的 Kubernetes 磁碟區。您可以視需要建立由全代管 Parallelstore 執行個體支援的儲存空間,並以磁碟區的形式存取這些儲存空間,用於有狀態的工作負載。

事前準備

開始之前,請確認你已完成下列工作:

  • 啟用 Parallelstore API 和 Google Kubernetes Engine API。
  • 啟用 API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。

使用 Parallelstore CSI 驅動程式建立新磁碟區

下列各節說明在 GKE 中,透過 Parallelstore CSI 驅動程式建立 Kubernetes 磁碟區的典型程序:

  1. (選用) 建立 StorageClass
  2. 使用 PersistentVolumeClaim 存取磁碟區
  3. (選用) 設定 Sidecar 容器的資源
  4. 建立會耗用磁碟區的工作負載

(選用) 建立儲存空間類別

啟用 Parallelstore CSI 驅動程式後,GKE 會自動建立名為 parallelstore-rwx 的 StorageClass,用於佈建 Parallelstore 執行個體。這個 StorageClass 會指示 CSI 驅動程式在與 GKE 叢集相同的區域中佈建 Parallelstore 執行個體,確保 I/O 效能達到最佳狀態。

(選用) 您可以建立具有特定拓撲的自訂 StorageClass。如要宣告,請按照下列步驟進行:

  1. 將下列 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: poddfuse 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 參考說明文件

  2. 執行下列指令來建立 StorageClass:

    kubectl create -f parallelstore-class.yaml
    

使用 PersistentVolumeClaim 存取磁碟區

您可以建立參照 Parallelstore CSI 驅動程式 StorageClass 的 PersistentVolumeClaim 資源。

以下資訊清單檔案範例說明如何以 ReadWriteMany 存取模式 建立 PersistentVolumeClaim,並參照您先前建立的 StorageClass。

  1. 將下列資訊清單儲存到名為 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 為單位調整)。

  2. 執行下列指令來建立 PersistentVolumeClaim:

      kubectl create -f parallelstore-pvc.yaml
    

(選用) 設定補充容器的資源

注意:只有在使用 Pod 掛接位置時,才能為 Sidecar 容器設定資源,也就是 PersistentVolume 中的 mountLocality 磁碟區屬性未設定或設為 pod

建立使用 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 資源。

  1. 將下列資訊清單儲存至名為 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
    
  2. 執行下列指令,將資訊清單套用至叢集。

      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 說明文件中的「疑難排解」頁面。

後續步驟