操作场景
腾讯云容器服务 TKE 支持通过创建 PersistentVolume(PV)和 PersistentVolumeClaim(PVC),并为工作负载挂载数据卷的方式使用腾讯云数据加速器 GooseFS。本文介绍如何在 TKE 集群中为工作负载挂载对象存储。
准备工作
1. 安装数据加速器扩展组件
1. 登录 容器服务控制台,选择左侧导航栏中的集群。
2. 在集群管理页面,单击目标集群 ID,进入集群详情页。
3. 选择左侧导航中的组件管理,在组件管理页面中单击新建。
4. 在新建组件管理页面,勾选 GooseFS(腾讯云数据加速器)组件。
5. 单击完成。
2. 创建数据加速器
操作步骤
通过控制台使用数据加速器
步骤1:创建支持 GooseFS-CSI 静态配置的 PV
注意:
1. 在目标集群详情页面,选择左侧导航中的存储,在 PersistentVolume 页面单击新建。
2. 在新建存储页面,参考以下信息创建 PV。如下图所示:

主要参数信息如下:
来源设置:选择静态创建。
名称:自定义,本文以
goosefs-pv
为例。Provisioner:选择为数据加速 GooseFS。
读写权限:数据加速器仅支持多机读写。
说明:
单机读写:当前仅支持云硬盘同时挂载到一台机器上,因此只能处理单机器的数据读写。
多机读写:文件存储/对象存储/数据加速器支持同时挂载到多台机器,可以处理多机器的数据读写。
GooseFS 集群:按需选择可用 GooseFS 即可。
GooseFS 命名空间:填写已在 GooseFS 集群中创建的命名空间,本文以 goosefs-test 为例。
注意:
填写的 GooseFS 命名空间需已存在,请前往数据加速器控制台提前新建。
命名空间子路径:填写已在 GooseFS 集群中命名空间的子路径。
GooseFS FUSE:
属性键 | 说明 | 默认值 | 必填项 |
-Xms4g | jvm 最小内存 | 4g | 否 |
-Xmx8g | jvm 最大内存 | 8g | 否 |
-XX:MaxDirectMemorySize | 堆外最大内存 | 8g | 否 |
-XX:+UseG1GC | jvm gc 算法 | g1 | 否 |
-Dgoosefs.fuse.web.enabled | 是否开启监控 | false | 否 |
-Dgoosefs.fuse.web.port | 监控的端口 | 9213 | 否 |
注意:
不同的挂载项请以空格进行间隔。
开启监控的情况 (goosefs.fuse.web.enabled=true),需保证设置的端口 (goosefs.fuse.web.port) 唯一。
挂载选项:GooseFS 工具支持将存储桶挂载到本地,挂载后可直接操作对象存储中的对象,此项用于设置相关限制条件。本例中挂载选项 allow_other 表示允许其他用户访问;direct_io 表示启用直接 I/O。更多参数可参见 FUSE 挂载参数列表 文档。
3. 单击创建 PersistentVolume 即可。
步骤2:创建 PVC 绑定 PV
注意:
请勿绑定状态为 Bound 的 PV。
1. 在目标集群详情页,选择左侧导航中的存储,在 PersistentVolumeClaim 页面单击新建。
2. 在新建存储页面,参考以下信息创建 PVC。如下图所示:

名称:自定义,本文以
goosefs-pvc
为例。命名空间:选择为
kube-system
。Provisioner:选择数据加速器 GooseFS。
读写权限:数据加速器仅支持多机读写。
PersistentVolume:选择在 步骤1 中已创建的 PV,本文以
goosefs-pv
为例。3. 单击创建 PersistentVolumeClaim 即可。
步骤3:创建 Pod 使用的 PVC
说明:
本步骤以创建工作负载 Deployment 为例。
1. 在目标集群详情页,选择左侧导航中的工作负载,在 Deployment 页面单击新建。
2. 在新建 Deployment 页面,参考 创建 Deployment 进行创建,并设置数据卷挂载。如下图所示:

数据卷(选填):
挂载方式:选择使用已有 PVC。
数据卷名称:自定义,本文以
goosefs
为例。选择 PVC:选择已在 步骤2 中创建的 PVC,本文以选择
goosefs-pvc
为例。实例内容器:单击添加挂载点,进行挂载点设置。
数据卷:选择为该步骤中所添加的数据卷 “goosefs”。
目标路径:填写目标路径。
挂载子路径:仅挂载选中数据卷中的子路径或单一文件。
3. 单击创建 Deployment 即可。
通过 YAML 文件使用数据加速器
创建支持 GooseFS-CSI 动态配置的 PV
可通过 YAML 创建 PV 以支持 GooseFS-CSI 动态配置,模板如下:
apiVersion: v1kind: PersistentVolumemetadata:name: goosefs-pvspec:accessModes:- ReadWriteManycapacity:storage: 10Gicsi:driver: com.tencent.cloud.csi.goosefsvolumeAttributes:goosefsPath: /borgerli-1251707795javaOptions: -Dgoosefs.master.embedded.journal.addresses=172.21.112.141:9202,172.21.112.133:9202,172.21.112.30:9202-Xms4g -Xmx8g -XX:MaxDirectMemorySize=8g -XX:+UseG1GC -Dgoosefs.fuse.web.enabled=true-Dgoosefs.fuse.web.port=9213volumeHandle: goosefs-pvmountOptions:- allow_other- direct_iopersistentVolumeReclaimPolicy: RetainvolumeMode: Filesystem
创建 PVC 绑定 PV
可通过 YAML 创建绑定上述 PV 的 PVC,模板如下:
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: goosefs-pvcnamespace: kube-systemspec:accessModes:- ReadWriteManyresources:requests:storage: 10GistorageClassName: ""volumeMode: FilesystemvolumeName: goosefs-pvstatus:accessModes:- ReadWriteManycapacity:storage: 10Gi
创建 Pod 使用 PVC
可通过 YAML 创建 Pod,模板如下:
apiVersion: v1kind: Podmetadata:name: pod-goosefsspec:containers:- name: pod-goosefscommand: ["tail", "-f", "/etc/hosts"]image: "centos:latest"volumeMounts:- mountPath: /dataname: goosefsresources:requests:memory: "128Mi"cpu: "0.1"volumes:- name: goosefspersistentVolumeClaim:# Replaced by your pvc name.claimName: goosefs-pvc
使用建议
同一个 GooseFS 集群使用同一个 PVC
业务 Pod 部署到节点后,goosefs csi 会创建一个 fuse pod 负责挂载,会为每一个 volumeHandle 创建一个 fuse pod。fuse pod 使用的资源比较多,默认请求 2GB 内存,建议相同 GooseFS 集群的业务使用同一个 PVC。运行业务 Pod 的节点,只运行一个 fuse pod,最小化资源使用。
fuse pod 优先级
fuse pod 使用的资源比较多,默认请求 2GB 内存。存在以下两个问题:
在节点资源紧张时,无法调度;
运行后,节点资源紧张,有可能被驱逐,导致存量业务受影响。
以上两个问题的解决方案,可以为 fuse pod 加上 priorityClassName: system-node-critical。但同时会引起第三个问题:在调度时如果节点内存不足,有可能驱逐其他 Pod,影响业务。需要根据使用场景进行配置。

调整 fuse pod 资源需求
可以修改 configmap -nkube-system goosefs-csi-fuse-config,调整 podtemplate 的资源配置:
