全部產品
Search
文件中心

Container Compute Service:靜態掛載CPFS智算版儲存卷

更新時間:Dec 11, 2024

對於AIGC、自動駕駛等智算情境,可以選擇CPFS智算版作為持久化儲存卷。本文介紹如何為應用靜態掛載CPFS儲存卷,並驗證CPFS的共用儲存和持久化儲存。

背景資訊

CPFS智算版是阿里雲檔案儲存體CPFS推出的一款超高效能的檔案儲存體服務,支援端到端RDMA網路,適用於AIGC、自動駕駛等智算情境。更多資訊,請參見儲存概述

重要

目前ACS僅支援使用CPFS智算版,不支援CPFS通用版。CPFS智算版目前處於邀測中,更多資訊,請參見CPFS智算版

前提條件

ACS叢集中已安裝managed-csiprovisioner組件。

說明

您可以在ACS叢集管理頁的左側導覽列選擇營運管理 > 組件管理,在儲存頁簽下查看managed-csiprovisioner組件的安裝情況。

使用限制

  • 僅支援在高效能網路GPU型工作負載中掛載CPFS智算版檔案系統。

  • 僅部分地區和可用性區域支援建立CPFS智算版檔案系統,具體請參見CPFS智算版

注意事項

  • CPFS為共用儲存。一個CPFS儲存卷可以掛載到多個Pod上。

  • CPFS智算版採用隨用隨付,具體請參見CPFS智算版

建立CPFS智算版檔案系統

CPFS智算版目前處於邀測中,您需要提交工單,申請添加CPFS智算版服務使用白名單後,才能建立CPFS智算版檔案系統。更多資訊,請參見建立CPFS智算版檔案系統

靜態掛載CPFS儲存卷

步驟一:建立PV

  1. 串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集在CloudShell上通過kubectl管理Kubernetes叢集

  2. 將以下YAML內容儲存為pv.yaml。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: bmcpfs-gpu-hpn
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 10Ti
      claimRef:
        name: bmcpfs-gpu-hpn
        namespace: default
      csi:
        driver: povplugin.csi.alibabacloud.com
        volumeAttributes:
          filesystemId: bmcpfs-*****
          path: /
        volumeHandle: bmcpfs-*****
      persistentVolumeReclaimPolicy: Retain
      storageClassName: alibaba-cloud-cpfs-premium

    相關參數說明如下:

    參數

    說明

    accessModes

    訪問模式。

    capacity

    聲明儲存卷容量。

    claimRef

    綁定的 PVC 的namespacename

    csi.driver

    驅動類型,必須設定為povplugin.csi.alibabacloud.com

    csi.volumeAttributes

    • filesystemIdCPFS智算版檔案系統ID,例如bmcpfs-*****

    • path預設為/表示掛載CPFS檔案系統的根目錄,支援設定為子目錄,如/dir。如果子目錄不存在,會在掛載時被自動建立。

    csi.volumeHandle

    設定為CPFS智算版檔案系統ID。

    persistentVolumeReclaimPolicy

    回收策略,必須設定為Retain

  3. 建立PV。

    kubectl create -f pv.yaml

步驟二:建立PVC

  1. 將以下YAML內容儲存為pvc.yaml。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bmcpfs-gpu-hpn
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: alibaba-cloud-cpfs-premium
      volumeName: bmcpfs-gpu-hpn
      resources:
        requests:
          storage: 10Ti

    相關參數說明如下:

    參數

    說明

    accessModes

    訪問模式。

    volumeName

    設定為之前建立的PV名。

    resources.requests

    容量不大於PV容量即可。

  2. 建立PVC。

    kubectl create -f pvc.yaml
  3. 檢查PVC完成綁定。

    kubectl get pvc bmcpfs-gpu-hpn

    返回樣本如下:

    NAME             STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS                 VOLUMEATTRIBUTESCLASS   AGE
    bmcpfs-gpu-hpn   Bound    bmcpfs-gpu-hpn   10Ti       RWX            alibaba-cloud-cpfs-premium   <unset>                 10s

步驟三:建立應用並掛載CPFS

  1. 使用以下YAML內容,建立cpfs-test.yaml檔案。

    以下YAML樣本可以建立包含2個Pod的Deployment,2個Pod均通過alibabacloud.com/compute-class: gpu-hpn聲明要使用GPU型算力,並且通過名為cpfs-pvc的PVC申請儲存資源,掛載路徑均為/data

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpfs-test
      labels:
        app: cpfs-test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: cpfs-test
      template:
        metadata:
          labels:
            app: cpfs-test
            alibabacloud.com/compute-class: gpu-hpn
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-cpfs
                mountPath: /data
          volumes:
            - name: pvc-cpfs
              persistentVolumeClaim:
                claimName: bmcpfs-gpu-hpn
  2. 建立Deployment並掛載CPFS。

    kubectl create -f cpfs-test.yaml
  3. 查看Deployment中Pod的部署情況。

    kubectl get pod | grep cpfs-test

    返回樣本如下,已建立2個Pod。

    cpfs-test-****-***a   1/1     Running   0          45s
    cpfs-test-****-***b   1/1     Running   0          45s
  4. 查看掛載路徑。

    命令樣本如下,預期會返回CPFS智算版檔案系統掛載目錄下的資料。預設為空白。

    kubectl exec cpfs-test-****-***a -- ls /data

驗證CPFS的共用儲存和持久化儲存

按照上文樣本建立的Deployment中含有2個Pod,2個Pod同時掛載了同一CPFS智算版檔案系統。您可以通過以下方式進行驗證:

  • 在一個Pod中建立檔案,然後另一個Pod中查看檔案,以此來驗證共用儲存。

  • 重建Deployment,然後在新建立的Pod中查看檔案系統中的資料是否存在,以此來驗證持久化儲存。

  1. 查看Pod資訊。

    kubectl get pod | grep cpfs-test

    返回樣本如下:

    cpfs-test-****-***a   1/1     Running   0          45s
    cpfs-test-****-***b   1/1     Running   0          45s
  2. 驗證共用儲存。

    1. 在一個Pod中建立檔案。

      以名為cpfs-test-****-***a的Pod作為樣本:

      kubectl exec cpfs-test-****-***a -- touch /data/test.txt
    2. 在另一個Pod中查看檔案。

      以名為cpfs-test-****-***b的Pod作為樣本:

      kubectl exec cpfs-test-****-***b -- ls /data

      預期返回如下,可以看到已共用建立的檔案test.txt

      test.txt
  3. 驗證持久化儲存。

    1. 重建Deployment。

      kubectl rollout restart deploy cpfs-test
    2. 查看Pod,等待新Pod建立成功。

      kubectl get pod | grep cpfs-test

      返回樣本如下:

      cpfs-test-****-***c   1/1     Running   0          78s
      cpfs-test-****-***d   1/1     Running   0          52s
    3. 在新Pod中查看檔案系統中的資料是否存在。

      以名為cpfs-test-c***的Pod作為樣本:

      kubectl exec cpfs-test-****-***c -- ls /data

      預期返回如下,可以看到CPFS智算版檔案系統中的資料依然存在,在新Pod的掛載目錄下可以重新擷取。

      test.txt