存储类

本教程演示集群管理员如何管理 KubeSphere 中的存储类。

介绍

PV 是集群中的一块存储,可以由管理员事先供应,或者使用存储类来动态供应。和卷 (Volume) 一样,PV 通过卷插件实现,但是它的生命周期独立于任何使用该 PV 的容器组。PV 可以静态供应或动态供应。

PVC 是用户对存储的请求。它与容器组类似,容器组会消耗节点资源,而 PVC 消耗 PV 资源。

KubeSphere 支持基于存储类的动态卷供应,以创建 PV。

存储类是管理员描述其提供的存储类型的一种方式。不同的类型可能会映射到不同的服务质量等级或备份策略,或由集群管理员制定的任意策略。每个存储类都有一个 Provisioner,用于决定使用哪个卷插件来供应 PV。该字段必须指定。有关使用哪一个值,请参阅 Kubernetes 官方文档或与您的存储管理员确认。

下表总结了各种 Provisioner(存储系统)常用的卷插件。

类型描述信息
In-tree内置并作为 Kubernetes 的一部分运行,例如 RBDGlusterFS。有关此类插件的更多信息,请参见 Provisioner
External-provisioner独立于 Kubernetes 部署,但运行上类似于树内 (in-tree) 插件,例如 NFS 客户端。有关此类插件的更多信息,请参见 External Storage
CSI容器存储接口,一种将存储资源暴露给 CO(例如 Kubernetes)上的工作负载的标准,例如 QingCloud-CSICeph-CSI。有关此类插件的更多信息,请参见 Drivers

准备工作

您需要一个拥有集群管理权限的帐户。例如,您可以直接以 admin 身份登录控制台,或者创建一个拥有该权限的新角色并将它分配至一个用户。

创建存储类

  1. 点击左上角的平台管理,然后选择集群管理

  2. 如果您启用了多集群功能并导入了成员集群,可以选择一个特定集群。如果您未启用该功能,请直接参考下一步。

  3. 集群管理页面,点击存储 > 存储类

  4. 在右侧的存储类页面,点击创建

  5. 在弹出创建存储类对话框,输入存储类名称,点击下一步。您也可以设置别名和添加描述信息。

  6. 存储系统页签,选择一个存储系统,点击下一步

    在 KubeSphere 中,您可以直接为 QingCloud-CSIGlusterFSCeph RBD 创建存储类。您也可以为其他存储系统创建自定义存储类。

  7. 存储类设置页签,设置相关参数,点击创建以创建存储类。参数设置项随您选择的存储系统而异。

设置存储类

下表列举了几个通用存储类设置项。

参数描述信息
卷扩容在 YAML 文件中由 allowVolumeExpansion 指定。
回收机制在 YAML 文件中由 reclaimPolicy 指定。
访问模式在 YAML 文件中由 .metadata.annotations.storageclass.kubesphere.io/supported-access-modes 指定。默认 ReadWriteOnceReadOnlyManyReadWriteMany 全选。
供应者在 YAML 文件中由 provisioner 指定。如果您使用 NFS-Client 的 Chart 来安装存储类型,可以设为 cluster.local/nfs-client-nfs-client-provisioner
卷绑定模式在 YAML 文件中由 volumeBindingMode 指定。它决定使用何种绑定模式。延迟绑定即持久性声明创建后,当使用此持久性声明的容器组被创建时,此持久性声明才绑定到一个持久卷。立即绑定即持久卷声明创建后,立即绑定到一个持久卷。

QingCloud CSI

QingCloud CSI 是 Kubernetes 上的 CSI 插件,供青云QingCloud 存储服务使用。KubeSphere 控制台上可以创建 QingCloud CSI 的存储类。

准备工作

  • QingCloud CSI 在青云QingCloud 的公有云和私有云上均可使用。因此,请确保将 KubeSphere 安装至二者之一,以便可以使用云存储服务。
  • KubeSphere 集群上已经安装 QingCloud CSI 插件。有关更多信息,请参见安装 QingCloud CSI

参数设置项

参数描述信息
类型在青云云平台中,0 代表性能型硬盘;2 代表容量型硬盘;3 代表超高性能型硬盘;5 代表企业级分布式 SAN(NeonSAN)型硬盘;100 代表基础型硬盘;200 代表 SSD 企业型硬盘。
容量上限卷容量上限。
步长卷的增量值。
容量下限卷容量下限。
文件系统类型支持 ext3、ext4 和 XFS。默认类型为 ext4。
标签为卷添加标签。使用半角逗号(,)分隔多个标签。

有关存储类参数的更多信息,请参见 QingCloud CSI 用户指南

GlusterFS

GlusterFS 是 Kubernetes 上的一种树内存储插件,即您不需要额外安装卷插件。

