檔案儲存體CPFS是阿里雲推出的全託管、可擴充並行檔案系統,滿足高效能運算情境的需求。CPFS支援成百上千的機器同時訪問,擁有數十GB的輸送量、數百萬的IOPS能力,同時還能保證亞毫秒級的延時。本文介紹如何為應用掛載CPFS靜態儲存卷,並驗證CPFS的共用儲存和持久化儲存。
功能介紹
CPFS智算版(邀測)適用於AIGC、自動駕駛等智算情境。掛載前,請瞭解以下注意事項:
前提條件
ACS叢集中已安裝csi-provisioner組件。
您可以在ACS叢集管理頁的左側導覽列單擊組件管理,然後在儲存頁簽下確認csi-provisioner組件的安裝情況。
建立CPFS檔案系統
CPFS智算版
建立完成後,請記錄檔案系統ID。
(可選)建立VPC掛載點。
對於不支援RDMA協議的Pod(比如CPU Pod,部分GPU Pod)需要建立VPC掛載點,通過VPC網路訪問CPFS。
請使用ACS叢集對應的VPC和交換器建立VPC掛載點,產生掛載地址。建立完成後,請記錄掛載點網域名稱,格式為
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com。
掛載CPFS儲存卷
步驟一:建立PV和PVC
kubectl
將以下YAML內容儲存為cpfs-pv-pvc.yaml。
請根據要掛載的Pod的計算類型,選擇對應的YAML。
CPFS智算版(RDMA網路)
重要僅支援掛載到部分GPU型號的Pod,具體支援RDMA協議的卡型參見ACS支援的GPU卡型。
apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: povplugin.csi.alibabacloud.com volumeAttributes: filesystemId: bmcpfs-***** path: / volumeHandle: bmcpfs-***** --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test resources: requests: storage: 10TiPV參數
參數
說明
labels設定Label,以便PVC使用
selector進行匹配綁定。accessModesPV的訪問模式。
capacity.storage聲明儲存卷容量。
csi.driver驅動類型,設定為
povplugin.csi.alibabacloud.com。csi.volumeAttributesCPFS儲存卷的屬性。
filesystemId:CPFS智算版檔案系統ID。path:預設為/表示掛載CPFS檔案系統的根目錄,支援設定為子目錄,如/dir。如果子目錄不存在,會在掛載時被自動建立。
csi.volumeHandleCPFS智算版檔案系統ID。
PVC參數
參數
說明
accessModesPVC請求PV的訪問模式。
selector使用PV上的Label進行匹配綁定。
resources.requests.storage分配給Pod的儲存容量。不大於PV容量即可。
CPFS智算版(VPC網路)
apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: mountProtocol: efc server: cpfs-***-vpc-***.cn-wulanchabu.cpfs.aliyuncs.com path: / volumeHandle: bmcpfs-***** --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test resources: requests: storage: 10TiPV參數
參數
說明
labels設定Label,以便PVC使用
selector進行匹配綁定。accessModes訪問模式。
capacity.storage聲明儲存卷容量。
csi.driver驅動類型,設定為
nasplugin.csi.alibabacloud.com。csi.volumeAttributesCPFS儲存卷的屬性。
mountProtocol:掛載協議,設定為efc。server:CPFS檔案系統的VPC掛載點網域名稱。path:預設為/表示掛載CPFS檔案系統的根目錄,支援設定為子目錄,如/dir。
csi.volumeHandleCPFS智算版檔案系統ID。
PVC參數
參數
說明
accessModesPVC請求PV的訪問模式。
selector使用PV上的Label進行匹配綁定。
resources.requests.storage分配給Pod的儲存容量。不大於PV容量即可。
建立PV和PVC。
kubectl create -f cpfs-pv-pvc.yaml確認PVC已綁定PV。
kubectl get pvc cpfs-test返回樣本如下:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
控制台
登入容器計算服務控制台。
在叢集列表頁面,單擊目的地組群名稱,進入該叢集的管理頁面。
在叢集管理頁面的左側導覽列,選擇。
在儲存聲明頁面,單擊建立。
在彈出的對話方塊中,完成參數配置,然後單擊建立。
以下為建立PVC的同時建立PV的參數說明,您也可以單獨建立PV再建立PVC。
說明控制台操作時,暫不支援通過VPC掛載點的方式為CPU應用掛載CPFS智算版。
參數
說明
樣本
儲存宣告類型
選擇CPFS。
CPFS
名稱
PVC名稱,自訂輸入。格式要求請參考介面提示。
cpfs-test
分配模式
根據需要選擇已有儲存卷和建立儲存卷。
建立儲存卷
CPFS類型
選擇CPFS智算版。
CPFS智算版
訪問模式
支援ReadWriteMany和ReadWriteOnce。
ReadWriteMany
檔案系統ID
配置要掛載的CPFS智算版檔案系統ID。
bmcpfs-0115******13q5
查看建立的PVC和PVC。
在儲存聲明頁面和儲存卷頁面,可以看到新建立的PVC和PV,確認兩者已綁定。
步驟二:建立應用並掛載CPFS
kubectl
使用以下YAML內容,建立cpfs-test.yaml檔案。
GPU應用
以下YAML樣本可以建立包含2個Pod的Deployment,2個Pod均通過
alibabacloud.com/compute-class: gpu標籤聲明要使用GPU型算力,並且通過名為cpfs-test的PVC申請儲存資源,掛載路徑均為/data。說明關於GPU卡具體型號,請參見為ACS GPU Pod指定GPU型號和驅動版本。
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 # 指定計算類型為GPU型 alibabacloud.com/compute-class: gpu # 指定GPU型號,請按實際情況填寫,如T4 alibabacloud.com/gpu-model-series: T4 alibabacloud.com/compute-qos: default 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: cpfs-testCPU應用
以下YAML樣本可以建立包含2個Pod的Deployment,通過名為
cpfs-test的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 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: cpfs-test建立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
控制台
在叢集管理頁面的左側導覽列,選擇。
在無狀態頁面,單擊使用鏡像建立。
完成Deployment的參數配置,單擊建立。
需要注意的參數如下,其他參數保持預設即可。更多資訊,請參見建立無狀態工作負載Deployment。
GPU應用
配置頁
參數
說明
樣本
應用基本資料
應用程式名稱
Deployment名稱,自訂輸入。格式要求請參考介面提示。
cpfs-test
副本數量
配置Deployment的副本數量。
2
執行個體類型
選擇Pod的計算類型。
說明關於GPU卡具體型號,請參見為ACS GPU Pod指定GPU型號和驅動版本。
GPU,T4
容器配置
鏡像名稱
輸入用於部署應用的鏡像地址。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
所需資源
設定所需的GPU、vCPU和記憶體資源。
GPU:1
CPU:2 vCPU
記憶體:2 GiB
資料卷
單擊增加雲端儲存聲明,然後完成參數配置。
掛載源:選擇之前建立的PVC。
容器路徑:輸入CPFS檔案系統要掛載到的容器路徑。
掛載源:pvc-cpfs
容器路徑:/data
CPU應用
配置頁
參數
說明
樣本
應用基本資料
應用程式名稱
Deployment名稱,自訂輸入。格式要求請參考介面提示。
cpfs-test
副本數量
配置Deployment的副本數量。
2
執行個體類型
選擇Pod的計算類型。
CPU,通用型
容器配置
鏡像名稱
輸入用於部署應用的鏡像地址。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
所需資源
設定所需的vCPU和記憶體資源。
CPU:0.25 vCPU
記憶體:0.5 GiB
資料卷
單擊增加雲端儲存聲明,然後完成參數配置。
掛載源:選擇之前建立的PVC。
容器路徑:輸入CPFS檔案系統要掛載到的容器路徑。
掛載源:pvc-cpfs
容器路徑:/data
查看應用部署情況。
在無狀態頁面,單擊應用程式名稱。
在容器組頁簽下,確認Pod已正常運行(狀態為Running)。
驗證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