CCE通过CSI挂载与卸载(极速型L2)
更新时间:2024-11-13
适用范围
本文介绍如何在CCE中使用极速型L2。
前提条件
- 已创建PFS极速型L2文件系统,创建方式请参考:创建文件系统
- 已创建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”
- 点击安装组件,在子页面选择需要关联的PFS L2实例,点击确认即可开始进行CSI组件安装。
注意: 挂载并创建后,解绑或卸载CSI正在使用的PFS L2将会导致容器内读写失败。
验证PFS L2 CSI插件部署结果
- 检查CSI的各个组件均已经处于Running状态。
[root@cce-6lacvooq-pt40tqtt ~]# kubectl get pods -n kube-system |grep pfsl2
cce-csi-pfsl2-plugin-2qmt5 3/3 Running 0 14m
cce-csi-pfsl2-plugin-attacher-677f7cccc5-v5bv5 1/1 Running 0 14m
cce-csi-pfsl2-plugin-attacher-677f7cccc5-x96m9 1/1 Running 0 14m
cce-csi-pfsl2-plugin-fn28n 3/3 Running 0 14m
cce-csi-pfsl2-plugin-operator-57fb466f6b-4q8zw 1/1 Running 0 15m
cce-csi-pfsl2-plugin-provisioner-698697f58f-r257t 1/1 Running 0 14m
cce-csi-pfsl2-plugin-resizer-7f7d678764-kf82r 1/1 Running 0 14m
cce-csi-pfsl2-plugin-snapshotter-559894ddfc-6vdcm 1/1 Running 0 14m
- 检查csi node plugin启动状态。
[root@cce-6lacvooq-pt40tqtt ~]# kubectl get daemonset cce-csi-pfsl2-plugin -n kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
cce-csi-pfsl2-plugin 2 2 2 2 2 scale=true 54m
- 检查是否各个节点的PFS是否已经挂载成功,如果label ready-for-pfsl2 的值为true,代表当前节点已经挂载成功。
[root@cce-6lacvooq-pt40tqtt ~]# kubectl get nodes -L ready-for-pfsl2
NAME STATUS ROLES AGE VERSION READY-FOR-PFSL2
172.16.16.12 Ready <none> 2d v1.22.5 true
172.16.16.14 Ready <none> 2d v1.22.5 true
使用验证
动态方式创建PVC并挂载应用
- 创建动态PVC所需storageclass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: my-pfsl2-storageclass
parameters:
pfsId: <pfsId>
mountTargetId: <mountTargetId>
provisioner: spectrumscale.csi.ibm.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
参数 | 说明 |
---|---|
pfsId | <pfsID>为所需要挂载的并行文件存储PFS L2实例ID |
mountTargetId | <mountTargetId>为挂载点ID(挂载地址)。进入PFS L2实例详情页,选择POSIX挂载,即可看到挂载点ID(挂载地址),如果没有需要点击添加挂载点进行创建。 |
- 创建动态PVC
- 如下为示例PVC所需的yaml配置文件
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-dynamic-pvc
namespace: train
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 64Gi
storageClassName: my-pfsl2-storageclass
参数 | 说明 |
---|---|
namespace | <namespace>可根据实际情况填写 |
storageClassName | <storageClassName>为上一步中创建的storageclass 名字 |
- 创建PVC并查看 例如用户在自身train的命名空间下创建PVC, 检查命名空间,如果不存在,创建命名空间
kubectl create ns train
[root@cce-pr8chk6r-23m4zayg xj]# kubectl create -f dy_pvc.yaml
persistentvolumeclaim/my-dynamic-pvc created
[root@cce-pr8chk6r-23m4zayg xj]# kubectl get pvc -A
NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
train my-dynamic-pvc Bound pvc-264a2323-86d5-48b2-9e28-8e969c7254e1 64Gi RWX
- 创建应用任务,并挂载动态方式创建的PVC
apiVersion: v1
kind: Pod
metadata:
name: my-dynamic-app
namespace: train
spec:
containers:
- name: gpfs-test
image: registry.baidubce.com/public-tools/fio:3.6
command: ["/bin/sh"]
args:
- -c
- ls -lh /data && sleep 360000
volumeMounts:
- mountPath: /data
name: data-vol
volumes:
- name: data-vol
persistentVolumeClaim:
claimName: my-dynamic-pvc
kubectl create -f ./dynamic_app.yaml
静态方式创建PVC并挂载应用
- 创建静态PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 100Gi
csi:
driver: spectrumscale.csi.ibm.com
# <mountTargetId>;<pfsId>;<mountPath>
volumeHandle: mt-qLh53G;pfs-CuJjBu;/pfs/mt-qLh53G
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
kubectl 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
- 创建用户所需的命名空间
kubectl create ns train
- 创建PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
namespace: train
spec:
volumeName: my-pv
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: ""
kubectl create -f ./static_pvc.yaml
- 查看创建好的PVC
[root@cce-hc087zlg-9ah6zdoa staticpv]# kubectl get pvc -n train
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
my-pvc Bound my-pv 100Gi RWX
- 静态方式挂载应用
apiVersion: v1
kind: Pod
metadata:
name: my-static-app
namespace: train
spec:
containers:
- name: gpfs-test
image: registry.baidubce.com/public-tools/fio:3.6
command: ["/bin/sh"]
args:
- -c
- ls -lh /data && sleep 360000
volumeMounts:
- mountPath: /data
name: data-vol
volumes:
- name: data-vol
persistentVolumeClaim:
claimName: my-pvc
卸载步骤
- 登录CCE控制台。
- 依次点击 “集群管理 -> 集群列表”,进入目标集群“详情页”,在“组件管理”中找到安装的PFS L2 CSI存储组件,点击卸载即可。
常见问题
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参数来实现只读模式的访问。