准备工作

已经安装 GlusterFS 存储系统。有关更多信息,请参见 GlusterFS 安装文档

参数设置项

参数描述
REST URL供应卷的 Heketi REST URL,例如,<Heketi 服务集群 IP 地址>:<Heketi 服务端口号>。
集群 IDGluster 集群 ID。
开启 REST 认证Gluster 启用对 REST 服务器的认证。
REST 用户Gluster REST 服务或 Heketi 服务的用户名。
密钥所属项目Heketi 用户密钥的所属项目。
密钥名称Heketi 用户密钥的名称。
GID 最小值卷的 GID 最小值。
GID 最大值卷的 GID 最大值。
卷类型卷的类型。该值可为 none,replicate:<副本数>,或 disperse:<数据>:<冗余数>。如果未设置该值,则默认卷类型为 replicate:3。

有关存储类参数的更多信息,请参见 Kubernetes 文档中的 GlusterFS

Ceph RBD

Ceph RBD 也是 Kubernetes 上的一种树内存储插件,即 Kubernetes 中已经安装该卷插件,但您必须在创建 Ceph RBD 的存储类之前安装其存储服务器。

由于 hyperkube 镜像自 1.17 版本开始已被弃用,树内 Ceph RBD 可能无法在不使用 hyperkube 的 Kubernetes 上运行。不过,您可以使用 RBD Provisioner 作为替代,它的格式与树内 Ceph RBD 相同。唯一不同的参数是 provisioner(即 KubeSphere 控制台上的存储系统)。如果您想使用 RBD Provisioner,provisioner 的值必须为 ceph.com/rbd(在存储系统中输入该值,如下图所示)。如果您使用树内 Ceph RBD,该值必须为 kubernetes.io/rbd

准备工作

  • 已经安装 Ceph 服务器。有关更多信息,请参见 Ceph 安装文档
  • 如果您选择使用 RBD Provisioner,请安装插件。社区开发者提供了 RBD Provisioner 的 Chart,您可以通过 Helm 用这些 Chart 安装 RBD Provisioner。

参数设置项

参数描述
monitorsCeph 集群 Monitors 的 IP 地址。
adminIdCeph 集群能够创建卷的用户 ID。
adminSecretNameadminId 的密钥名称。
adminSecretNamespaceadminSecret 所在的项目。
poolCeph RBD 的 Pool 名称。
userIdCeph 集群能够挂载卷的用户 ID。
userSecretNameuserId 的密钥名称。
userSecretNamespaceuserSecret 所在的项目。
文件系统类型卷的文件系统类型。
imageFormatCeph 卷的选项。该值可为 12,选择 2 后需要填写 imageFeatures
imageFeaturesCeph 集群的额外功能。仅当设置 imageFormat2 时,才需要填写该值。

有关存储类参数的更多信息,请参见 Kubernetes 文档中的 Ceph RBD

自定义存储类

如果 KubeSphere 不直接支持您的存储系统,您可以为存储系统创建自定义存储类型。下面的示例向您演示了如何在 KubeSphere 控制台上为 NFS 创建存储类。

NFS 介绍

NFS(网络文件系统)广泛用于带有 NFS-Client(External-Provisioner 卷插件)的 Kubernetes。您可以点击自定义来创建 NFS-Client 的存储类型。

备注

不建议您在生产环境中使用 NFS 存储(尤其是在 Kubernetes 1.20 或以上版本),这可能会引起 failed to obtain lockinput/output error 等问题,从而导致容器组 CrashLoopBackOff。此外,部分应用不兼容 NFS,例如 Prometheus 等。

准备工作

  • 有一个可用的 NFS 服务器。
  • 已经安装卷插件 NFS-Client。社区开发者提供了 NFS-Client 的 Chart,您可以通过 Helm 用这些 Chart 安装 NFS-Client。

参数设置项

描述信息
archiveOnDelete删除时存档 PVCtrue

管理存储类

创建存储类型后,点击此存储类型的名称前往其详情页。在详情页点击编辑 YAML 来编辑此存储类型的清单文件。您也可以点击更多操作并在下拉菜单中选择一项操作:

  • 设为默认存储类:将此存储类设为集群的默认存储类。一个 KubeSphere 集群中仅允许设置一个默认存储类。
  • 设置授权规则:只允许特定项目和企业空间使用该存储类。
  • 设置卷操作:管理持久卷声明,包括卷克隆卷快照创建卷扩容。开启任意功能前,请联系系统管理员确认存储系统是否支持这些功能。
  • 设置自动扩展:设置系统在卷剩余空间低于阈值时自动扩容卷。您也可以开启是否自动重启工作负载。
  • 删除:删除此存储类。

持久卷声明页签上,查看与此存储类相关联的持久卷声明。

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。