使用 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

設定 Managed 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 叢集上啟用 Managed 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 Driver 停用後,節點會自動重新建立,且受管理的 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: '18000'
    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: 18000Gi
      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 替換為儲存空間大小,例如 18000Gi。必須與 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   18000Gi      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   18000Gi      RWX           Retain         Available                                   19m
    
  4. 如果不再需要 PersistentVolume,請將其刪除。如果不再需要 PersistentVolume,請刪除:

    kubectl delete pv lustre-pv
    

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

後續步驟