你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

什么是 Azure 容器存储?

Azure 容器存储是一项基于云的卷管理、部署和业务流程服务,专为容器原生构建。 它与 Kubernetes 集成,允许动态并自动地预配永久性卷,为运行在 Kubernetes 群集上的有状态应用程序存储数据。

重要

并非所有 Azure 区域都推出了 Azure 容器存储服务。 请参阅区域可用性。 Azure 容器存储现已正式发布 (GA),最低版本是 1.1.0。 建议对生产工作负载使用此 GA 版本。 如果以前安装了 Azure 容器存储预览版且未启用自动升级,请确保更新到 GA 版本

若要开始使用 Azure 容器存储,请参阅将 Azure 容器存储与 Azure Kubernetes 服务一起使用或观看视频。

此视频介绍 Azure 容器存储,这是一种适用于有状态应用程序的端到端存储管理和业务流程服务。 了解如何优化 Azure Kubernetes 服务 (AKS) 上有状态工作负载的性能,以便有效地跨存储服务缩放,同时提供经济高效的容器原生体验。

受支持的存储类型

Azure 容器存储利用现有的 Azure 存储产品/服务进行实际数据存储,并提供专为容器构建的卷业务流程和管理解决方案。 你可以选择受支持的后备存储选项,为永久性卷创建存储池。

Azure 容器存储针对基于 Linux 的 Azure Kubernetes 服务 (AKS) 群集提供 ReadWriteOnce 访问模式的永久性卷支持。 支持的后备存储选项仅包括块存储产品/服务:Azure 磁盘、临时磁盘(本地 NVMe 或临时 SSD)和 Azure 弹性 SAN(预览版)。 下表汇总了支持的存储类型、建议的工作负载和预配模型。

存储类型 说明 工作负载 产品/服务 预配模型
Azure 弹性 SAN(预览版) 按需预配,完全托管的资源 常规用途数据库、流式处理和消息传送服务、CD/CI 环境以及其他第 1 层/第 2 层工作负载。 Azure 弹性 SAN 根据创建的卷和卷快照按需预配。 多个群集可以同时访问单个 SAN,但永久性卷一次只能由一个使用者附加。
Azure 磁盘 精细控制存储 SKU 和配置 Azure 磁盘非常适合第 1 层和常规用途数据库,例如 MySQL、MongoDB 和 PostgreSQL。 高级 SSD、高级 SSD v2、标准 SSD、超级磁盘 根据目标容器存储池大小和最大卷大小预配。
临时磁盘 利用 AKS 节点上的本地存储资源(NVMe 或临时 SSD) 临时磁盘对延迟非常敏感(低的亚毫秒延迟),因此它最适合没有数据持久性要求或带内置数据复制支持的应用程序,如 Cassandra。 NVMe 在存储优化 VM SKU 上提供 部署为托管 AKS 群集的 VM 的一部分。 AKS 发现 AKS 节点上的可用临时存储,并获取它们进行卷部署。

对不同存储类型的功能支持

功能支持取决于所选的支持存储选项。 下表列出了 Azure 容器存储的主要功能,并指示哪些存储选项支持它们。

功能 本地 NVMe 本地 SSD Azure 磁盘 Azure 弹性 SAN(预览版)
存储池扩展/重设大小 支持 受支持 受支持 不支持
复制 支持 不支持 本机支持 预览
资源消耗 支持 受支持 支持 预览
SSE/CMK 不支持 不支持 支持 预览
公开 ZRS 选项 空值 空值 支持 预览
永久性卷 支持1 支持1 支持 预览
临时卷 支持 受支持 支持 预览
快照 支持 受支持 受支持 不支持

1 对于本地 NVMe 和本地 SSD,Azure 容器存储默认使用通用临时卷,其中的数据不会持久保存。 但是,可以更新 Azure 容器存储安装,以支持从临时磁盘存储池创建持久卷。

区域可用性

Azure 容器存储仅适用于部分 Azure 区域:

  • (非洲)南非北部
  • (亚太)澳大利亚东部
  • (亚太)东亚
  • (亚太)日本东部
  • (亚太)韩国中部
  • (亚太)东南亚
  • (亚太)印度中部
  • (欧洲)法国中部
  • (欧洲)德国中西部
  • (欧洲)欧洲北部
  • (欧洲)西欧
  • (欧洲)英国南部
  • (欧洲)瑞典中部
  • (欧洲)瑞士北部
  • (中东)阿联酋北部
  • (北美)美国东部
  • (北美)美国东部 2
  • (北美)美国西部
  • (北美)美国西部 2
  • (北美)美国西部 3
  • (北美)美国中部
  • (北美)美国中北部
  • (北美)美国中南部
  • (北美)美国中西部
  • (北美)加拿大中部
  • (北美)加拿大东部
  • (南美洲)巴西南部

Azure 容器存储中的新增功能

我们最新的更新增强了有状态容器的复原能力和性能。 现在,我们为本地 NVMe 存储池提供多区域存储池和卷复制,确保单节点故障期间的可用性。 快照支持向备份和灾难恢复的所有存储选项提供。 此外,临时磁盘组合现在包括临时 SSD 支持,为利用直接连接的本地存储的用例提供经济高效的解决方案:

  • 通过复制支持增强本地 NVMe 存储(L 系列临时磁盘)上托管的永久性卷的复原能力。
  • 改进了重启 Azure Kubernetes 服务 (AKS) 群集后的永久性卷恢复。
  • 使用新的性能层选项自定义本地 NVMe 存储的性能。

