文档

云盘存储卷概述

更新时间:

您可以在阿里云容器服务Kubernetes集群中使用阿里云云盘存储卷,本文主要介绍云盘存储卷的功能介绍、存储规格、适用场景、注意事项、计费说明以及存储类(StorageClass)。

功能介绍

云盘是阿里云为云服务器ECS提供的数据块级别的块存储产品,具有低时延、高性能、持久性、高可靠等特点。云盘采用分布式三副本机制,为ECS实例提供数据可靠性保证。云盘支持在可用区内自动复制您的数据,防止意外硬件故障导致的数据不可用,保护您的业务免于组件故障的威胁。

  • ESSD云盘:基于新一代分布式块存储架构的超高性能云盘产品,结合25GE网络和RDMA技术,单盘可提供高达100万的随机读写能力和更低的单路时延能力。更多详情,请参见ESSD云盘

    建议在大型OLTP数据库、NoSQL数据库和ELK分布式日志等场景中使用。

  • SSD云盘:具备稳定的高随机读写性能、高可靠性的高性能云盘产品。

    建议在I/O密集型应用、中小型关系数据库和NoSQL数据库等场景中使用。

  • 高效云盘:具备高性价比、中等随机读写性能、高可靠性的云盘产品。

    建议在开发与测试业务和系统盘等场景中使用。

  • 普通云盘:属于上一代云盘产品,已经逐步停止售卖。

存储规格

性能类别

ESSD云盘

SSD云盘

高效云盘

普通云盘

PL3

PL2

PL1

PL0

单盘容量范围(GiB)

1261~32,768

461~32,768

20~32,768

40~32,768

20~32,768

20~32,768

5~2,000

最大IOPS

1,000,000

100,000

50,000

10,000

25,000

5,000

数百

最大吞吐量(MB/s)

4,000

750

350

180

300

140

30~40

单盘IOPS性能计算公式

min{1,800+50*容量, 1,000,000}

min{1,800+50*容量, 100,000}

min{1,800+50*容量, 50,000}

min{ 1,800+12*容量, 10,000 }

min{1,800+30*容量, 25,000}

min{1,800+8*容量, 5,000}

单盘吞吐量性能计算公式(MB/s)

min{120+0.5*容量, 4,000}

min{120+0.5*容量, 750}

min{120+0.5*容量, 350}

min{100+0.25*容量, 180}

min{120+0.5*容量, 300}

min{100+0.15*容量, 140}

单路随机写平均时延(ms),Block Size=4K

0.2

0.2

0.2

0.3~0.5

0.5~2

1~3

5~10

API参数取值

cloud_essd

cloud_essd

cloud_essd

cloud_essd

cloud_ssd

cloud_efficiency

cloud

云盘更多性能介绍,请参见块存储性能

适用场景

根据业务需求,您可以对云盘做以下操作:

业务需求参考链接
存储应用数据
系统盘或数据盘容量不足

关于扩容的更多信息,请参见云盘扩容指引

持久化存储具体操作,请参见:

注意事项

  • 云盘为阿里云存储团队提供的非共享存储,只能同时被一个Pod挂载。

  • 推荐使用有状态应用(StatefulSet)挂载使用云盘。无状态应用(Deployment)挂载云盘时Replica需要为1,且不能保证挂载、卸载的优先顺序。使用Deployment时由于升级策略,可能出现重启Pod时新的Pod一直无法挂载,故不推荐使用Deployment。

  • 云盘类型和ECS类型需要匹配才可以挂载,否则会挂载失败。关于云盘类型和ECS类型的匹配关系,请参考实例规格族

  • 每个节点最多可挂载16块云盘,单块云盘容量最大32 TiB。

  • 使用云盘存储卷时,如果在应用模板中配置了securityContext.fsgroup参数,Kubelet在存储卷挂载完成后会执行chmodchown操作,导致挂载时间延长。若需要减少挂载时间,具体操作,请参见NAS存储卷挂载时间延长OSS存储卷挂载时间延长

