Skip to main content

腾讯云 TKE 使用 CFS 共享存储在 Pod 之间数据共享

腾讯云文件存储 CFS 提供了标准的 NFS 及 CIFS/SMB 文件系统访问协议,为多个 CVM 实例或其他计算服务提供共享的数据源,支持弹性容量和性能的扩展,是一种高可用、高可靠的分布式文件系统,适合于大数据分析、媒体处理和内容管理等场景。

腾讯云容器服务 TKE 支持通过创建 PV/PVC,并为工作负载挂载数据卷的方式使用腾讯云文件存储 CFS。

相关概念
  • PersistentVolume(PV):集群内的存储资源。PV 独立于 Pod 的生命周期,可根据不同的 StorageClass 类型创建不同类型的 PV。
  • PersistentVolumeClaim(PVC):集群内的存储请求。例如,PV 是 Pod 使用的节点资源,PVC 则声明使用 PV 资源。当 PV 资源不足时,PVC 可动态创建 PV。

准备条件

  1. 已创建 TKE 容器服务
  2. 已通过 kubectl 工具连接集群
  3. 准备腾讯云 CFS 通用性能型 实例

本案例场景对存储的吞吐性能要求不高,申请一个 CFS 通用性能型 实例,多个 K8S 应用以子目录的形式共享这个 CFS 实例,结构:

综合性能与成本, CFS 实例选择 “通用性能型”

安装 TKE 文件存储扩展组件 CFS-CSI

文件存储 CFS 提供了标准的 NFS 及 CIFS/SMB 文件系统访问协议,为多个 CVM 实例或其他计算服务提供共享的数据源,支持弹性容量和性能的扩展,现有应用无需修改即可挂载使用,是一种高可用、高可靠的分布式文件系统,适合于大数据分析、媒体处理和内容管理等场景。

安装组件:

CFS 文件存储:权限组

CFS 文件存储控制台,如果是纯内网环境,可以直接使用默认的权限组规则:允许全部客户端访问

如果需要公网挂载,要另外创建自定义规则的 权限组。

TKE 创建 CFS 类型 StroageClass

创建 “共享实例” 类型的 CFS StorageClass

选项说明:

  • 共享实例:挂载时每个 PVC 将共享同一 CFS 实例的不同子目录,共享的 CFS 实例及子目录由系统自动创建。
  • 协议版本:推荐使用 NFS v3 协议挂载获得更好的性能。
  • 权限组:直接使用默认的,允许全部客户端访问。
  • 回收策略:保留:通过 PVC 动态创建的 PV,在 PVC 销毁时,与其绑定的 PV 和存储实例会被保留。

使用指定 StorageClass 创建 PVC

创建 PVC 指定绑定刚刚创建的 StorageClass

PVC 已经创建成功,默认容量 10G,这个默认容量不重要,因为在 CFS 中是没有容量上限的,按量计费。

首次使用 CFS ,会自动创建出一个,请不要对自动创建出来的 CFS 云实例进行重命名,以免造成异常。

Deployment 创建 Workload 使用 PVC 数据卷

创建 PV 和 PVC 来从 StorageClass 中申请存储资源

进入容器验证挂载:

$ kubectl exec -it busybox-665679c947-bvlzv -- /bin/sh
/ #
/ # df -h
Filesystem Size Used Available Use% Mounted on
overlay 196.7G 24.0G 164.6G 13% /
tmpfs 64.0M 0 64.0M 0% /dev
tmpfs 15.3G 0 15.3G 0% /sys/fs/cgroup
/dev/vda1 196.7G 24.0G 164.6G 13% /etc/hosts
/dev/vda1 196.7G 24.0G 164.6G 13% /dev/termination-log
/dev/vda1 196.7G 24.0G 164.6G 13% /etc/hostname
/dev/vda1 196.7G 24.0G 164.6G 13% /etc/resolv.conf
shm 64.0M 0 64.0M 0% /dev/shm
10.68.7.154:/yvumb138/default-busybox-data-pvc-ded13156-537d-4b12-93b9-51b95991d055 # 这个就是挂载点
10.0G 42.0M 9.9G 0% /usr/src/app
tmpfs 128.0M 12.0K 128.0M 0% /var/run/secrets/kubernetes.io/serviceaccount
tmpfs 15.3G 0 15.3G 0% /proc/acpi
tmpfs 64.0M 0 64.0M 0% /proc/kcore
tmpfs 64.0M 0 64.0M 0% /proc/keys
tmpfs 64.0M 0 64.0M 0% /proc/latency_stats
tmpfs 64.0M 0 64.0M 0% /proc/timer_list
tmpfs 64.0M 0 64.0M 0% /proc/sched_debug
tmpfs 15.3G 0 15.3G 0% /proc/scsi
tmpfs 15.3G 0 15.3G 0% /sys/firmware

参考文档