CFS-CSI 说明

最近更新时间:2024-09-02 17:34:41

我的收藏

简介

组件介绍

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: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: csi-cfs-controller-role
rules:
- 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/v1
kind: ClusterRole
metadata:
name: tcfs-subdir-external-provisioner-runner
rules:
- 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 完成创建。