使用并行文件存储PFS L2
更新时间:2025-06-06
容器引擎CCE支持通过创建PV/PVC,并为工作负载挂载数据卷方式使用百度智能云并行文件存储PFS 极速型L2。本文将介绍如何在集群中动态和静态挂载并行文件存储。
前提条件
- 集群已安装并行文件存储组件,更多信息请见CCE CSI PFS L2 Plugin 说明。
使用限制
- 仅支持使用CCE CSI PFS L2 Plugin组件关联挂载服务绑定的PFS实例。
- 在添加CCE节点时,需要注意安装的操作系统版本,以下为CCE和PFS极速型L2均支持的操作系统版本。
| 操作系统类型 | 发行版 | 内核版本 | 
|---|---|---|
| CentOS | 8 | 4.18.0-348.7.1.el8_5.x86_64 | 
| Ubuntu | 20.04 | 5.4.0-135-generic | 
| Ubuntu | 20.04 | 5.4.0-139-generic | 
| Ubuntu | 22.04 | 5.15.0-72-generic | 
操作步骤
动态挂载并行文件存储
1. 创建存储类StorageClass
集群管理员可使用StorageClass为集群定义不同的存储类型。您可通过StorageClass配合PVC动态创建需要的存储资源。
本文介绍通过Kubectl方式创建并行文件存储PFS L2类型的StorageClass,自定义并行文件存储使用所需的模板。
您需要先创建PFS实例,操作步骤请参考创建并行文件系统极速型L2。
                Plain Text
                
            
            1kind: StorageClass
2apiVersion: storage.k8s.io/v1
3metadata:
4  name: pfsl2-sc
5provisioner: spectrumscale.csi.ibm.com
6parameters:
7  mountTargetId: <mountTargetId>    #必填,<mountTargetId>为挂载服务ID
8  pfsId: <pfsId>    #必填,<pfsID>为所需要挂载的并行文件存储PFS L2实例ID
9  #volDirBasePath: <volDirBasePath> #可选,<volDirBasePath>为待挂载PFS系统内的子路径,动态方式创建的volume将基于该路径创建pvc,该路径需要在系统内已经存在,否则pvc会创建失败。
10reclaimPolicy: Delete - PFS 挂载服务ID获取

- PFS L2实例ID获取

2. 创建持久卷声明PVC
注意storageClassName需要指定为上述部署storageClass时填写的storageClass名称。
                Plain Text
                
            
            1kind: PersistentVolumeClaim
2apiVersion: v1
3metadata:
4  name: dynamic-pvc
5spec:
6  accessModes:
7    - ReadWriteMany
8  storageClassName: pfsl2-sc
9  resources:
10    requests:
11      storage: 50Gi # 指定PVC存储空间大小3. 检查PVC状态为Bound
                Plain Text
                
            
            1$ kubectl get pvc dynamic-pvc
2NAME              STATUS    VOLUME                 CAPACITY   ACCESS MODES   STORAGECLASS   AGE
3dynamic-pvc       Bound     pvc-1ab36e4d1d2711e9   50Gi       RWX            pfsl2-sc        4s4. 在Pod中挂载PVC
Pod和PVC需要在同一个namespace下。
                Plain Text
                
            
            1apiVersion: v1
2kind: Pod
3metadata:
4  name: test-pvc-pod
5  namespace: default
6  labels:
7    app: test-pvc-pod
8spec:
9  containers:
10  - name: test-pvc-pod
11    image: nginx
12    volumeMounts:
13      - name: pfs-pvc
14        mountPath: "/pfs-volume"
15  volumes:
16    - name: pfs-pvc
17      persistentVolumeClaim:
18        claimName: dynamic-pvc静态挂载并行文件存储
1. 创建持久卷PV
                Plain Text
                
            
            1apiVersion: v1
2kind: PersistentVolume
3metadata:
4  name: static-pv-pfsl2
5spec:
6  accessModes:
7  - ReadWriteMany
8  capacity:
9    storage: 100Gi
10  csi:
11    driver: spectrumscale.csi.ibm.com #必填
12    volumeHandle: <mountTargetId>;<pfsId>;<mountPath> #必填,分别对应挂载服务ID,PFS L2实例ID以及挂载地址,其中mountPath为待挂载的PFS目录在节点上的绝对路径。- 获取绝对路径
进入PFS L2实例详情页,选择挂载信息,客户端本地挂载路径即为该绝对路径。

2. 创建持久卷声明PVC
                Plain Text
                
            
            1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4  name: static-pvc-pfsl2 # static PVC name
5spec:
6  volumeName: static-pv-pfsl2 # static PV name
7  accessModes:
8  - ReadWriteMany
9  resources:
10    requests:
11      storage: 100Gi2. 检查PVC状态为Bound,并且与对应的PV绑定
                Plain Text
                
            
            1$ kubectl get pvc
2NAME             STATUS   VOLUME          CAPACITY   ACCESS MODES   STORAGECLASS    AGE
3static-pvc-pfsl2  Bound   static-pv-pfsl2   1Gi      RWX                            10s3. 在Pod中挂载PVC
Pod和PVC需要在同一个namespace下。
                Plain Text
                
            
            1apiVersion: v1
2kind: Pod
3metadata:
4  name: test-pvc-pod
5  namespace: default
6  labels:
7    app: test-pvc-pod
8spec:
9  containers:
10  - name: test-pvc-pod
11    image: nginx
12    volumeMounts:
13      - name: pfs-pvc
14        mountPath: "/pfs-volume"
15  volumes:
16    - name: pfs-pvc
17      persistentVolumeClaim:
18        claimName: static-pvc-pfsl2