ACS挂载CPFS智算版文件系统
本文介绍如何在容器计算服务(ACS)中挂载CPFS智算版文件系统,支持多个Pod同时挂载实现数据共享。
前提条件
已创建CPFS智算版文件系统。具体操作,请参见创建文件系统。
ACS集群中已安装csi-provisioner组件。
说明您可以在ACS集群管理页的左侧导航栏单击组件管理,然后在存储页签下确认csi-provisioner组件的安装情况。
步骤一:确定挂载方式
根据您的计算资源类型,确定网络方式并完成前置准备:
您的资源 | 对应网络 | 前置准备 |
GPU Pod(支持RDMA:GU8TF、GU8TEF、L20X、P16EN等) | RDMA | 确保CPFS智算版的可用区(AZ)和集群编号与所使用的灵骏GPU保持一致 |
GPU Pod(不支持RDMA:L20、G49E、T4、A10、G59等) | VPC | |
CPU Pod | VPC |
如不确定您的GPU类型,请参见ACS支持的GPU卡型。
步骤二:创建PV和PVC
CPFS智算版采用静态挂载方式,需手动创建PV和PVC:
PV(PersistentVolume):持久卷,定义CPFS的连接信息(文件系统ID、网络类型、挂载路径等)
PVC(PersistentVolumeClaim):持久卷声明,Pod通过引用PVC使用存储,实现存储与应用的解耦
根据您的操作习惯选择命令行或控制台方式。
kubectl命令行
根据步骤一确定的网络类型,选择对应配置。
RDMA网络
适用于灵骏GPU(GU8TF、GU8TEF、L20X、P16EN等)。
创建
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驱动类型,设置为
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容量即可。
执行创建命令:
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
VPC网络
适用于CPU Pod,以及普通GPU(T4、A10等)。
创建
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: / 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容量即可。
执行创建命令:
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
控制台
控制台方式仅支持RDMA网络挂载GPU应用,VPC网络请使用kubectl方式。
登录容器计算服务控制台。
在集群列表页面,单击目标集群名称,进入该集群的管理页面。
在左侧导航栏选择,单击创建,完成以下配置:
参数
说明
示例
存储声明类型
选择CPFS。
CPFS
名称
PVC名称,自定义输入。格式要求请参考界面提示。
cpfs-pvc
分配模式
根据需要选择已有存储卷和创建存储卷。
创建存储卷
CPFS类型
选择CPFS智算版。
CPFS智算版
访问模式
支持ReadWriteMany和ReadWriteOnce。
ReadWriteMany
文件系统ID
配置要挂载的CPFS智算版文件系统ID。
bmcpfs-0115******13q5
查看创建的PV和PVC。
在存储声明页面和存储卷页面,可以看到新创建的PV和PVC,确认两者已绑定。
步骤三:创建应用并挂载CPFS
创建Deployment应用,通过引用PVC将存储挂载到容器指定目录。根据您的操作习惯选择命令行或控制台方式。
kubectl方式
根据您的应用类型选择对应的配置。
GPU应用
适用于灵骏GPU(GU8TF等)和普通GPU(T4、A10等)。
创建
cpfs-test.yaml文件,定义Deployment并引用PVC:以下YAML示例可以创建包含2个Pod的Deployment,2个Pod均通过
alibabacloud.com/compute-class: gpu标签声明要使用GPU型算力,并且通过名为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 # 指定计算类型为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-test # [Deployment] 需与PVC名称一致创建应用:
kubectl create -f cpfs-test.yaml确认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
CPU应用
创建cpfs-test.yaml文件。
以下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] 需与PVC名称一致创建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)。
步骤四:验证挂载结果
按照上文示例创建的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