本指南說明如何透過 靜態佈建,使用 GKE Parallelstore CSI 驅動程式連線至現有的 Parallelstore 執行個體。您可透過這種方式,以可控且可預測的方式,將現有的全代管 Parallelstore 執行個體做為有狀態工作負載的磁碟區。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Parallelstore API 和 Google Kubernetes Engine API。 啟用 API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
- 如需限制和需求,請參閱 CSI 驅動程式總覽。
- 如果尚未建立 Parallelstore 執行個體,請先完成此步驟。
- 設定虛擬私有雲網路。
- 如要使用 GKE Standard 叢集,請務必啟用 CSI 驅動程式。
使用 Parallelstore CSI 驅動程式存取現有的 Parallelstore 執行個體
如果您已在與 GKE 叢集相同的網路中佈建 Parallelstore 執行個體,可以按照下列操作說明,靜態佈建參照該執行個體的 PersistentVolume。
以下各節說明使用 Parallelstore CSI 驅動程式存取現有 Parallelstore 執行個體的典型程序:
- 建立參照 Parallelstore 執行個體的 PersistentVolume。
- 使用 PersistentVolumeClaim 存取磁碟區。
- (選用) 設定 Sidecar 容器的資源。
- 建立會耗用磁碟區的工作負載。
建立 PersistentVolume
本節提供範例,說明如何建立參照現有 Parallelstore 執行個體的 PersistentVolume。
執行下列指令,找出 Parallelstore 執行個體。
gcloud beta parallelstore instances list \ --project=PROJECT_ID \ --location=LOCATION
更改下列內容:
- PROJECT_ID:專案 ID。 Google Cloud
- LOCATION:包含叢集的 Compute Engine 可用區。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
輸出內容應如下所示。請務必記下 Parallelstore 執行個體名稱和 IP 存取點,再繼續執行下一個步驟。
NAME capacity DESCRIPTION CREATE_TIME UPDATE_TIME STATE network RESERVED_IP_RANGE ACCESS_POINTS projects/my-project/locations/us-central1-a/instances/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563 12000 2024-03-06T19:18:26.036463730Z 2024-03-06T19:24:44.561441556Z ACTIVE 10.51.110.2,10.51.110.4,10.51.110.3
將下列資訊清單儲存到名為
parallelstore-pv.yaml
的檔案:Pod mount
apiVersion: v1 kind: PersistentVolume metadata: name: parallelstore-pv spec: storageClassName: "STORAGECLASS_NAME" capacity: storage: STORAGE_SIZE accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem csi: driver: parallelstore.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container" volumeAttributes: accessPoints: ACCESS_POINTS network: NETWORK_NAME claimRef: name: parallelstore-pvc namespace: default
更改下列內容:
- PROJECT_ID:專案 ID。 Google Cloud
- LOCATION:Parallelstore 執行個體的區域位置。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
- INSTANCE_NAME:Parallelstore 執行個體的名稱。有效
volumeHandle
值的範例如下:"my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
- ACCESS_POINTS:Parallelstore 執行個體的存取點,例如
10.51.110.2,10.51.110.4,10.51.110.3
。 - NETWORK_NAME:可存取 Parallelstore 執行個體的虛擬私有雲網路。
- STORAGECLASS_NAME:StorageClass 的名稱。這個值可以是空字串,但必須符合 PersistentVolumeClaim 中的規格。
- STORAGE_SIZE:儲存空間大小,例如
12000Gi
。
如需 PersistentVolume 物件支援的完整欄位清單,請參閱 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: v1 kind: PersistentVolume metadata: name: parallelstore-pv spec: storageClassName: "STORAGECLASS_NAME" capacity: storage: STORAGE_SIZE accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem csi: driver: parallelstore.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container" volumeAttributes: accessPoints: ACCESS_POINTS network: NETWORK_NAME mountLocality: node dfuseCPURequest: DFUSE_CPU_REQUEST dfuseMemoryRequest: DFUSE_MEMORY_REQUEST dfuseCPULimit: DFUSE_CPU_LIMIT dfuseMemoryLimit: DFUSE_MEMORY_LIMIT claimRef: name: parallelstore-pvc namespace: default
更改下列內容:
- PROJECT_ID:專案 ID。 Google Cloud
- LOCATION:Parallelstore 執行個體的區域位置。您必須為 Parallelstore CSI 驅動程式指定支援的區域。
- INSTANCE_NAME:Parallelstore 執行個體的名稱。有效
volumeHandle
值的範例如下:"my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
- ACCESS_POINTS:Parallelstore 執行個體的存取點,例如
10.51.110.2,10.51.110.4,10.51.110.3
。 - NETWORK_NAME:可存取 Parallelstore 執行個體的虛擬私有雲網路。
- STORAGECLASS_NAME:StorageClass 的名稱。這個值可以是空字串,但必須符合 PersistentVolumeClaim 中的規格。
- STORAGE_SIZE:儲存空間大小,例如
12000Gi
。 - DFUSE_CPU_REQUEST:dfuse 程序的 CPU 要求。預設值為
250m
。 - DFUSE_MEMORY_REQUEST:dfuse 程序的記憶體要求。預設值為
512Mi
。 - DFUSE_CPU_LIMIT:dfuse 程序的 CPU 限制。預設值為「未設定」。
- DFUSE_MEMORY_LIMIT:dfuse 程序的記憶體限制。預設值為
10Gi
。
如需 PersistentVolume 物件支援的完整欄位清單,請參閱 Parallelstore CSI 參考說明文件。
執行下列指令來建立 PersistentVolume:
kubectl apply -f parallelstore-pv.yaml
(選用) 使用不同的掛接選項掛接相同的 Parallelstore 執行個體
您可以使用不同的掛接選項掛接相同的 Parallelstore 執行個體。 舉例來說,您可以在同一個 Pod 中,掛接啟用快取和停用快取的相同 Parallelstore 執行個體。
如要使用不同的掛接選項掛接相同的 Parallelstore 執行個體,您必須為每個掛接選項建立 PersistentVolume。在 PersistentVolume 物件中,volumeHandle
欄位的語法如下:「PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container:RANDOM_SUFFIX」,其中 RANDOM_SUFFIX 是您選擇的隨機字串。
例如:"my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container:xyz123"
使用 PersistentVolumeClaim 存取磁碟區
您可以建立參照 Parallelstore CSI 驅動程式 StorageClass 的 PersistentVolumeClaim 資源。
以下資訊清單檔案範例說明如何以 ReadWriteMany
存取模式 建立 PersistentVolumeClaim,並參照您先前建立的 StorageClass。
將下列資訊清單儲存到名為
parallelstore-pvc.yaml
的檔案:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: parallelstore-pvc namespace: default spec: accessModes: - ReadWriteMany storageClassName: STORAGECLASS_NAME resources: requests: storage: STORAGE_SIZE
更改下列內容:
- STORAGECLASS_NAME:StorageClass 的名稱。必須與 PersistentVolume 中的規格相符。
- STORAGE_SIZE:儲存空間大小,例如
12000Gi
。必須與 PersistentVolume 中的規格相符。
執行下列指令來建立 PersistentVolumeClaim:
kubectl create -f parallelstore-pvc.yaml
(選用) 設定補充容器的資源
建立使用 Parallelstore 支援磁碟區的工作負載 Pod 時,CSI 驅動程式會判斷磁碟區是否以 Parallelstore 執行個體為基礎。
如果驅動程式偵測到磁碟區是以 Parallelstore 為基礎,或是您指定 gke-parallelstore/volumes: "true"
註解,CSI 驅動程式就會自動將名為 gke-parallelstore-sidecar
的 Sidecar 容器插入 Pod。這個 Sidecar 容器會將 Parallelstore 執行個體掛接至工作負載。
根據預設,系統會為 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
決定要分配多少資源時,請考量下列事項:
- 如果設定了其中一個要求或限制值,但未設定另一個值,GKE 會將兩者都設為相同的值。
- 如果工作負載需要更高的輸送量,請為 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 會等到 GKE 佈建 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 模型。