容器計算服務 ACS 支援掛載 CPFS 智算版檔案系統,多個 Pod 可同時掛載實現資料共用。
前提條件
已建立 ACS 叢集。
ACS 情境下 CSI 組件(bmcpfs-csi-controller、bmcpfs-csi-node、cnfs-nas-daemon)由 ACS 平台託管,使用者無需關心組件版本與升級。
已建立 CPFS 智算版檔案系統,並記錄檔案系統 ID。具體操作,請參見建立檔案系統。
Pod 調度到不支援 RDMA 的節點或跨存算親和域情境時,需預先建立 VPC 掛載點,並記錄掛載點網域名稱(格式為
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com)。VPC 掛載點所屬 VPC 必須與 ACS 叢集 VPC 一致。具體操作,參見管理VPC掛載點。
步驟一:建立PV和PVC
根據 Pod 類型選擇對應模板:
靈駿 GPU Pod + 同存算親和域:使用「方式 A:RDMA」。
CPU Pod、靈駿跨存算親和域訪問:使用「方式 B:VPC 掛載點」。
ACS 靈駿 Pod 與 CPFS 處於同一存算親和域時通過 VSC + RDMA 直掛訪問,效能最優;CPU Pod或靈駿跨存算親和域訪問情境則通過 VPC 掛載點訪問。存算親和域的概念與判斷方法參見掛載訪問概述。
RDMA網路
kubectl命令列
建立
cpfs-pv-pvc.yaml檔案,定義PV和PVC:apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: bmcpfsplugin.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: 10Ti參數說明:
PV參數
參數
說明
labels設定Label,以便PVC使用
selector進行匹配綁定。accessModesPV的訪問模式。
capacity.storage聲明儲存卷容量。
csi.driver驅動類型,設定為
bmcpfsplugin.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容量即可。
執行建立命令:
kubectl create -f cpfs-pv-pvc.yaml確認PVC已綁定PV。
kubectl get pvc cpfs-test返回樣本如下(STATUS顯示Bound表示成功):
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
控制台
登入容器計算服務控制台。
在叢集列表頁面,單擊目的地組群名稱,進入該叢集的管理頁面。
在左側導覽列選擇,單擊建立,完成以下配置:
參數
說明
樣本
儲存宣告類型
選擇CPFS。
CPFS
名稱
PVC名稱,自訂輸入。格式要求請參考介面提示。
cpfs-pvc
分配模式
根據需要選擇已有儲存卷和建立儲存卷。
建立儲存卷
CPFS類型
選擇CPFS智算版。
CPFS智算版
訪問模式
支援ReadWriteMany和ReadWriteOnce。
ReadWriteMany
檔案系統ID
配置要掛載的CPFS智算版檔案系統ID。
bmcpfs-0115******13q5
查看建立的PV和PVC。
在儲存聲明頁面和儲存卷頁面,可以看到新建立的PV和PVC,確認兩者已綁定。
VPC網路
適用於 CPU Pod、普通 GPU(T4、A10 等),以及靈駿 GPU 跨存算親和域訪問情境。
建立
cpfs-pv-pvc.yaml檔案,定義PV和PVC:apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test # [PV標籤] PVC通過此綁定 spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: mountProtocol: efc server: cpfs-***-vpc-***.cn-wulanchabu.cpfs.aliyuncs.com # 替換為VPC掛載點網域名稱 path: / autoSwitch: "true" # 可選,啟用VSC/VPC自動切換(靈駿跨AZ情境建議開啟) volumeHandle: bmcpfs-***** # 替換為您的CPFS智算版檔案系統ID --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test # [PVC名稱] Deployment通過此引用 spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test # [PVC選取器] 需與PV標籤一致 resources: requests: storage: 10Ti參數說明:
PV參數
參數
說明
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容量即可。
autoSwitch:選擇性參數,設定為"true"時啟用 VSC/VPC 自動切換。靈駿 GPU 跨 AZ 訪問時,系統會自動從 RDMA 切換為 VPC 通道。
說明VPC 通道的吞吐效能受網路頻寬節流設定,最高約 3.2 GB/s(25 Gbps),低於 RDMA 直連效能。對效能敏感的情境,建議優先選擇同存算親和域的 CPFS 執行個體。
執行建立命令:
kubectl create -f cpfs-pv-pvc.yaml確認PVC已綁定PV。
kubectl get pvc cpfs-test返回樣本如下(STATUS顯示Bound表示成功):
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
步驟二:建立應用並掛載CPFS
建立 Deployment 應用,通過引用 PVC 將儲存掛載到容器指定目錄。根據操作習慣選擇命令列或控制台方式。
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
數據卷
單擊增加雲端儲存聲明(PersistentVolumeClaim),然後完成參數配置。
掛載源:選擇之前建立的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
數據卷
單擊增加雲端儲存聲明(PersistentVolumeClaim),然後完成參數配置。
掛載源:選擇之前建立的PVC。
容器路徑:輸入CPFS檔案系統要掛載到的容器路徑。
掛載源:pvc-cpfs
容器路徑:/data
查看應用部署情況。
在無狀態頁面,單擊應用程式名稱。
在容器組頁簽下,確認Pod已正常運行(狀態為Running)。
步驟三:驗證掛載結果
按照上文樣本建立的Deployment中含有2個Pod,2個Pod同時掛載了同一CPFS檔案系統。您可以通過以下方式進行驗證:
重建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