腾讯云容器服务 TKE 标准集群 - StorageClass 管理云硬盘模板
文档简介:
集群管理员可使用 StorageClass 为容器服务集群定义不同的存储类型。容器服务已默认提供块存储类型的 StorageClass,您可通过 StorageClass 配合 PersistentVolumeClaim 动态创建需要的存储资源。本文介绍通过控制台、Kubectl 两种方式创建云硬盘 CBS 类型的 StorageClass,自定义云硬盘使用所需的模板。
集群管理员可使用 StorageClass 为容器服务集群定义不同的存储类型。容器服务已默认提供块存储类型的 StorageClass,您可通过 StorageClass 配合 PersistentVolumeClaim 动态创建需要的存储资源。本文介绍通过控制台、Kubectl 两种方式创建云硬盘 CBS 类型的 StorageClass,自定义云硬盘使用所需的模板。
控制台操作指引
创建 StorageClass
1. 登录 容器服务控制台,在左侧导航栏中选择集群。
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧菜单栏中的存储 > StorageClass,在 StorageClass 页面单击新建。
4. 在新建 StorageClass 页面中,配置 StorageClass 参数。如下图所示:

配置项
|
描述
|
名称
|
自定义,本文以 cbs-test 为例。
|
地域
|
默认为集群所在地域。
|
Provisioner
|
此处选择云硬盘 CBS(CSI)。
|
可用区
|
表示当前地域下支持使用云硬盘的可用区,请按需选择。
|
云盘类型
|
通常提供高性能云硬盘、SSD 云硬盘、增强型 SSD 云硬盘和通用型 SSD 云硬盘四种类型,不同可用区下提供情况有一定差异,详情请参见 云硬盘类型说明 并结合控制台提示进行选择。
|
额外性能
|
增强型 SSD 云硬盘可开启额外性能配置能力以获得更高性能。详情请参见 增强型 SSD 云硬盘额外性能。
注意:
CBS 组件大于等于1.1.2支持。
额外性能最大吞吐量不大于650MB/s。
|
云盘计费模式
|
提供按量计费和包年包月两种计费模式,不同计费模式所支持的回收策略不同,请参考以下信息进行选择:
按量计费:一种弹性计费模式,支持随时开通/销毁实例,按实例的实际使用量付费。支持删除和保留的回收策略。
包年包月:一种预付费模式,提前一次性支付一个月的存储费用,支持按月自动续费。仅支持保留的回收策略。
注意:
如需购买包年包月云硬盘,则需前往 角色 页面,为 TKE_QCSRole 角色添加策略 QcloudCVMFinanceAccess 配置支付权限,否则可能会因支付权限问题导致创建基于包年包月 StorageClass 的 PVC 失败。
仅计费模式为包年包月的云硬盘可执行续费操作,自动续费功能默认按月续费。用户可前往所创建的PVC详情页,打开/关闭自动续费功能。更多计费信息参见 云硬盘计费问题。
|
卷绑定模式
|
提供立即绑定和等待调度两种卷绑定模式,不同模式所支持的卷绑定策略不同,请参考以下信息进行选择:
立即绑定:通过该 storageclass 创建的 PVC 将直接进行 PV 的绑定和分配。
等待调度:通过该 storageclass 创建的 PVC 将延迟与 PV 的绑定和分配,直到使用该 PVC 的 Pod 被创建。
|
标签
|
可按需给实例增加标签,用于云资源进行分类、搜索和聚合。 更多信息请参见 标签。
|
定期备份
|
设置定期备份可有效保护数据安全,备份数据将产生额外费用,详情请见 快照概述 。
说明:
容器服务默认提供的 default-policy 备份策略的配置包括:执行备份的日期、执行备份的时间点和备份保留的时长。
|
在线扩容
|
选择是否启用在线扩容,详情见 在线扩容云硬盘。
|
回收策略
|
云盘的回收策略,通常提供删除和保留两种回收策略,具体选择情况与所选计费模式相关。出于数据安全考虑,推荐使用保留回收策略。
|
5. 单击创建 StorageClass。
使用指定 StorageClass 创建 PVC
1. 在集群列表中,单击集群 ID,进入集群详情页。
2. 选择左侧菜单栏中的存储 > PersistentVolumeClaim,在 PersistentVolumeClaim 页面单击新建。
3. 在新建 PersistentVolumeClaim 页面中,配置 PVC 关键参数。如下图所示:

