使用 Managed Lustre CSI 驅動程式,存取 GKE 上現有的 Managed Lustre 執行個體

本指南說明如何使用 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,取得最新版本。

設定環境變數

設定下列環境變數:

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-aZONE

設定受管理 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 執行個體的一般程序:

  1. 建立參照 Managed Lustre 執行個體的 PersistentVolume
  2. 使用 PersistentVolumeClaim 存取磁碟區
  3. 建立會耗用磁碟區的工作負載

建立 PersistentVolume

  1. 如要找出 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'
    
  2. 將下列資訊清單儲存到名為 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 驅動程式參考說明文件

  3. 執行下列指令來建立 PersistentVolume:

    kubectl apply -f lustre-pv.yaml
    

使用 PersistentVolumeClaim 存取磁碟區

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

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

  1. 將下列資訊清單儲存到名為 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 中的規格相符。

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

    kubectl create -f lustre-pvc.yaml
    

建立會耗用磁碟區的工作負載

本節說明如何建立 Pod,以使用您先前建立的 PersistentVolumeClaim 資源。

多個 Pod 可以共用同一個 PersistentVolumeClaim 資源。

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

    kubectl apply -f my-pod.yaml
    

    Pod 會等到 GKE 佈建 PersistentVolumeClaim 後,才會開始執行。這項作業可能需要幾分鐘才能完成。

  3. 請確認 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 帳戶收費,請刪除您在本指南中建立的儲存空間資源。

  1. 刪除 Pod 和 PersistentVolumeClaim。

    kubectl delete pod my-pod
    kubectl delete pvc lustre-pvc
    
  2. 檢查 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
    
  3. 重複使用 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
    
  4. 如果不再需要 PersistentVolume,請將其刪除。如果不再需要 PersistentVolume,請刪除:

    kubectl delete pv lustre-pv
    

    刪除 PersistentVolume 不會移除基礎的 Managed Lustre 執行個體。

後續步驟