计费说明

  • 待挂载的云盘类型必须是按量付费,包年包月的云盘无法被挂载。当您把集群中的ECS实例从按量付费转换成包年包月时,不能把云盘一起变成包年包月,否则云盘将不能被挂载使用。

  • 关于云盘计费项信息,请参见块存储计费。关于云盘的价格信息,请参见详细定价

  • 待挂载的云盘不支持包年包月类型,您可以通过购买SCU的方式降低成本。关于SCU的更多信息,请参见存储容量单位包SCU介绍

更多信息,请参见计费

存储类(StorageClass)

如果PVC请求多,就需要创建很多PV,对于运维人员来说维护成本很高,Kubernetes提供一种自动创建PV的机制,叫StorageClass。

StorageClass

容器服务Kubernetes版(ACK)集群默认提供了以下几种StorageClass:
  • alicloud-disk-efficiency:高效云盘。
  • alicloud-disk-ssd:SSD云盘。
  • alicloud-disk-essd:ESSD云盘。
  • alicloud-disk-available:提供高可用选项,优先创建SSD云盘;如果SSD云盘售尽,则创建高效云盘。
    重要
    • 对于alicloud-csi-provisioner v1.14.8.39-0d749258-aliyun之前的版本,优先创建ESSD云盘。
    • 如果ESSD云盘售尽,则创建SSD云盘。
    • 如果SSD云盘售尽,则创建高效云盘。
  • alicloud-disk-topology:使用延迟绑定的方式创建云盘。

以上5种StorageClass中,前4种可以在单可用区使用,最后1种更适合在多可用区使用。

通过StorageClass创建云盘,可用区选择规则如下:

  • StorageClass配置volumeBindingMode: WaitForFirstConsumer,则取PVC的Pod所在可用区为创建云盘的可用区。
  • StorageClass配置volumeBindingMode: Immediate,且配置zoneId参数(一个可用区),则选择此可用区为创建云盘的可用区。
  • StorageClass配置volumeBindingMode: Immediate,且配置zoneId参数(多个可用区),则每次选择轮询配置的多个可用区中的一个作为创建云盘的可用区。

综上,如果您是多可用区集群,推荐您使用WaitForFirstConsumer模式的StorageClass。您可以根据需要的云盘类型自行创建StorageClass。

Default StorageClass

Kubernetes提供Default StorageClass机制,您在PVC不指定StorageClass的情况下,可以通过Default StorageClass创建数据卷,请参见Default StorageClass

说明
  • 由于Default StorageClass会对所有PVC起作用,对于具备不同类型存储卷能力的集群,需要小心使用。例如,您想生成一个NAS类型PVC、PV,并绑定PVC和PV,但可能因为有Default StorageClass而自动创建了云盘PV。基于上述原因,ACK集群没有提供Default StorageClass,如果您期望使用Default StorageClass,可以参考以下配置。
  • 一个集群中最多配置一个Default StorageClass,否则默认能力将不起作用。
  1. 执行以下命令将StorageClass (alicloud-disk-ssd)配置为一个Default StorageClass。
    kubectl patch storageclass alicloud-disk-ssd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

    此时查询集群中的StorageClass可以看到alicloud-disk-ssd名字后面加了(default)字样。

    kubectl get sc
    预期输出:
    NAME                          PROVISIONER                       AGE
    alicloud-disk-ssd (default)   diskplugin.csi.alibabacloud.com   96m
  2. 使用Default StorageClass。

    使用以下模板创建一个没有配置StorageClass的PVC。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi

    集群会自动创建一个云盘卷(PV),且配置了Default StorageClass(alicloud-disk-ssd)。

    kubectl get pvc
    预期输出:
    NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS        AGE
    disk-pvc   Bound    d-bp18pbai447qverm3ttq   20Gi       RWO            alicloud-disk-ssd   49s
您可以通过以下命令取消默认存储类型配置。
kubectl patch storageclass alicloud-disk-ssd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
  • 本页导读 (1)
文档反馈