使用数据湖存储加速工具RapidFS
更新时间:2025-03-25
容器引擎CCE支持通过创建PV/PVC,并为工作负载挂载数据卷方式使用百度智能云数据湖存储加速工具RapidFS。本文将介绍如何在集群中动态和静态挂载数据湖存储加速工具RapidFS。
使用限制
- 集群Kubernetes版本需大于或等于1.18。
- RapidFS实例需要和集群在同一VPC内。
前提条件
- 在数据湖存储加速工具控制台创建RapidFS实例,具体操作请参见新建缓存实例。
- 在数据湖存储加速工具控制台新增导入数据源,具体操作请参见导入数据源。
- 在CCE控制台Helm模板 > 百度智能云模板中使用”cce-csi-rapidfs-plugin“模板在目标集群中安装RapidFS组件。
操作步骤
动态挂载RapidFS
1. 创建存储类StorageClass
集群管理员可使用StorageClass为集群定义不同的存储类型。您可通过StorageClass配合PVC动态创建需要的存储资源。
本文介绍通过Kubectl方式创建RapidFS类型的StorageClass,自定义RapidFS存储使用所需的模板。
Plain Text
1kind: StorageClass
2apiVersion: storage.k8s.io/v1
3metadata:
4 name: rapidfs-sc
5provisioner: csi-rapidfsplugin
6parameters:
7 clusterAddress: #必填,目标数据源的挂载地址,数据源关联的RapidFS实例必须和集群在同一个VPC下
注意:
- 挂载地址对应的数据源关联的权限组需要为集群中的Pod配置访问的权限(只读或读写权限),否则容器无法进行读写操作,可以直接设置CCE集群的VPC网段或关联默认权限组。
为Pod挂载RapidFS类型PV时默认会通过创建fuse pod进行挂载,支持自定义Fuse Pod相关配置满足业务灵活使用;
如无特殊需求,建议以下参数使用默认值即可。如果配置的 CPU 或 Memory 过小,可能影响访问 rapidfs 存储的性能或可用性。
Plain Text
1parameters:
2 memRequest: 4Gi #可选,指定fuse pod内存的请求值,默认为4Gi
3 memLimit: 64Gi #可选,指定fuse pod内存的上限值,默认为64Gi
4 cpuRequest: 4000m #可选,指定fuse pod cpu的请求值,默认为4000m
5 cpuLimit: 160000m #可选,指定fuse pod cpu的请求值,默认为160000
6 mountOptions: "" #可选,fuse pod启动参数,多个使用英文逗号分隔,EnableNuma=1时候挂载进程绕开和绑定本机ip网卡相同的numa节点(仅支持设置为0或1,0表示不绑定),支持添加参数"EnableNuma=1,NumaNode=x"指定绑定的numa节点,x为需要绑定的服务器numa节点
7 mountEnv: "" #可选,fuse pod环境变量配置,默认为空,多个使用英文逗号分隔
说明:
- Fuse Pod:用于将数据源挂载到节点的本地路径上,并且用户的容器通过Fuse Pod的访问数据源。
- 上面为Fuse Pod的配置参数,选填,若不设置直接使用默认值。
2. 创建持久卷声明PVC
storageClassName需要指定为上述部署storageClass时填写的storageClass名称。
Plain Text
1kind: PersistentVolumeClaim
2apiVersion: v1
3metadata:
4 name: csi-pvc-rapidfs
5 namespace: default
6spec:
7 accessModes:
8 - ReadWriteMany
9 storageClassName: rapidfs-sc # 需要指定为上述部署storageClass时填写的名称
10 resources:
11 requests:
12 storage: 50Gi # 用户指定PVC存储空间(说明:RapidFS不支持限制存储容量,容器实际可访问的为数据源绑定的BOS存储桶目录。)
3. 检查PVC状态为Bound
Plain Text
1$ kubectl get pvc csi-pvc-rapidfs
2NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
3csi-pvc-rapidfs Bound pvc-1ab36e4d1d2711e9 50Gi RWX rapidfs-sc 4s
4. 在Pod中挂载PVC
Pod和PVC需要在同一个namespace下。
Plain Text
1apiVersion: v1
2kind: Pod
3metadata:
4 name: test-pvc-pod
5 namespace: default # Pod和PVC在同一个namespace下
6 labels:
7 app: test-pvc-pod
8spec:
9 containers:
10 - name: test-pvc-pod
11 image: nginx
12 volumeMounts:
13 - name: rapidfs-pvc
14 mountPath: "/rapidfs-volume"
15 volumes:
16 - name: rapidfs-pvc
17 persistentVolumeClaim:
18 claimName: csi-pvc-rapidfs
静态挂载RapidFS
1. 创建持久卷PV
Plain Text
1apiVersion: v1
2kind: PersistentVolume
3metadata:
4 name: static-pv-rapidfs
5spec:
6 accessModes:
7 - ReadWriteMany
8 storageClassName: # storageClassName在静态PV为空,无需填写
9 capacity:
10 storage: 100Gi
11 csi:
12 driver: csi-rapidfsplugin
13 volumeHandle:
14 volumeAttributes:
15 clusterAddress: #必填,目标数据源的挂载地址,数据源关联的RapidFS实例必须和集群在同一个VPC下
注意:
- 挂载地址对应的数据源关联的权限组需要为集群中的Pod配置访问的权限(只读或读写权限),否则容器无法进行读写操作,可以直接设置CCE集群的VPC网段或关联默认权限组。
为Pod挂载RapidFS类型PV时默认会通过创建fuse pod进行挂载,支持自定义Fuse Pod相关配置满足业务灵活使用;
如无特殊需求,建议以下参数使用默认值即可。如果配置的 CPU 或 Memory 过小,可能影响访问 rapidfs 存储的性能或可用性。
Plain Text
1parameters:
2 memRequest: 4Gi #可选,指定fuse pod内存的请求值,默认为4Gi
3 memLimit: 64Gi #可选,指定fuse pod内存的上限值,默认为64Gi
4 cpuRequest: 4000m #可选,指定fuse pod cpu的请求值,默认为4000m
5 cpuLimit: 160000m #可选,指定fuse pod cpu的请求值,默认为160000m
6 mountOptions: "" #可选,fuse pod启动参数,多个使用英文逗号分隔,EnableNuma=1时候挂载进程绕开和绑定本机ip网卡相同的numa节点(仅支持设置为0或1,0表示不绑定),支持添加参数"EnableNuma=1,NumaNode=x"指定绑定的numa节点,x为需要绑定的服务器numa节点
7 mountEnv: "" #可选,fuse pod环境变量配置,默认为空,多个使用英文逗号分隔
说明:
- Fuse Pod:用于将数据源挂载到节点的本地路径上,并且用户的容器通过Fuse Pod的访问数据源。
- 上面为Fuse Pod的配置参数,选填,若不设置直接使用默认值。
2. 创建持久卷声明PVC
Plain Text
1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4 name: static-pvc-rapidfs # 指定PVC名称
5spec:
6 volumeName: static-pv-rapidfs # 指定PV的名称,与上述PV保持一致
7 accessModes:
8 - ReadWriteMany
9 resources:
10 requests:
11 storage: 100Gi # 用户指定PVC存储空间(说明:RapidFS不支持限制存储容量,容器实际可访问的为数据源绑定的BOS存储桶目录。)
2. 检查PVC状态为Bound,并且与对应的PV绑定
Plain Text
1$ kubectl get pvc static-pvc-rapidfs
2NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
3static-pvc-rapidfs Bound static-pv-rapidfs 100Gi RWX rapidfs-static-sc 10s
3. 在Pod中挂载PVC
Pod和PVC需要在同一个namespace下。
Plain Text
1apiVersion: v1
2kind: Pod
3metadata:
4 name: test-pvc-pod
5 namespace: default # Pod和PVC在同一个namespace下
6 labels:
7 app: test-pvc-pod
8spec:
9 containers:
10 - name: test-pvc-pod
11 image: nginx
12 volumeMounts:
13 - name: rapidfs-pvc
14 mountPath: "/rapidfs-volume"
15 volumes:
16 - name: rapidfs-pvc
17 persistentVolumeClaim:
18 claimName: csi-pvc-rapidfs