對於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
串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集或在CloudShell上通過kubectl管理Kubernetes叢集。
將以下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 的
namespace
和name
。csi.driver
驅動類型,必須設定為
povplugin.csi.alibabacloud.com
。csi.volumeAttributes
filesystemId
CPFS智算版檔案系統ID,例如bmcpfs-*****
。path
預設為/
表示掛載CPFS檔案系統的根目錄,支援設定為子目錄,如/dir
。如果子目錄不存在,會在掛載時被自動建立。
csi.volumeHandle
設定為CPFS智算版檔案系統ID。
persistentVolumeReclaimPolicy
回收策略,必須設定為
Retain
。建立PV。
kubectl create -f pv.yaml
步驟二:建立PVC
將以下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容量即可。
建立PVC。
kubectl create -f pvc.yaml
檢查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
使用以下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
建立Deployment並掛載CPFS。
kubectl create -f cpfs-test.yaml
查看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
查看掛載路徑。
命令樣本如下,預期會返回CPFS智算版檔案系統掛載目錄下的資料。預設為空白。
kubectl exec cpfs-test-****-***a -- ls /data
驗證CPFS的共用儲存和持久化儲存
按照上文樣本建立的Deployment中含有2個Pod,2個Pod同時掛載了同一CPFS智算版檔案系統。您可以通過以下方式進行驗證:
在一個Pod中建立檔案,然後另一個Pod中查看檔案,以此來驗證共用儲存。
重建Deployment,然後在新建立的Pod中查看檔案系統中的資料是否存在,以此來驗證持久化儲存。
查看Pod資訊。
kubectl get pod | grep cpfs-test
返回樣本如下:
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s
驗證共用儲存。
在一個Pod中建立檔案。
以名為
cpfs-test-****-***a
的Pod作為樣本:kubectl exec cpfs-test-****-***a -- touch /data/test.txt
在另一個Pod中查看檔案。
以名為
cpfs-test-****-***b
的Pod作為樣本:kubectl exec cpfs-test-****-***b -- ls /data
預期返回如下,可以看到已共用建立的檔案
test.txt
。test.txt
驗證持久化儲存。
重建Deployment。
kubectl rollout restart deploy cpfs-test
查看Pod,等待新Pod建立成功。
kubectl get pod | grep cpfs-test
返回樣本如下:
cpfs-test-****-***c 1/1 Running 0 78s cpfs-test-****-***d 1/1 Running 0 52s
在新Pod中查看檔案系統中的資料是否存在。
以名為
cpfs-test-c***
的Pod作為樣本:kubectl exec cpfs-test-****-***c -- ls /data
預期返回如下,可以看到CPFS智算版檔案系統中的資料依然存在,在新Pod的掛載目錄下可以重新擷取。
test.txt