你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器存储是一种基于云的卷管理、部署和编排服务,专为容器原生构建。 它与 Kubernetes 集成,允许动态和自动预配永久性卷,以存储 Kubernetes 群集上运行的有状态应用程序的数据。 Azure 容器存储派生自 OpenEBS,这是一种开源解决方案,它为 Kubernetes 提供容器存储功能。
重要
本文介绍 Azure 容器存储(版本 1.x.x)中提供的特性和功能。 Azure 容器存储(版本 2.x.x) 现已推出。 Azure 容器存储在所有 Azure 区域中都不可用。 请参阅 区域可用性。 如果以前安装了 Azure 容器存储预览版且未启用自动升级,请确保 更新到 GA 版本。
此视频介绍 Azure 容器存储(版本 1.x.x),这是适用于有状态应用程序的端到端存储管理和业务流程服务。 了解如何优化 Azure Kubernetes 服务(AKS)上有状态工作负荷的性能,以有效地跨存储服务进行缩放,同时提供经济高效的容器原生体验。
受支持的存储类型
Azure 容器存储利用现有的 Azure 存储产品/服务进行实际数据存储,并提供专为容器生成的卷业务流程和管理解决方案。 你可以选择受支持的后备存储选项,为永久性卷创建存储池。
Azure 容器存储(版本 1.x.x)通过 ReadWriteOnce 访问模式为基于 Linux 的 Azure Kubernetes 服务 (AKS) 群集提供永久性卷支持。 支持的支持存储选项包括: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 在某些 Azure VM SKU 上可用,例如 存储优化的 VM SKU 或 GPU 加速 VM SKU | 作为托管 AKS 群集的虚拟机的一部分进行部署。 AKS 发现 AKS 节点上的可用临时存储,并获取它们进行卷部署。 |
对不同存储类型的功能支持
功能支持取决于所选的支持存储选项。 下表列出了 Azure 容器存储的主要功能,并指示哪些存储选项支持它们。
| 功能 | 本地 NVMe | 本地 SSD | Azure 磁盘 | Azure 弹性 SAN (预览版) |
|---|---|---|---|---|
| 存储池扩展/调整大小 | 已支持 | 已支持 | 已支持 | 不支持 |
| 复制 | 已支持 | 不支持 | 本地支持 | Preview |
| 资源消耗 | 已支持 | 已支持 | 已支持 | Preview |
| SSE/CMK | 不支持 | 不支持 | 已支持 | Preview |
| 公开 ZRS 选项 | N/A | N/A | 已支持 | Preview |
| 永久性卷 | 支持1 | 支持1 | 已支持 | Preview |
| 临时卷 | 已支持 | 已支持 | 已支持 | Preview |
| 快照 | 已支持 | 已支持 | 已支持 | 不支持 |
1 对于本地 NVMe 和本地 SSD,Azure 容器存储默认使用通用临时卷,其中数据不持久。 但是,可以更新 Azure 容器存储安装,以支持从临时磁盘存储池创建永久性卷。
区域可用性
Azure 容器存储仅适用于一部分 Azure 区域:
- (非洲)南非北部
- (亚太)澳大利亚东部
- (亚太)东亚
- (亚太)日本东部
- (亚太)韩国中部
- (亚太)东南亚
- (亚太)印度中部
- (欧洲)法国中部
- (欧洲)德国中西部
- (欧洲)欧洲北部
- (欧洲)西欧
- (欧洲)英国南部
- (欧洲)瑞典中部
- (欧洲)瑞士北部
- (中东)阿联酋北部
- (北美)美国东部
- (北美)美国东部 2
- (北美)美国西部
- (北美)美国西部 2
- (北美)美国西部 3
- (北美)美国中部
- (北美)美国中北部
- (北美)美国中南部
- (北美)美国中西部
- (北美)加拿大中部
- (北美)加拿大东部
- (南美洲)巴西南部
Azure 容器存储中的新增功能
最新更新增强了有状态容器的复原能力和性能。 现在,我们为本地 NVMe 存储池提供多区域存储池和卷复制,确保单节点故障期间的可用性。 快照功能在所有存储选项中均可用于备份和灾难恢复。 此外,临时磁盘组合现在包括临时 SSD 支持,为利用直接连接的本地存储的用例提供经济高效的解决方案:
- 通过复制支持增强本地 NVMe 存储上托管的永久性卷的复原能力。
- 改进了重启 Azure Kubernetes 服务 (AKS) 群集后的永久性卷恢复。
- 使用新的性能层选项自定义本地 NVMe 存储的性能。
有关这些功能的详细信息,请向 containerstoragepm@service.microsoft.comAzure 容器存储团队发送电子邮件。
为什么 Azure 容器存储很有用
到目前为止,为容器提供云存储,需要配置容器存储接口 (CSI) 驱动程序以使用适用于 IaaS 为中心的工作负荷的存储服务,并使它们适用于容器。 在某些情况下,这会产生操作开销,并增加应用程序在可用性、可伸缩性、性能、易用性和成本方面出现问题的风险。
使用 Azure 容器存储时,无需担心配置单个 CSI 驱动程序。 通过在 Kubernetes 环境中利用基于微服务的存储控制器提供托管卷编排解决方案,Azure 容器存储真正实现容器原生存储。
可以使用 Azure 容器存储来:
加速 VM 到容器计划: Azure 容器存储显示以前仅适用于 VM 的 Azure 块存储产品/服务的完整范围,并使其可用于容器。 包括为 Cassandra 等工作负载提供延迟极低的临时磁盘,以及提供原生 iSCSI 和共享预配目标的 Azure 弹性 SAN(预览版)。
使用 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 是一个开源系统,可以自动部署、缩放和管理容器化应用程序。
群集
Kubernetes 群集是运行容器化应用程序的一组计算节点(VM)。 每个节点由控制平面管理,并包含运行 Pod 所需的服务。
Pod
Pod 是一组或多个容器,包含共享存储和网络资源,以及有关如何运行容器的规范。 Pod 是 Kubernetes 群集中最小的可部署单元。
Azure Kubernetes 服务 (AKS)
Azure Kubernetes 服务是托管的 Kubernetes 服务,通过将操作开销卸载到 Azure,简化了在 Azure 中部署托管 Kubernetes 集群。 Azure 处理关键任务,例如运行状况监视和维护。
存储池
在 Azure 容器存储(版本 1.x.x)中,可用存储容量聚合到存储池对象中。 存储池中的存储容量被视为同质的。 AKS 群集可以有多个存储池。 存储池还充当身份验证和预配边界。 它们为操作员提供了一个逻辑构造,用于管理存储基础结构,同时简化应用程序开发人员的卷创建和管理。
存储类
Kubernetes 存储类定义如何使用永久性卷动态创建存储单元。 有关详细信息,请参阅 Kubernetes 存储类。
数据量
Kubernetes 卷是一个目录,其中包含给定 Pod 中容器可访问的数据。 卷可以是永久性的,也可以是临时的。 卷在存储池中进行精简预配,并共享存储池的性能特征(IOPS、带宽和容量)。
持久化存储卷
持久卷类似于虚拟机中的磁盘。 它们表示可用于装载任何文件系统的原始块设备。 应用程序开发人员会与其应用程序或 Pod 定义一起创建永久性卷,这些卷通常与有状态应用程序的生命周期相关联。 有关详细信息,请参阅永久性卷。
永久性卷声明 (PVC)
永久性卷声明用于根据存储类自动预配存储。