简介
组件介绍
Kubernetes-csi-tencentcloud CFS 插件实现 CSI 的接口,可帮助您在容器集群中使用腾讯云文件存储。
注意:
1.12集群需要修改 kubelet 配置,增加
--feature-gates=KubeletPluginsWatcher=false
参数。部署在集群内的 Kubernetes 对象
Kubernetes 对象名称 | 类型 | 默认占用资源 | 所属 Namespaces |
csi-provisioner-cfsplugin | StatefulSet | - | kube-system |
csi-nodeplugin-cfsplugin | DaemonSet | - | kube-system |
csi-provisioner-cfsplugin | Service | 1C2G | kube-system |
使用场景
文件存储 CFS 提供了可扩展的共享文件存储服务,可与腾讯云 CVM、容器服务 TKE、批量计算等服务搭配使用。CFS 提供了标准的 NFS 及 CIFS/SMB 文件系统访问协议,为多个 CVM 实例或其他计算服务提供共享的数据源,支持弹性容量和性能的扩展,现有应用无需修改即可挂载使用,是一种高可用、高可靠的分布式文件系统,适合于大数据分析、媒体处理和内容管理等场景。
CFS 接入简单,您无需调整自身业务结构,或者是进行复杂的配置。只需三步即可完成文件系统的接入和使用:创建文件系统,启动服务器上文件系统客户端,挂载创建的文件系统。通过 CFS-CSI 扩展组件,您可以快速在容器集群中通过标准原生 Kubernetes 使用 CFS,详情请参见 CFS 使用场景。
限制条件
CFS 自身限制可参见 CFS 系统限制。
在 TKE 中使用 CFS,需要在集群内安装该扩展组件,这将占用一定的系统资源。
cfs-csi 权限
说明:
权限场景章节中仅列举了组件核心功能涉及到的相关权限,完整权限列表请参考权限定义章节。
权限说明
该组件权限是当前功能实现的最小权限依赖。
需要挂载主机/var/lib/kubelet相关目录到容器来完成volume的mount/umount,所以需要开启特权级容器。
权限场景
功能 | 涉及对象 | 涉及操作权限 |
需要支持动态创建 cfs 实例 | persistentvolumeclaims/persistentvolumes | 所有操作 |
| storageclasses | get/list/watch |
支持共享模式下的 cfs 实例 | tcfs | get/list/watch/create/update/delete/patch |
| deployment | get/list/watch/create/update/delete |
| node | get/list |
权限定义
kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:name: csi-cfs-controller-rolerules:- apiGroups: [""]resources: ["nodes"]verbs: ["get", "list"]- apiGroups: [""]resources: ["services", "events", "configmaps", "endpoints"]verbs: ["get","list","create","update","patch","delete"]- apiGroups: [""]resources: ["services/status", "events/status"]verbs: ["get"]- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete", "update"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update", "patch", "create"]- apiGroups: ["storage.k8s.io"]resources: ["volumeattachments", "volumeattachments/status"]verbs: ["get", "list", "watch", "update", "patch"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: ["extensions"]resources: ["ingresses"]verbs: ["get", "list", "watch", "update", "patch", "create"]- apiGroups: ["extensions"]resources: ["ingresses/status"]verbs: ["get"]- apiGroups: ["apps"]resources: ["deployments"]verbs: ["get", "list", "delete", "update", "create", "watch"]- apiGroups: ["apps"]resources: ["deployments/status"]verbs: ["get"]- apiGroups: ["tcfsoperator.k8s.io"]resources: ["tcfs", "tcfs/status"]verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: tcfs-subdir-external-provisioner-runnerrules:- apiGroups: [""]resources: ["nodes"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]
操作步骤
安装并设置 CFS 扩展组件
1. 登录 容器服务控制台 ,在左侧导航栏中选择集群。
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧菜单栏中的组件管理,在组件管理页面单击新建。
4. 在新建组件管理页面中勾选 CFS。
5. 单击完成即可创建组件。
创建 CFS 类型 StorageClass
1. 在集群列表中,单击使用 CFS 的集群 ID,进入集群详情页。
2. 在左侧导航栏中选择存储 > StorageClass,单击新建。
3. 在新建 StorageClass 页面,根据实际需求,创建 CFS 类型的 StorageClass。如下图所示:
4. 单击创建 StorageClass,完成创建。
创建 PersistentVolumeClaim
1. 在集群列表中,单击使用 CFS 的集群 ID,进入集群详情页。
2. 在左侧导航栏中选择存储 > PersistentVolumeClaim,单击新建。
3. 在新建 PersistentVolumeClaim 页面,根据实际需求,创建 CFS 类型 PersistentVolumeClaim,选择上述步骤创建的 StorageClass。
4. 单击创建 PersistentVolumeClaim,完成创建。
创建工作负载
1. 在集群列表中,单击使用 CFS 的集群 ID,进入集群详情页。
2. 在左侧导航栏中选择工作负载 > Deployment,单击新建。
3. 在新建 Deployment 页面,根据实际需求,数据卷选择使用已有 PVC,并选择上述已创建的 PVC。
4. 挂载到容器的指定路径后,单击创建 Deployment 完成创建。