tencent cloud

文档反馈

StorageClass 管理云硬盘模板

最后更新时间:2022-11-17 15:07:10

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

    控制台操作指引

    创建 StorageClass

    1. 登录 容器服务控制台,选择左侧栏中的集群
    2. 在“集群管理”页中,单击需创建 StorageClass 的集群 ID,进入集群详情页。
    3. 选择左侧菜单栏中的存储 > StorageClass。如下图所示:
    4. 单击新建进入“新建StorageClass” 页面,参考以下信息进行创建。如下图所示:

      主要参数信息如下:
      • 名称:自定义,本文以 cbs-test 为例。
      • Provisioner:选择云硬盘CBS
      • 地域:当前集群所在地域。
      • 可用区:表示当前地域下支持使用云硬盘的可用区,请按需选择。
      • 计费模式:提供按量计费的计费模式。按量计费是一种弹性计费模式,支持随时开通/销毁实例,按实例的实际使用量付费。支持删除和保留的回收策略
      • 云盘类型:通常提供高性能云硬盘SSD云硬盘增强型SSD云硬盘三种类型,不同可用区下提供情况有一定差异,详情请参见 云硬盘类型说明 并结合控制台提示进行选择。
      • 回收策略:云盘的回收策略,通常提供删除保留两种回收策略,具体选择情况与所选计费模式相关。出于数据安全考虑,推荐使用保留回收策略。
      • 卷绑定模式:提供立即绑定等待调度两种卷绑定模式,不同模式所支持的卷绑定策略不同,请参考以下信息进行选择:
        • 立即绑定:通过该 storageclass 创建的 PVC 将直接进行 PV 的绑定和分配。
        • 等待调度:通过该 storageclass 创建的 PVC 将延迟与 PV 的绑定和分配,直到使用该 PVC 的 Pod 被创建。
      • 定期备份:设置定期备份可有效保护数据安全,备份数据将产生额外费用,详情请见 快照概述
        说明:

        容器服务默认提供的 default-policy 备份策略的配置包括:执行备份的日期、执行备份的时间点和备份保留的时长。

    5. 单击新建StorageClass即可完成创建。

    使用指定 StorageClass 创建 PVC

    1. 在“集群管理”页面,选择需创建 PVC 的集群 ID。
    2. 在集群详情页面,选择左侧菜单栏中的存储 > PersistentVolumeClaim,进入 “PersistentVolumeClaim” 信息页面。如下图所示:
    3. 单击新建进入“新建PersistentVolumeClaim” 页面,参考以下信息设置 PVC 关键参数。如下图所示:

      主要参数信息如下:
      • 名称:自定义,本文以 cbs-pvc 为例。
      • 命名空间:选择 “default”。
      • Provisioner:选择云硬盘CBS
      • 读写权限:云硬盘仅支持单机读写。
      • StorageClass:按需指定 StorageClass,本文选择已在 创建 StorageClass 步骤中创建的 cbs-test 为例。
        说明:

        • PVC 和 PV 会绑定在同一个 StorageClass 下。
        • 不指定 StorageClass 意味着该 PVC 对应的 StorageClass 取值为空,对应 YAML 文件中的 storageClassName 字段取值为空字符串。
      • PersistVolume:按需指定 PersistentVolume,本文以不指定 PersistentVolume 为例。
        说明:

        • 系统首先会筛选当前集群内是否存在符合绑定规则的 PV,如果没有则根据 PVC 和所选 StorageClass 的参数动态创建 PV 与之绑定。
        • 系统不允许在不指定 StorageClass 的情况下同时选择不指定 PersistVolume。
        • 不指定 PersistentVolume。详情请参见 查看 PV 和 PVC 的绑定规则
      • 云盘类型:根据所选的 StorageClass 展示所选的云盘类型为高性能云硬盘SSD云硬盘增强型SSD云硬盘
      • 容量:在不指定 PersistentVolume 时,需提供期望的云硬盘容量(云硬盘大小必须为10的倍数。高性能云硬盘最小为10GB;SSD 和增强型 SSD 云硬盘最小为20GB)。
      • 费用:根据上述参数计算创建对应云盘的所需费用,详情参考 计费模式
    4. 单击创建PersistentVolumeClaim,即可完成创建。

    创建 StatefulSet 挂载 PVC 类型数据卷

    说明:

    该步骤以创建工作负载 StatefulSet 为例。

    1. 在目标集群详情页,选择左侧菜单栏中的工作负载 > StatefulSet,进入 “StatefulSet” 页面。
    2. 单击新建进入“新建Workload” 页面,参考 创建 StatefulSet 进行创建,并参考以下信息进行数据卷挂载。如下图所示:
      • 数据卷(选填)
        • 挂载方式:选择“使用已有PVC”。
        • 数据卷名称:自定义,本文以 cbs-vol 为例。
        • 选择 PVC:选择已有 PVC,本文以选择在 使用指定 StorageClass 创建 PVC 步骤中创建的 cbs-pvc 为例。
      • 实例内容器:单击添加挂载点,进行挂载点设置。
        • 数据卷:选择该步骤中已添加的数据卷 “cbs-vol”。
        • 目标路径:填写目标路径,本文以 /cache 为例。
        • 挂载子路径:仅挂载选中数据卷中的子路径或单一文件。例如,/data/test.txt
    3. 单击创建Workload,即可完成创建。
      注意:

      如使用 CBS 的 PVC 挂载模式,则数据卷只能挂载到一台 Node 主机上。

    Kubectl 操作指引

    您可参考本文提供的示例模板,使用 Kubectl 进行 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:
      type: CLOUD_PREMIUM
      renewflag: NOTIFY_AND_AUTO_RENEW
      paymode: POSTPAID_BY_HOUR
      aspid: asp-123
    reclaimPolicy: Retain
    volumeBindingMode: WaitForFirstConsumer
    

    支持参数如下表:

    参数 描述
    type 包括 CLOUD_PREMIUM(高性能云硬盘)和 CLOUD_SSD(SSD 云硬盘)、CLOUD_HSSD(增强型 SSD 云硬盘)。
    zone 用于指定可用区。如果指定,则云硬盘将创建到此可用区。如果不指定,则拉取所有 Node 的可用区信息,进行随机选取。 腾讯云各地域标识符请参见 地域和可用区
    paymode 云硬盘的计费模式,默认设置为 POSTPAID_BY_HOUR 模式,即按量计费,支持 Retain 保留和 Delete 删除策略,Retain 仅在高于1.8的集群版本生效。
    volumeBindingMode 卷绑定模式,支持 Immediate(立即绑定)和 WaitForFirstConsumer(延迟调度)。
    reclaimPolicy 回收策略,支持 Delete(删除)和 Retain(保留)。
    renewflag 云硬盘的续费模式。默认为 NOTIFY_AND_MANUAL_RENEW 模式。
  • NOTIFY_AND_AUTO_RENEW 模式代表所创建的云硬盘支持通知过期且按月自动续费。
  • NOTIFY_AND_MANUAL_RENEW 模式代表所创建的云硬盘支持通知过期但不自动续费。
  • DISABLE_NOTIFY_AND_MANUAL_RENEW 模式则代表所创建的云硬盘不通知过期也不自动续费。
  • 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: 10Gi
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持