靜態(tài)掛載CPFS智算版存儲卷
對于AIGC、自動駕駛等智算場景,可以選擇CPFS智算版作為持久化存儲卷。本文介紹如何為應(yīng)用靜態(tài)掛載CPFS存儲卷,并驗證CPFS的共享存儲和持久化存儲。
背景信息
CPFS智算版是阿里云文件存儲CPFS推出的一款超高性能的文件存儲服務(wù),支持端到端RDMA網(wǎng)絡(luò),適用于AIGC、自動駕駛等智算場景。更多信息,請參見存儲概述。
目前ACS僅支持使用CPFS智算版,不支持CPFS通用版。CPFS智算版目前處于邀測中,更多信息,請參見CPFS智算版。
前提條件
ACS集群中已安裝managed-csiprovisioner組件。
您可以在ACS集群管理頁的左側(cè)導(dǎo)航欄選擇
,在存儲頁簽下查看managed-csiprovisioner組件的安裝情況。使用限制
僅支持在高性能網(wǎng)絡(luò)GPU型工作負(fù)載中掛載CPFS智算版文件系統(tǒng)。
僅部分地域和可用區(qū)支持創(chuàng)建CPFS智算版文件系統(tǒng),具體請參見CPFS智算版。
注意事項
CPFS為共享存儲。一個CPFS存儲卷可以掛載到多個Pod上。
CPFS智算版采用按量計費,具體請參見CPFS智算版。
創(chuàng)建CPFS智算版文件系統(tǒng)
CPFS智算版目前處于邀測中,您需要提交工單,申請?zhí)砑覥PFS智算版服務(wù)使用白名單后,才能創(chuàng)建CPFS智算版文件系統(tǒng)。更多信息,請參見創(chuàng)建CPFS智算版文件系統(tǒng)。
靜態(tài)掛載CPFS存儲卷
步驟一:創(chuàng)建PV
連接集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群或在CloudShell上通過kubectl管理Kubernetes集群。
將以下YAML內(nèi)容保存為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
相關(guān)參數(shù)說明如下:
參數(shù)
說明
accessModes
訪問模式。
capacity
聲明存儲卷容量。
claimRef
綁定的 PVC 的
namespace
和name
。csi.driver
驅(qū)動類型,必須設(shè)置為
povplugin.csi.alibabacloud.com
。csi.volumeAttributes
filesystemId
CPFS智算版文件系統(tǒng)ID,例如bmcpfs-*****
。path
默認(rèn)為/
表示掛載CPFS文件系統(tǒng)的根目錄,支持設(shè)置為子目錄,如/dir
。如果子目錄不存在,會在掛載時被自動創(chuàng)建。
csi.volumeHandle
設(shè)置為CPFS智算版文件系統(tǒng)ID。
persistentVolumeReclaimPolicy
回收策略,必須設(shè)置為
Retain
。創(chuàng)建PV。
kubectl create -f pv.yaml
步驟二:創(chuàng)建PVC
將以下YAML內(nèi)容保存為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
相關(guān)參數(shù)說明如下:
參數(shù)
說明
accessModes
訪問模式。
volumeName
設(shè)置為之前創(chuàng)建的PV名。
resources.requests
容量不大于PV容量即可。
創(chuàng)建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
步驟三:創(chuàng)建應(yīng)用并掛載CPFS
使用以下YAML內(nèi)容,創(chuàng)建cpfs-test.yaml文件。
以下YAML示例可以創(chuàng)建包含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
創(chuàng)建Deployment并掛載CPFS。
kubectl create -f cpfs-test.yaml
查看Deployment中Pod的部署情況。
kubectl get pod | grep cpfs-test
返回示例如下,已創(chuàng)建2個Pod。
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s
查看掛載路徑。
命令示例如下,預(yù)期會返回CPFS智算版文件系統(tǒng)掛載目錄下的數(shù)據(jù)。默認(rèn)為空。
kubectl exec cpfs-test-****-***a -- ls /data
驗證CPFS的共享存儲和持久化存儲
按照上文示例創(chuàng)建的Deployment中含有2個Pod,2個Pod同時掛載了同一CPFS智算版文件系統(tǒng)。您可以通過以下方式進行驗證:
在一個Pod中創(chuàng)建文件,然后另一個Pod中查看文件,以此來驗證共享存儲。
重建Deployment,然后在新創(chuàng)建的Pod中查看文件系統(tǒng)中的數(shù)據(jù)是否存在,以此來驗證持久化存儲。
查看Pod信息。
kubectl get pod | grep cpfs-test
返回示例如下:
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s
驗證共享存儲。
在一個Pod中創(chuàng)建文件。
以名為
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
預(yù)期返回如下,可以看到已共享新建的文件
test.txt
。test.txt
驗證持久化存儲。
重建Deployment。
kubectl rollout restart deploy cpfs-test
查看Pod,等待新Pod創(chuàng)建成功。
kubectl get pod | grep cpfs-test
返回示例如下:
cpfs-test-****-***c 1/1 Running 0 78s cpfs-test-****-***d 1/1 Running 0 52s
在新Pod中查看文件系統(tǒng)中的數(shù)據(jù)是否存在。
以名為
cpfs-test-c***
的Pod作為示例:kubectl exec cpfs-test-****-***c -- ls /data
預(yù)期返回如下,可以看到CPFS智算版文件系統(tǒng)中的數(shù)據(jù)依然存在,在新Pod的掛載目錄下可以重新獲取。
test.txt