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