有关这些功能的详细信息,请向 Azure 容器存储团队发送电子邮件:containerstoragepm@microsoft.com。

Azure 容器存储为何有用

到目前为止,为容器预配云存储需要使用各个容器存储接口 (CSI) 驱动程序,这样才能使用面向以 IaaS 为中心的工作负载的存储服务,并使其适用于容器。 这会产生运营开销,并增加应用程序可用性、可伸缩性、性能、可用性和成本问题的风险。

Azure 容器存储派生自 OpenEBS,这是一种为 Kubernetes 提供容器存储功能的开源解决方案。 通过在 Kubernetes 环境中借助基于微服务的存储控制器提供托管卷业务流程解决方案,Azure 容器存储可以实现真正的容器原生存储。

可以使用 Azure 容器存储实现下列目的:

  • 加速 VM 到容器计划:Azure 容器存储挖掘出以前仅适用于 VM 的各种 Azure 块存储产品/服务,使其可供容器使用。 包括为 Cassandra 等工作负载提供延迟极低的临时磁盘,以及提供原生 iSCSI 和共享预配目标的 Azure 弹性 SAN(预览版)。

  • 使用 Kubernetes 简化卷管理:使用 Kubernetes 简化卷管理:通过借助 Kubernetes 控制平面提供卷业务流程,Azure 容器存储可以轻松地在 Kubernetes 中部署和管理卷,而无需在不同的控制平面之间反复切换。

  • 降低总拥有成本 (TCO):通过增加每个 Pod 或节点支持的永久性卷的规模来提高成本效益。 通过动态共享存储资源减少预配所需的存储资源。 请注意,不支持对存储池本身的纵向扩展支持。

主要优点

  • 快速横向扩展有状态 Pod:Azure 容器存储通过网络块存储协议(NVMe-oF 或 iSCSI)装载永久性卷,从而快速附加和分离永久性卷。 你可以从小规模开始,根据需要部署资源,同时确保应用程序在初始化期间或生产环境中不会耗尽或中断。 应用程序复原能力已通过跨群集重新生成 Pod 得到改进,需要快速移动永久性卷。 利用远程网络协议,Azure 容器存储与 Pod 生命周期紧密结合,支持 AKS 上高度可复原的大规模有状态应用程序。

  • 提高有状态工作负载的性能:Azure 容器存储能够提供卓越的读取性能,并通过使用基于 TCP 的 NVMe-oF 提供近磁盘写入性能。 这样,客户便能以经济高效的方式满足各种容器工作负载的性能要求,包括第 1 层 I/O 密集型、常规用途、吞吐量敏感型和开发/测试。 加速永久性卷的附加/分离时间,并将 Pod 故障转移时间降至最低。

  • Kubernetes 原生卷业务流程:使用 kubectl 命令创建存储池和永久性卷,捕获快照并管理卷的整个生命周期,而无需在不同控制平面操作的工具集之间切换。

术语表

了解与 Azure 容器存储和 Kubernetes 相关的一些关键术语非常有用:

  • 容器化

    仅打包具有操作系统和所需依赖项的应用程序代码,以创建单个可执行文件。

  • Kubernetes

    Kubernetes 是一个开源系统,可以自动部署、缩放和管理容器化应用程序。

  • Cluster

    Kubernetes 群集是运行容器化应用程序的一组计算节点 (VM)。 每个节点由控制平面管理,包含运行 Pod 所需的服务。

  • Pod

    Pod 是由一个或多个容器构成的组,这些容器具有共享的存储和网络资源,以及有关如何运行容器的规范。 Pod 是 Kubernetes 群集中最小的可部署单元。

  • Azure Kubernetes 服务 (AKS)

    Azure Kubernetes 服务是一项托管的 Kubernetes 服务,通过减少 Azure 的运营开销简化了在 Azure 中部署托管 Kubernetes 群集的过程。 Azure 会处理关键任务,例如运行状况监视和维护。

  • 存储池

    Azure 容器存储堆栈尝试跨群集拥有的资源和平台抽象概念统一对象模型。 为了完成统一表示形式,可用的存储容量会聚合到存储池对象中。 存储池中的存储容量被视为同质。 AKS 群集可以具有多个存储池。 存储池还充当身份验证和预配边界。 它们为操作员提供逻辑构造来管理存储基础结构,同时简化应用程序开发人员的卷创建和管理。

  • 存储类

    Kubernetes 存储类定义了使用永久性卷动态创建存储单位的方式。 有关详细信息,请参阅 Kubernetes 存储类

  • 体积

    Kubernetes 卷是一个目录,其中包含的数据可供给定 Pod 中的容器访问。 卷可以是永久性的,也可以是临时的。 卷在存储池中进行精简预配,并共享存储池的性能特征(IOPS、带宽和容量)。

  • 永久性卷

    永久性卷类似于 VM 中的磁盘。 它们表示可用于装载任何文件系统的原始块设备。 应用程序开发人员会与其应用程序或 Pod 定义一起创建永久性卷,这些卷通常与有状态应用程序的生命周期相关联。 有关详细信息,请参阅永久性卷

  • 永久性卷声明 (PVC)

    持久卷声明用于基于存储类自动预配存储。

后续步骤