配置项
|
描述
|
名称
|
自定义,本文以 cbs-pvc 为例。
|
命名空间
|
命名空间用来划分集群资源。此处选择 default。
|
Provisioner
|
选择云硬盘 CBS(CSI)。
|
读写权限
|
云硬盘仅支持单机读写。
说明:
单机读写:当前仅支持云硬盘同时挂载到一台机器上,因此只能处理单机器的数据读写。
多机读写:文件存储/对象存储支持同时挂载到多台机器,可以处理多机器的数据读写。
|
是否指定StorageClass
|
选择指定 StorageClass。本文选择已在 创建 StorageClass 步骤中创建的 cbs-test 为例。
说明:
PVC 和 PV 会绑定在同一个 StorageClass 下。
不指定 StorageClass 意味着该 PVC 对应的 StorageClass 取值为空,对应 YAML 文件中的 storageClassName 字段取值为空字符串。
|
StorageClass
|
选择上述步骤创建的 StorageClass。
|
是否指定 PersistVolume
|
本文以不指定 PersistentVolume 为例。 说明:
系统首先会筛选当前集群内是否存在符合绑定规则的 PV,若没有则根据 PVC 和所选 StorageClass 的参数动态创建 PV 与之绑定。
系统不允许在不指定 StorageClass 的情况下同时选择不指定 PersistVolume。
关于不指定 PersistVolume 的详细介绍,请参见 查看 PV 和 PVC 的绑定规则。
|
云盘类型
|
根据所选的 StorageClass 展示所选的云盘类型为高性能云硬盘、SSD 云硬盘和增强型 SSD 云硬盘。
|
容量
|
在不指定 PersistentVolume 时,需提供期望的云硬盘容量(云硬盘大小必须为10的倍数。高性能云硬盘最小为10GB;SSD 和增强型 SSD 云硬盘最小为20GB)。
|
费用
|
根据上述参数计算创建对应云盘的所需费用,详情参考 计费模式。
|
4. 单击创建 PersistentVolumeClaim。
创建 StatefulSet 挂载 PVC 类型数据卷
说明
该步骤以创建工作负载 StatefulSet 为例。
1. 在集群列表中,单击集群 ID,进入集群详情页。
2. 选择左侧菜单栏中的工作负载 > StatefulSet,在 StatefulSet 页面单击新建。
3. 在新建 StatefulSet 页面中,配置工作负载参数,参数详情请参见 创建 StatefulSet。根据实际需求,数据卷选择使用已有PVC,并选择上述已创建的 PVC。如下图所示:

数据卷(选填):
挂载方式:选择“使用已有PVC”。
数据卷名称:自定义,本文以 cbs-vol 为例。
选择 PVC:选择已有 PVC,本文以选择在 使用指定 StorageClass 创建 PVC 步骤中创建的 cbs-pvc 为例。
4. 在实例内容器中添加挂载点。如下图所示:

实例内容器:单击添加挂载点,进行挂载点设置。
数据卷:选择该步骤中已添加的数据卷 “cbs-vol”。
目标路径:填写目标路径,本文以 /cache 为例。
挂载子路径:仅挂载选中数据卷中的子路径或单一文件。例如,/data 或 /test.txt。
5. 单击创建 StatefulSet。
注意
如使用 CBS 的 PVC 挂载模式,则数据卷只能挂载到一台 Node 主机上。
Kubectl 操作指引
您可参考本文提供的示例模板,使用 Kubectl 进行 StorageClass 创建操作。
创建 StorageClass
以下 YAML 文件示例为集群内默认存在 name 为 cbs 的 StorageClass:
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:# annotations:# storageclass.beta.kubernetes.io/is-default-class: "true"# 如果有这一条,则会成为 default-class,创建 PVC 时不指定类型则自动使用此类型name: cloud-premium# 安装了 CBS-CSI 组件的TKE集群请填写 provisioner 为 com.tencent.cloud.csi.cbs# 未安装 CBS-CSI 组件请填写 provisioner 为 cloud.tencent.com/qcloud-cbs (该能力在1.20及以后版本废弃)provisioner: com.tencent.cloud.csi.cbsparameters:diskType: CLOUD_PREMIUMdiskChargeType: POSTPAID_BY_HOURaspid: asp-123reclaimPolicy: RetainvolumeBindingMode: WaitForFirstConsumer
支持参数如下表:
参数
|
描述
|
diskType
|
包括 CLOUD_PREMIUM(高性能云硬盘)、CLOUD_SSD(SSD 云硬盘)、CLOUD_HSSD(增强型 SSD 云硬盘)和 CLOUD_BSSD(通用型 SSD 云硬盘)。
|
zone
|
用于指定可用区。如果指定,则云硬盘将创建到此可用区。如果不指定,则拉取所有 Node 的可用区信息,进行随机选取。腾讯云各地域标识符请参见 地域和可用区。
|
diskChargeType
|
云硬盘的计费模式,默认设置为 POSTPAID_BY_HOUR 模式,即按量计费,支持 Retain 保留和 Delete 删除策略,Retain 仅在高于1.8的集群版本生效。还可设置为 PREPAID 模式,即包年包月,仅支持 Retain 保留策略。
|
volumeBindingMode
|
卷绑定模式,支持 Immediate(立即绑定)和 WaitForFirstConsumer(延迟调度)。
|
reclaimPolicy
|
回收策略,支持 Delete(删除)和 Retain(保留)。
|
aspid
|
指定快照 ID,创建云硬盘后自动绑定此快照策略,绑定失败不影响创建。
|
创建多实例 StatefulSet
使用云硬盘创建多实例 StatefulSet,YAML 文件示例如下:
说明
资源对象的 apiVersion 可能因为您集群的 Kubernetes 版本不同而不同,您可通过 kubectl api-versions 命令查看当前资源对象的 apiVersion。
apiVersion: apps/v1kind: StatefulSetmetadata:name: webspec:selector:matchLabels:app: nginxserviceName: "nginx"replicas: 3template:metadata:labels:app: nginxspec:terminationGracePeriodSeconds: 10containers:- name: nginximage: nginxports:- containerPort: 80name: webvolumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumeClaimTemplates: # 自动创建pvc,进而自动创建pv- metadata:name: wwwspec:accessModes: [ "ReadWriteOnce" ]storageClassName: cloud-premiumresources:requests:storage: 20Gi