CCE通过CSI挂载与卸载(极速型L3)
更新时间:2026-09-08
适用范围
本文介绍如何在CCE中通过CSI使用PFS极速型L3(PFS L3)。
前提条件
- 已创建PFS极速型L3文件系统和挂载点,创建方式请参考:快速入门(极速型L3)。
- 已创建CCE集群,创建方式请参考:创建集群。
安装步骤
安装PFS L3 CSI插件
- 登录百度智能云容器引擎CCE控制台。
- 依次点击 "集群管理 -> 集群列表",选择要安装插件的目标CCE集群。

- 进入集群详情页,点击左侧 运维与管理 -> 组件管理,选择存储类组件,选择"CCE CSI PFS L3 Plugin"。

- 点击安装,确认安装组件。

Fuse Server组件资源使用说明:
- Fuse Server负责管理pfs_client daemon进程,其CPU资源消耗较高,并会直接影响存储性能。
- CPU推荐配置:CPU使用量与节点总带宽相关。推荐每8Gb/s带宽分配1 Core。请据此规则调整CPU配置。
- 例如,对于配置了100Gb/s网卡的节点,推荐的CPU请求量为
(100 / 8) * 1 = 12.5Cores。- 可根据实际期望吞吐情况,在组件管理-CCE CSI PFS L3 Plugin-修改配置页面调整其CPU资源配置。
- 调整生效方式:Fuse Server DaemonSet默认更新策略为
OnDelete,在组件管理-CCE CSI PFS L3 Plugin-修改配置页面修改CPU或Memory后,需要手动删除节点上原有的Fuse Server Pod,以触发重建使新配置生效。为确保业务稳定性,建议在业务低峰期执行此操作。
验证PFS L3 CSI插件部署结果
- 检查CSI的各个组件均已处于Running状态
Bash
1[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get pods -nkube-system | grep pfsl3
2csi-pfsl3plugin-controller-server-0 3/3 Running 0 5m35s
3csi-pfsl3plugin-controller-server-1 3/3 Running 0 5m28s
4csi-pfsl3plugin-node-server-2-jqvx6 3/3 Running 0 5m35s
5csi-pfsl3plugin-node-server-2-zlxvw 3/3 Running 0 5m35s
JSON
1[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get pods -npfsl3-system | grep pfsl3
2pfsl3-fuse-server-p84x7 1/1 Running 0 6m13s
3pfsl3-fuse-server-pff2l 1/1 Running 0 6m13s
使用验证
动态方式创建PVC并挂载应用
- 创建 StorageClass
YAML
1apiVersion: storage.k8s.io/v1
2kind: StorageClass
3metadata:
4 name: pfsl3-sc
5provisioner: csi-pfsl3plugin
6parameters:
7 pfsl3Address: <pfsl3Address>
8 #volDirBasePath: <volDirBasePath>
9 archiveOnDelete: "false"
10reclaimPolicy: Delete
| 参数 | 说明 |
|---|---|
| pfsl3Address | 必填,PFS极速型L3的挂载点地址。在“PFS实例详情页->挂载点信息”中查看![]() |
| volDirBasePath | 可选,为待挂载PFS极速型L3文件系统内子路径。动态方式创建的volume将基于该路径创建PVC。如果路径不存在,挂载时会默认创建。 |
| archiveOnDelete | 可选,删除PVC时后端存储的文件数据是否被真正删除,只在reclaimPolicy为Delete时生效。archived-{pvName}.{timestamp}。使用建议:在高频创建和删除PV的场景下,如果PV目录下有大量子目录或文件建议设置为 true(大目录的删除较慢),否则可能导致CSI控制器任务队列阻塞,新PV创建排队 |
| reclaimPolicy | 必填,PV的回收策略,控制删除PVC后的资源处理方式。Delete:删除PVC时,自动释放PV,后端子目录数据是否真正删除,由archiveOnDelete参数进一步控制。Retain:删除PVC时,PV保留,后端数据不会删除,需手动清理。适用于对数据安全性要求高的场景。 |
JSON
1# 创建SC
2[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create -f sc.yaml
3storageclass.storage.k8s.io/pfsl3-sc created
4
5# 查看SC状态
6[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get sc -A | grep pfsl3-sc
7pfsl3-sc csi-pfsl3plugin Delete Immediate false 63s
- 创建动态 PVC
YAML
1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4 name: dynamic-pvc-pfsl3
5 namespace: train
6spec:
7 accessModes:
8 - ReadWriteMany
9 resources:
10 requests:
11 storage: 64Gi
12 storageClassName: pfsl3-sc
| 参数 | 说明 |
|---|---|
| namespace | 可根据实际情况填写 |
| accessModes | 访问模式,支持ReadWriteMany |
| storageClassName | 为上一步中创建的StorageClass名称 |
Bash
1# 如命名空间不存在,先创建命名空间
2[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create ns train
3namespace/train created
4
5# 创建PVC
6[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create -f dy_pvc.yaml
7persistentvolumeclaim/pfsl3-pvc created
8
9# 查看PVC状态
10[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get pvc -ntrain
11NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
12dynamic-pvc-pfsl3 Bound pvc-38200600-8b98-44bf-877b-7b90e7b615cf 64Gi RWX pfsl3-sc <unset> 18s
- 创建应用任务并挂载动态PVC
当前支持挂载异常恢复, 需要在pod的volumeMounts配置中加上mountPropagation: HostToContainer参数。
YAML
1apiVersion: v1
2kind: Pod
3metadata:
4 name: my-dynamic-app
5 namespace: train
6spec:
7 containers:
8 - name: gpfs-test
9 image: registry.baidubce.com/public-tools/fio:3.6
10 command: ["/bin/sh"]
11 args:
12 - -c
13 - ls -lh /data && sleep 360000
14 volumeMounts:
15 - mountPath: /data
16 name: data-vol
17 mountPropagation: HostToContainer
18 volumes:
19 - name: data-vol
20 persistentVolumeClaim:
21 claimName: dynamic-pvc-pfsl3
Bash
1# 创建应用
2[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create -f dynamic_app.yaml
3pod/my-dynamic-app created
4
5# 查看应用状态
6[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get pods -ntrain
7NAME READY STATUS RESTARTS AGE
8my-dynamic-app 1/1 Running 0 41s
静态方式创建PVC并挂载应用
- 创建 PV
YAML
1apiVersion: v1
2kind: PersistentVolume
3metadata:
4 name: static-pv-pfsl3
5spec:
6 accessModes:
7 - ReadWriteMany
8 capacity:
9 storage: 100Gi
10 csi:
11 driver: csi-pfsl3plugin
12 volumeHandle: <pfsl3Address>;<subpath>
13 persistentVolumeReclaimPolicy: Retain
| 参数 | 参数说明 | 配置值选项 | 是否必须 |
|---|---|---|---|
| metadata.name | pv名称,用户根据自身需求进行配置 | 字符串 | 必配 |
| spec.accessModes | 访问模式 | ReadWriteMany | 必配 |
| spec.capacity.storage | 容量 | 值类型 | 必配 |
| spec.csi.driver | csi的driver类型 | csi-pfsl3plugin | 必配 |
| spec.csi.volumeHandle | 存储的句柄 | <pfsl3Address>;<subpath> |
必配 |
| persistentVolumeReclaimPolicy | 存储空间的回收策略 | Retain | 选配 |
JSON
1# 创建PV
2[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create -f static_pv.yaml
3persistentvolume/static-pv-pfsl3 created
4
5# 查看PV状态
6[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get pv -ntrain
7NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
8static-pv-pfsl3 100Gi RWX Retain Available <unset> 36s
- 创建 PVC
YAML
1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4 name: static-pvc-pfsl3
5 namespace: train
6spec:
7 volumeName: static-pv-pfsl3
8 accessModes:
9 - ReadWriteMany
10 resources:
11 requests:
12 storage: 100Gi
JSON
1# 如命名空间不存在,先创建命名空间
2[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create ns train
3namespace/train created
4
5# 创建PVC
6[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create -f static_pvc.yaml
7persistentvolumeclaim/static-pvc-pfsl3 created
8
9# 查看PVC状态
10[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get pvc -ntrain
11NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
12static-pvc-pfsl3 Bound static-pv-pfsl3 100Gi RWX <unset> 10s
- 创建应用任务并挂载静态PVC
当前支持挂载异常恢复, 需要在pod 的 volumeMounts 配置中加上mountPropagation: HostToContainer 参数。
YAML
1apiVersion: v1
2kind: Pod
3metadata:
4 name: my-static-app
5 namespace: train
6spec:
7 containers:
8 - name: pfsl3-test
9 image: registry.baidubce.com/public-tools/fio:3.6
10 command: ["/bin/sh"]
11 args:
12 - -c
13 - ls -lh /data && sleep 360000
14 volumeMounts:
15 - mountPath: /data
16 name: data-vol
17 mountPropagation: HostToContainer
18 volumes:
19 - name: data-vol
20 persistentVolumeClaim:
21 claimName: static-pvc-pfsl3
Bash
1# 创建应用
2[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl create -f static_app.yaml
3pod/my-static-app created
4
5# 查看应用状态
6[root@cce-ig-3xyqv7tu-arymhnji-4cmbup97 ~]# kubectl get pod -ntrain
7NAME READY STATUS RESTARTS AGE
8my-static-app 1/1 Running 0 62s
卸载步骤
- 登录百度智能云容器引擎CCE控制台。
- 依次点击 “集群管理 -> 集群列表”,进入目标CCE集群“集群详情”页面。
- 点击左侧 “运维与管理 -> 组件管理”,选择存储类组件,找到安装的"CCE CSI PFS L3 Plugin"存储组件。

- 点击“更多 -> 卸载”
常见问题
1. 已经创建好PVC并在workload挂载使用,卸载PFS L3 CSI插件对workload是否有影响?
答:有影响。卸载PFS L3 CSI插件会停掉pfs_client daemon进程,导致业务workload读写pfsl3失败。正确的做法是先停止所有业务workload再卸载CSI插件。
2. 已经部署完毕的PFS L3 CSI插件是否支持新增CCE节点?
答:支持,新增用户端节点只需要加入到CCE集群里即可,新节点会自动完成 PFS L3 CSI plugin的初始化和启动。
3. PFS L3 CSI是否支持PVC的ReadOnlyMany访问模式?
答: PVC的访问模式仅支持ReadWriteMany,您可以通过在pod的spec中指定readOnly: true参数来实现只读模式的访问。
评价此篇文章

