本指南說明如何使用 Managed Lustre CSI 驅動程式,連線至現有的 Managed Lustre 執行個體。這樣您就能以受控且可預測的方式,將現有的 Managed Lustre 執行個體做為有狀態工作負載的磁碟區。
事前準備
開始之前,請確認您已完成下列工作:
- 啟用 Google Cloud Managed Lustre API 和 Google Kubernetes Engine API。 啟用 API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
- 如要瞭解限制和規定,請參閱 [CSI 驅動程式總覽]。
- 請務必啟用受管理 Lustre CSI 驅動程式。在 Standard 和 Autopilot 叢集中,這項功能預設為停用。
設定環境變數
設定下列環境變數:
export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export LOCATION=ZONE
更改下列內容:
CLUSTER_NAME
:叢集名稱。PROJECT_ID
:您的 Trusted Cloud by S3NS 專案 ID。LUSTRE_NETWORK
:共用虛擬私有雲網路,GKE 叢集和 Managed Lustre 執行個體都位於這個網路中。- :GKE 叢集的地理區域,例如
us-central1-a
。ZONE
設定受管理 Lustre CSI 驅動程式
本節說明如何視需要啟用及停用 Managed Lustre CSI 驅動程式。
在新 GKE 叢集上啟用 Managed Lustre CSI 驅動程式
如要在建立新的 GKE 叢集時啟用 Managed Lustre CSI 驅動程式,請按照下列步驟操作:
Autopilot
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=1.33.2-gke.1111000 \
--enable-lustre-csi-driver \
--enable-legacy-lustre-port
標準
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=1.33.2-gke.1111000 \
--addons=LustreCsiDriver \
--enable-legacy-lustre-port
在現有 GKE 叢集上啟用代管 Lustre CSI 驅動程式
如要在現有 GKE 叢集上啟用代管 Lustre CSI 驅動程式,請使用下列指令:
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--enable-legacy-lustre-port
在叢集中啟用 Managed Lustre CSI 驅動程式後,您可能會發現節點已重新建立,且 CPU 節點似乎在Trusted Cloud 控制台或 CLI 輸出內容中使用 GPU 映像檔。例如:
config:
imageType: COS_CONTAINERD
nodeImageConfig:
image: gke-1330-gke1552000-cos-121-18867-90-4-c-nvda
這是正常現象。GPU 映像檔會重複用於 CPU 節點,以安全地安裝 Managed Lustre 核心模組。系統不會向您收取過高的 GPU 使用費用。
停用 Managed Lustre CSI 驅動程式
您可以使用 Google Cloud CLI,在現有 GKE 叢集上停用 Managed Lustre CSI 驅動程式。
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=DISABLED
CSI 驅動程式停用後,節點會自動重新建立,且受管理的 Lustre 核心模組會從 GKE 節點解除安裝。
使用 Managed Lustre CSI 驅動程式存取現有的 Managed Lustre 執行個體
如果您已在與 GKE 叢集相同的網路中佈建 Managed Lustre 執行個體,可以按照這些操作說明,靜態佈建參照該執行個體的 PersistentVolume。
以下各節說明使用 Managed Lustre CSI 驅動程式存取現有 Managed Lustre 執行個體的一般程序:
建立 PersistentVolume
如要找出 Managed Lustre 執行個體,請執行下列指令。
gcloud lustre instances list \ --project=${PROJECT_ID} \ --location=${LOCATION}
輸出內容應與下方示例類似。在繼續進行下一步之前,請務必記下「Managed Lustre instance name」(受管理 Lustre 執行個體名稱)、「filesystem」(檔案系統) 和「mountPoint」(掛接點) 欄位。
capacityGib: '9000' createTime: '2025-04-28T22:42:11.140825450Z' filesystem: testlfs gkeSupportEnabled: true mountPoint: 10.90.1.4@tcp:/testlfs name: projects/my-project/locations/us-central1-a/instances/my-lustre network: projects/my-project/global/networks/default perUnitStorageThroughput: '1000' state: ACTIVE updateTime: '2025-04-28T22:51:41.559098631Z'
將下列資訊清單儲存到名為
lustre-pv.yaml
的檔案:apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv spec: storageClassName: "STORAGE_CLASS_NAME" capacity: storage: 9000Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem claimRef: namespace: default name: lustre-pvc csi: driver: lustre.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME" volumeAttributes: ip: IP_ADDRESS filesystem: FILESYSTEM
更改下列內容:
storageClassName
:StorageClass 的名稱。這個值可以是空字串,但必須符合 PersistentVolumeClaim 的規格。volumeHandle
:此卷冊的 ID。- PROJECT_ID:專案 ID。 Trusted Cloud by S3NS
- LOCATION:Lustre 執行個體的區域位置。您必須為 Managed Lustre CSI 驅動程式指定支援的區域。
- INSTANCE_NAME:Lustre 執行個體的名稱。
ip
:Lustre 執行個體的 IP 位址。您可從上一個指令輸出的mountPoint
欄位取得這項資訊。filesystem
:Managed Lustre 執行個體的檔案系統名稱。
如需 PersistentVolume 物件支援的完整欄位清單,請參閱 Managed Lustre CSI 驅動程式參考說明文件。
執行下列指令來建立 PersistentVolume:
kubectl apply -f lustre-pv.yaml
使用 PersistentVolumeClaim 存取磁碟區
您可以建立參照 Managed Lustre CSI 驅動程式 StorageClass 的 PersistentVolumeClaim 資源。
下列資訊清單檔案範例說明如何在ReadWriteMany
存取模式 中建立 PersistentVolumeClaim,並參照您先前建立的 StorageClass。
將下列資訊清單儲存到名為
lustre-pvc.yaml
的檔案:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: lustre-pvc spec: accessModes: - ReadWriteMany storageClassName: "STORAGE_CLASS_NAME" volumeName: lustre-pv resources: requests: storage: STORAGE_SIZE
將 STORAGE_SIZE 替換為儲存空間大小,例如
9000Gi
。必須與 PersistentVolume 中的規格相符。執行下列指令來建立 PersistentVolumeClaim:
kubectl create -f lustre-pvc.yaml
建立會耗用磁碟區的工作負載
本節說明如何建立 Pod,以使用您先前建立的 PersistentVolumeClaim 資源。
多個 Pod 可以共用同一個 PersistentVolumeClaim 資源。
將下列資訊清單儲存至名為
my-pod.yaml
的檔案。apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: lustre-volume mountPath: /data volumes: - name: lustre-volume persistentVolumeClaim: claimName: lustre-pvc
執行下列指令,將資訊清單套用至叢集:
kubectl apply -f my-pod.yaml
Pod 會等到 GKE 佈建 PersistentVolumeClaim 後,才會開始執行。這項作業可能需要幾分鐘才能完成。
請確認 Pod 正在執行中:
kubectl get pods
Pod 可能需要幾分鐘的時間才會達到
Running
狀態。輸出結果會與下列內容相似:
NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 11s
搭配使用 fsGroup 與 Managed Lustre 磁碟區
您可以變更已掛接檔案系統的根層級目錄群組擁有權,以符合 Pod SecurityContext 中指定的使用者要求 fsGroup。
疑難排解
如需疑難排解指南,請參閱 Managed Lustre 說明文件的疑難排解頁面。
清除所用資源
如要避免系統向您的 Trusted Cloud by S3NS 帳戶收費,請刪除您在本指南中建立的儲存空間資源。
刪除 Pod 和 PersistentVolumeClaim。
kubectl delete pod my-pod kubectl delete pvc lustre-pvc
檢查 PersistentVolume 狀態。刪除 Pod 和 PersistentVolumeClaim 後,PersistentVolume 應會回報「已發布」狀態:
kubectl get pv
輸出結果會與下列內容相似:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Released default/preprov-pvc 2m28s
重複使用 PersistentVolume。如要重複使用 PersistentVolume,請移除聲明參考 (
claimRef
):kubectl patch pv lustre-pv --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'
PersistentVolume 現在應會回報「Available」狀態,表示已準備好繫結至新的 PersistentVolumeClaim。檢查 PersistentVolume 狀態:
kubectl get pv
輸出結果會與下列內容相似:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Available 19m
如果不再需要 PersistentVolume,請將其刪除。如果不再需要 PersistentVolume,請刪除:
kubectl delete pv lustre-pv
刪除 PersistentVolume 不會移除基礎的 Managed Lustre 執行個體。