使用并行文件存储PFS L2
更新时间:2024-08-20
容器引擎CCE支持通过创建PV/PVC,并为工作负载挂载数据卷方式使用百度智能云并行文件存储PFS 极速型L2。本文将介绍如何在集群中动态和静态挂载并行文件存储。
使用限制
- 集群Kubernetes版本需大于或等于1.18。
- PFS 极速型L2实例需要和集群在同一VPC内。
- 当前PFS 极速型L2已支持的操作系统版本如下,如有其他操作系统需要使用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 |
前提条件
- 已经在PFS控制台创建好PFS 极速型L2类型的实例
- 集群已安装并行文件存储组件,更多信息请见CCE CSI PFS L2 Plugin 说明。
操作步骤
动态挂载并行文件存储
1. 创建存储类StorageClass
集群管理员可使用StorageClass为集群定义不同的存储类型。您可通过StorageClass配合PVC动态创建需要的存储资源。
本文介绍通过Kubectl方式创建并行文件存储PFS L2类型的StorageClass,自定义并行文件存储使用所需的模板。
您需要先创建PFS实例,操作步骤请参考创建并行文件系统极速型L2。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: pfsl2-sc
provisioner: spectrumscale.csi.ibm.com
parameters:
mountTargetId: #必填,PFS L2实例挂载点ID(挂载地址)
pfsId: #必填,PFS L2实例ID
reclaimPolicy: Delete #
- PFS L2实例挂载点ID获取
- PFS L2实例ID获取
2. 创建持久卷声明PVC
注意storageClassName需要指定为上述部署storageClass时填写的storageClass名称。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: dynamic-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: pfsl2-sc
resources:
requests:
storage: 50Gi # 指定PVC存储空间大小
3. 检查PVC状态为Bound
$ kubectl get pvc dynamic-pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
dynamic-pvc Bound pvc-1ab36e4d1d2711e9 50Gi RWX pfsl2-sc 4s
4. 在Pod中挂载PVC
Pod和PVC需要在同一个namespace下。
apiVersion: v1
kind: Pod
metadata:
name: test-pvc-pod
namespace: default
labels:
app: test-pvc-pod
spec:
containers:
- name: test-pvc-pod
image: nginx
volumeMounts:
- name: pfs-pvc
mountPath: "/pfs-volume"
volumes:
- name: pfs-pvc
persistentVolumeClaim:
claimName: dynamic-pvc
静态挂载并行文件存储
1. 创建持久卷PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: static-pv-pfsl2
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 100Gi
csi:
driver: spectrumscale.csi.ibm.com #必填
volumeHandle: mt-qLh53G;pfs-CuJjBu;/pfs/mt-qLh53G #必填 <mountTargetId>;<pfsId>;<mountPath>
说明
- storageClassName在静态PV为空,无需填写。
- volumeHandle的值需要根据挂载点ID,PFS L2实例ID以及挂载地址拼接,通过;英文分号隔开
- 当前PFS L2的挂载地址值只需在挂载点ID前添加/pfs前缀即可,示例:这个pfs实例的挂载点id为mt-qLh53G,挂载地址为:/pfs/mt-qLh53G
2. 创建持久卷声明PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: static-pvc-pfsl2 # static PVC name
spec:
volumeName: static-pv-pfsl2 # static PV name
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
2. 检查PVC状态为Bound,并且与对应的PV绑定
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
static-pvc-pfsl2 Bound static-pv-pfsl2 1Gi RWX 10s
3. 在Pod中挂载PVC
Pod和PVC需要在同一个namespace下。
apiVersion: v1
kind: Pod
metadata:
name: test-pvc-pod
namespace: default
labels:
app: test-pvc-pod
spec:
containers:
- name: test-pvc-pod
image: nginx
volumeMounts:
- name: pfs-pvc
mountPath: "/pfs-volume"
volumes:
- name: pfs-pvc
persistentVolumeClaim:
claimName: static-pvc-pfsl2