StorageClass 管理云硬盘模板

最近更新时间:2025-07-21 17:51:31

我的收藏
集群管理员可使用 StorageClass 为容器服务集群定义不同的存储类型。容器服务已默认提供块存储类型的 StorageClass,您可通过 StorageClass 配合 PersistentVolumeClaim 动态创建需要的存储资源。本文介绍通过控制台、Kubectl 两种方式创建云硬盘 CBS 类型的 StorageClass,自定义云硬盘使用所需的模板。

控制台操作指引

创建 StorageClass

1. 登录 容器服务控制台,在左侧导航栏中选择集群
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧导航中的存储,在 StorageClass 页面单击新建
4. 新建存储页面中,配置 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 被创建。
标签
可按需给实例增加标签,用于对云资源进行分类、搜索和聚合。 更多信息请参见 标签
加密
云硬盘加密能力能够最大限度保护您的数据安全,同时业务和应用程序无需做任何额外改动。
注意:
CBS 组件大于等于1.1.10支持。
密钥材料来源:默认使用 KMS 为云产品创建的密钥。也可使用自定义密钥。
加密类型:支持一代加密、二代加密。
注意:
S5/SA2及更早机型支持一代加密,此后机型支持二代加密。
定期备份
设置定期备份可有效保护数据安全,备份数据将产生额外费用,详情请见 快照概述
说明: 容器服务默认提供的 default-policy 备份策略的配置包括:执行备份的日期、执行备份的时间点和备份保留的时长。
在线扩容
选择是否启用在线扩容,详情见 在线扩容云硬盘
回收策略
云盘的回收策略,通常提供删除和保留两种回收策略,具体选择情况与所选计费模式相关。出于数据安全考虑,推荐使用保留回收策略。
5. 单击创建 StorageClass

使用指定 StorageClass 创建 PVC

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

创建 StatefulSet 挂载 PVC 类型数据卷

说明:
该步骤以创建工作负载 StatefulSet 为例。
1. 在集群列表中,单击集群 ID,进入集群详情页。
2. 选择左侧导航中的工作负载,在 StatefulSet 页面单击新建
3. 在新建存储页面中,配置工作负载参数,参数详情请参见 创建 StatefulSet。根据实际需求,数据卷选择使用已有 PVC,并选择上述已创建的 PVC。如下图所示:



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



实例内容器:单击添加挂载点,进行挂载点设置。
数据卷:选择该步骤中已添加的数据卷 “cbs-vol”。
目标路径:填写目标路径,本文以 /cache 为例。
挂载子路径:仅挂载选中数据卷中的子路径或单一文件。例如,/data/test.txt
5. 单击创建 StatefulSet
注意:
如使用 CBS 的 PVC 挂载模式,则数据卷只能挂载到一台 Node 主机上。

YAML 操作指引

您可参考本文提供的示例模板,使用 YAML 进行 StorageClass 创建操作。

创建 StorageClass

以下 YAML 文件示例为集群内默认存在 name 为 cbs 的 StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
# 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.cbs

parameters:
diskType: CLOUD_PREMIUM
diskZone: ap-guangzhou-6
diskChargeType: POSTPAID_BY_HOUR
aspid: asp-123
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
支持参数如下表:
参数
描述
diskType
包括 CLOUD_PREMIUM(高性能云硬盘)、CLOUD_SSD(SSD 云硬盘)、CLOUD_HSSD(增强型 SSD 云硬盘)和 CLOUD_BSSD(通用型 SSD 云硬盘)。
diskZone
用于指定可用区。如果指定,则云硬盘将创建到此可用区。如果不指定,则拉取所有 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/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates: # 自动创建pvc,进而自动创建pv
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: cloud-premium
resources:
requests:
storage: 20Gi