一、创建 StorageClass
1. 登录 容器服务控制台,在左侧导航栏中选择集群。
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧导航中的存储,在 StorageClass 页面单击新建。
4. 在新建存储页面中,配置 StorageClass 参数。
| 配置项 | 描述 |
| 名称 | 自定义,这篇以 cbs-test 为例。 |
| 地域 | 默认为集群所在地域。 |
| Provisioner | 此处选择云硬盘 CBS(CSI)。 |
| 可用区 | 表示当前地域下支持使用云硬盘的可用区,请按需选择。 |
| 云盘类型 | 通常提供高性能云硬盘、SSD 云硬盘、增强型 SSD 云硬盘和通用型 SSD 云硬盘四种类型,不同可用区下提供情况有一定差异,详情请参见 云硬盘类型说明 并结合控制台提示进行选择。 |
| 额外性能 | 增强型 SSD 云硬盘可开启额外性能配置能力以获得更高性能。详情请参见 增强型 SSD 云硬盘额外性能。注意:CBS 组件大于等于1.1.2支持。额外性能最大吞吐量不大于650MB/s。 |
| 云盘计费模式 | 提供按量计费和包年包月两种计费模式,不同计费模式所支持的回收策略不同,请参考以下信息进行选择: 按量计费:一种弹性计费模式,支持随时开通/销毁实例,按实例的实际使用量付费。支持删除和保留的回收策略。包年包月:一种预付费模式,提前一次性支付一个月的存储费用,支持按月自动续费。支持删除和保留的回收策略。选择删除策略时,PVC 删除将同步删除存储资源并停止计费,数据无法恢复,请谨慎操作。注意:如需购买包年包月云硬盘,则需前往 角色 页面,为 TKE_QCSRole 角色添加策略 QcloudCVMFinanceAccess 配置支付权限,否则可能会因支付权限问题导致创建基于包年包月 StorageClass 的 PVC 失败。仅计费模式为包年包月的云硬盘可执行续费操作,自动续费功能默认按月续费。用户可前往所创建的 PVC 详情页,打开/关闭自动续费功能。更多计费信息参见 云硬盘计费问题。 |
| 卷绑定模式 | 提供立即绑定和等待调度两种卷绑定模式,不同模式所支持的卷绑定策略不同,请参考以下信息进行选择:立即绑定:通过该 StorageClass 创建的 PVC 将直接进行 PV 的绑定和分配。等待调度:通过该 StorageClass 创建的 PVC 将延迟与 PV 的绑定和分配,直到使用该 PVC 的 Pod 被创建。 |
| 标签 | 可按需给实例增加标签,用于对云资源进行分类、搜索和聚合。 更多信息请参见 标签。 |
| 加密 | 云硬盘加密能力能够最大限度保护你的数据安全,同时业务和应用程序无需做任何额外改动。注意:CBS 组件大于等于1.1.10支持。密钥材料来源:默认使用 KMS 为云产品创建的密钥。也可使用自定义密钥。加密类型:支持一代加密、二代加密。需注意,S5/SA2及更早机型支持一代加密,此后机型支持二代加密。 |
| 定期备份 | 设置定期备份可有效保护数据安全,备份数据将产生额外费用,详情请见 快照概述。说明:容器服务默认提供的 default-policy 备份策略的配置包括:执行备份的日期、执行备份的时间点和备份保留的时长。 |
| 在线扩容 | 选择是否启用在线扩容,详情见 在线扩容云硬盘。 |
| 回收策略 | 云盘的回收策略,提供删除和保留两种策略。按量计费和包年包月两种计费模式均支持删除和保留策略。选择删除策略时,PVC 删除将同步删除云硬盘存储资源,数据无法恢复,请谨慎操作。出于数据安全考虑,推荐使用保留回收策略。 |
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 为 cloud-premium 的 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.cbs parameters: diskType: CLOUD_PREMIUM diskZone: ap-guangzhou-6 diskChargeType: POSTPAID_BY_HOUR aspid: asp-123reclaimPolicy: RetainvolumeBindingMode: 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 保留和 Delete 删除策略。选择 Delete 策略时,PVC 删除将同步删除存储资源并停止计费,请谨慎操作。 |
| diskChargePrepaidPeriod | diskChargeType 为 PREPAID(包年包月)时,指定购买时长(月)。支持取值:1、2、3、4、5、6、7、8、9、12、24、36。 |
| diskChargePrepaidRenewFlag | diskChargeType 为 PREPAID(包年包月)时,指定自动续费标识。支持取值:NOTIFY_AND_AUTO_RENEW(通知且自动续费)、NOTIFY_AND_MANUAL_RENEW(通知但不自动续费,默认值)、DISABLE_NOTIFY_AND_MANUAL_RENEW(不通知也不自动续费)。 |
| 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: 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