CCE通过CSI挂载与卸载(极速型L2)
更新时间:2025-07-09
适用范围
本文介绍如何在CCE中使用极速型L2。
前提条件
- 已创建PFS极速型L2文件系统,创建方式请参考:创建文件系统。
- 已创建挂载服务并绑定PFS实例和设置主PFS,具体步骤,请参见挂载服务中创建挂载服务、绑定存储实例和设置主PFS。
- 已创建CCE集群,创建方式请参考此处。 在添加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 |
注:kubernetes版本需要CCE产品支持(version >= 1.18)
- 安装kubernetes 控制行工具kubectl, 关于
kubectl
安装和配置详情,请参见 Kubernetes 文档。 - 安装chart控制行工具 helm, 关于helm的安装和配置详情,请参考 helm工具文档。
安装步骤
安装PFS L2 CSI插件
- 登录CCE控制台。
- 依次点击 “集群管理 -> 集群列表”,选择要安装插件等目标CCE集群。
- 进入到集群详情页,点击左侧组件管理,选择存储类组件,选择“CCE CSI PFS L2 Plugin”
- 点击安装组件,在子页面选择需要关联的挂载服务,点击确认即可开始进行CSI组件安装。
注意:
- 挂载并创建后,解绑或卸载CSI正在使用的PFS L2将会导致容器内读写失败。
- 当挂载服务绑定多个PFS实例时,CSI插件若想正常挂载多个PFS实例,请确保CSI版本>=1.0.8。如果CCE集群已安装的PFS L2 CSI插件版本低于1.0.8,将无法正常挂载多个PFS实例。请参考 CCE CSI PFS L2 Plugin 版本升级方式 进行版本升级。
验证PFS L2 CSI插件部署结果
- 检查CSI的各个组件均已经处于Running状态。
Plain Text
1[root@cce-6lacvooq-pt40tqtt ~]# kubectl get pods -n kube-system |grep pfsl2
2cce-csi-pfsl2-plugin-2qmt5 3/3 Running 0 14m
3cce-csi-pfsl2-plugin-attacher-677f7cccc5-v5bv5 1/1 Running 0 14m
4cce-csi-pfsl2-plugin-attacher-677f7cccc5-x96m9 1/1 Running 0 14m
5cce-csi-pfsl2-plugin-fn28n 3/3 Running 0 14m
6cce-csi-pfsl2-plugin-operator-57fb466f6b-4q8zw 1/1 Running 0 15m
7cce-csi-pfsl2-plugin-provisioner-698697f58f-r257t 1/1 Running 0 14m
8cce-csi-pfsl2-plugin-resizer-7f7d678764-kf82r 1/1 Running 0 14m
9cce-csi-pfsl2-plugin-snapshotter-559894ddfc-6vdcm 1/1 Running 0 14m
- 检查csi node plugin启动状态。
Plain Text
1[root@cce-6lacvooq-pt40tqtt ~]# kubectl get daemonset cce-csi-pfsl2-plugin -n kube-system
2NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
3cce-csi-pfsl2-plugin 2 2 2 2 2 scale=true 54m
- 检查是否各个节点的PFS是否已经挂载成功,如果label ready-for-pfsl2 的值为true,代表当前节点已经挂载成功。
Plain Text
1[root@cce-6lacvooq-pt40tqtt ~]# kubectl get nodes -L ready-for-pfsl2
2NAME STATUS ROLES AGE VERSION READY-FOR-PFSL2
3172.16.16.12 Ready <none> 2d v1.22.5 true
4172.16.16.14 Ready <none> 2d v1.22.5 true
使用验证
动态方式创建PVC并挂载应用
- 创建动态PVC所需storageclass
Bash
1apiVersion: storage.k8s.io/v1
2kind: StorageClass
3metadata:
4 name: my-pfsl2-storageclass
5parameters:
6 pfsId: <pfsId>
7 mountTargetId: <mountTargetId>
8 #volDirBasePath: <volDirBasePath>
9provisioner: spectrumscale.csi.ibm.com
10reclaimPolicy: Delete
11volumeBindingMode: Immediate
参数 | 说明 |
---|---|
pfsId | <pfsID>为所需要挂载的并行文件存储PFS L2实例ID ![]() |
mountTargetId | <mountTargetId>为挂载服务ID。进入PFS L2实例详情页,选择挂载信息,即可看到挂载服务ID。![]() |
volDirBasePath | <volDirBasePath>(可选参数)为待挂载PFS系统内的子路径,动态方式创建的volume将基于该路径创建pvc,该路径需要在系统内已经存在,否则pvc会创建失败。 |
- 创建动态PVC
- 如下为示例PVC所需的yaml配置文件
Plain Text
1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4 name: my-dynamic-pvc
5 namespace: train
6spec:
7 accessModes:
8 - ReadWriteMany
9 resources:
10 requests:
11 storage: 64Gi
12 storageClassName: my-pfsl2-storageclass
参数 | 说明 |
---|---|
namespace | <namespace>可根据实际情况填写 |
accessModes | 访问模式,支持ReadWriteOnce、ReadWriteMany和ReadWriteOncePod三种模式 |
storageClassName | <storageClassName>为上一步中创建的storageclass 名字 |
- 创建PVC并查看 例如用户在自身train的命名空间下创建PVC, 检查命名空间,如果不存在,创建命名空间
Plain Text
1kubectl create ns train
Plain Text
1[root@cce-pr8chk6r-23m4zayg xj]# kubectl create -f dy_pvc.yaml
2persistentvolumeclaim/my-dynamic-pvc created
3[root@cce-pr8chk6r-23m4zayg xj]# kubectl get pvc -A
4NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
5train my-dynamic-pvc Bound pvc-264a2323-86d5-48b2-9e28-8e969c7254e1 64Gi RWX
- 创建应用任务,并挂载动态方式创建的PVC
Plain Text
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 volumes:
18 - name: data-vol
19 persistentVolumeClaim:
20 claimName: my-dynamic-pvc
Plain Text
1kubectl create -f ./dynamic_app.yaml
静态方式创建PVC并挂载应用
- 创建静态PV
Plain Text
1apiVersion: v1
2kind: PersistentVolume
3metadata:
4 name: my-pv
5spec:
6 accessModes:
7 - ReadWriteMany
8 capacity:
9 storage: 100Gi
10 csi:
11 driver: spectrumscale.csi.ibm.com
12 # <mountTargetId>;<pfsId>;<mountPath>
13 volumeHandle: mt-qLh53G;pfs-CuJjBu;/pfs/pfs-CuJjBu
14 persistentVolumeReclaimPolicy: Retain
15 volumeMode: Filesystem
Plain Text
1kubectl create -f my_pv.yaml
参数 | 参数说明 | 配置值选项 | 是否必须 |
---|---|---|---|
metadata.name | pv名称,用户根据自身需求进行配置 | 字符串 | 必配 |
spec.accessModes | 访问模式 | ReadWriteOnce ReadWriteMany ReadWriteOncePod |
必配 |
spec.capacity.storage | 容量 | 值类型 | 必配 |
spec.csi.driver | csi的driver类型 | spectrumscale.csi.ibm.com | 必配 |
spec.csi.volumeHandle | 存储的句柄 | <mountTargetId>;<pfsId>;<mountPath>![]() |
必配 |
persistentVolumeReclaimPolicy | 存储空间的回收策略 | Retain Delete Recycle |
|
volumeMode | 卷模式 | Filesystem | 必配 |
- 基于用户静态PV创建用户PVC
- 创建用户所需的命名空间
Plain Text
1kubectl create ns train
- 创建PVC
Plain Text
1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4 name: my-pvc
5 namespace: train
6spec:
7 volumeName: my-pv
8 accessModes:
9 - ReadWriteMany
10 resources:
11 requests:
12 storage: 100Gi
13 storageClassName: ""
Plain Text
1kubectl create -f ./static_pvc.yaml
- 查看创建好的PVC
Plain Text
1[root@cce-hc087zlg-9ah6zdoa staticpv]# kubectl get pvc -n train
2NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
3my-pvc Bound my-pv 100Gi RWX
- 静态方式挂载应用
Plain Text
1apiVersion: v1
2kind: Pod
3metadata:
4 name: my-static-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 volumes:
18 - name: data-vol
19 persistentVolumeClaim:
20 claimName: my-pvc
卸载步骤
- 登录CCE控制台。
- 依次点击 “集群管理 -> 集群列表”,进入目标集群“详情页”,在“组件管理”中找到安装的PFS L2 CSI存储组件,点击卸载即可。
注意:该方式卸载时,最多支持该CCE集群下50个节点同时卸载。若超过50个节点,则会导致部分节点卸载失败。对于卸载失败的节点,请后续手动进行卸载。
常见问题
1. 在控制台安装PFS L2 CSI成功后是否代表全部安装流程结束可以创建PVC了?
答:在控制台安装PFS L2 CSI插件后,插件实例会显示“已安装”状态,表示CSI组件已经安装成功,同时需要等待ready-for-pfsl2 节点label 变为true之后,再进行PVC的创建。
2. PFS L2 CSI插件是否支持污点容忍调度?
答:CSI 插件作为基础组建会默认容忍所有污点,因此节点污点不会影响该节点上CSI插件部署。
3. 已经创建好PVC并在workload挂载使用,PFS L2 CSI插件是否支持独立卸载重新安装?
答:支持。PFS L2 CSI插件卸载重新安装不会影响已经创建好的PVC和用户workload,插件卸载后只会影响新创建PVC。
4. 已经部署完毕的PFS L2 CSI插件是否支持新增CCE节点?
答:支持,新增用户端节点只需要加入到CCE集群里即可,新节点会自动完成 PFS L2 CSI plugin的初始化和启动,需要注意的是新加入的节点在虚机创建后不支持修改hostname。
5. PFS L2 CSI是否支持PVC的ReadOnlyMany访问模式?
答: 不支持,您可以通过在pod的spec中指定readOnly: true参数来实现只读模式的访问。