你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器存储是一项基于云的卷管理、部署和业务流程服务,专为容器原生构建。 它与 Kubernetes 集成,允许动态并自动地预配永久性卷,为运行在 Kubernetes 群集上的有状态应用程序存储数据。
若要开始使用 Azure 容器存储,请参阅 将 Azure 容器存储与 Azure Kubernetes 服务配合使用。
重要说明
本文介绍 Azure 容器存储(版本 2.x.x)中提供的特性和功能,目前仅支持本地 NVMe 磁盘作为支持存储。 有关早期版本的详细信息,请参阅 Azure 容器存储(版本 1.x.x)文档。
Azure 容器存储为何有用
传统上,为容器启用持久性存储意味着手动配置容器存储接口 (CSI) 驱动程序以连接到专为虚拟机设计的存储服务。 这种方法通常导致操作复杂性增加,以及应用程序可用性、可伸缩性、性能和成本方面的潜在挑战。
Azure 容器存储通过提供完全托管的 Kubernetes 原生卷编排解决方案来简化此过程。 使用 Azure 容器存储时,无需管理单独的 CSI 驱动程序。 相反,可以使用内置存储控制器直接在 Kubernetes 环境中创建和管理存储。 这使得存储管理更容易且更与容器集成。
可以使用 Azure 容器存储实现下列目的:
加速 VM 到容器的采用: 使用 Azure 容器存储,可以在以前仅适用于虚拟机的容器中使用相同的快速而强大的存储选项。 例如,可以将本地 NVMe 磁盘用于需要非常低延迟和高性能的工作负载,例如数据库(如 PostgreSQL)和 AI/ML 工作负载(如 Ray 和 Kubeflow)。
使用 Kubernetes 简化卷管理: 使用 Azure 容器存储,可以通过 Kubernetes 原生工具和工作流直接预配、管理和监视存储卷。 这种统一体验无需在多个管理接口之间切换,从而简化容器化工作负荷的存储作。
通过开源实现云无关的部署:Azure 容器存储支持通过开源组件的 Azure Kubernetes 服务(AKS)和自托管 Kubernetes 集群。 这意味着可以在 Azure 或其他云中运行工作负荷,以便更轻松地管理多云或混合环境中的存储。
主要优点
有状态 Pod 的无缝扩展: Azure 容器存储通过使用高性能的网络块存储协议(如 NVMe-oF 或 iSCSI)来挂载持久卷,从而实现快速扩展。 此方法可确保快速附加和分离作,使你可以动态扩展或缩减资源,而不会造成应用程序中断的风险。 在 Pod 初始化或故障转移期间,可以跨群集快速重新分配永久性卷,从而增强应用程序复原能力,并支持 Kubernetes 上的大规模有状态工作负载。
针对有状态工作负荷的优化性能: Azure 容器存储通过 TCP 使用 NVMe-oF 提供高读取吞吐量和近本机磁盘写入速度。 此体系结构为各种容器化工作负荷(包括第 1 层 I/O 密集型、常规用途、吞吐量敏感和开发/测试方案)实现经济高效的性能。 它还可加速永久性卷的附加和分离操作,从而减少 Pod 故障转移时间并提高应用程序的复原能力。
Kubernetes 原生卷编排: 无缝创建存储类和持久卷,管理卷的生命周期,包括配置、扩展、删除和执行操作(如捕获快照),所有这些都可使用熟悉的
kubectl命令。 这种统一的方法无需在不同的工具或接口之间切换,从而简化 Kubernetes 环境中的存储管理。开源和社区驱动: Azure 容器存储是作为开源项目开发的。 可以通过 AKS 扩展安装它,如 快速入门指南中所述,也可以使用 local-csi-driver 存储库通过 Helm 进行安装。 这种开放方法使用户能够参与、自定义和集成现有的 Kubernetes 工作流和模式。
受支持的存储类型
Azure 容器存储为基于 Linux 的 Kubernetes 群集上的持久卷提供 Kubernetes 原生编排和管理层。 它使用现有的 Azure 存储产品/服务作为基础数据存储。 目前,Azure 容器存储 v2 仅支持本地 NVMe 磁盘来备份存储。
| 存储类型 | 说明 | 工作负荷 | 产品/服务 | 预配模型 |
|---|---|---|---|---|
| 本地 NVMe 磁盘 | 利用 AKS 节点上的本地 NVMe 磁盘 | 最适合需要超低延迟且可以容忍无数据持久性或具有内置复制(例如 PostgreSQL)的应用程序。 | 在选择的 Azure VM 大小上可用,例如 存储优化 VM 大小 和 GPU 加速 VM 大小。 | 部署在 Kubernetes 群集中。 自动发现并获取群集节点上的本地 NVMe 磁盘,以便进行卷部署。 |
对不同存储类型的功能支持
下表列出了 Azure 容器存储的主要功能,并指示它们是否支持在本地 NVMe 磁盘上。
| 功能 | 本地 NVMe |
|---|---|
| 临时卷 | 支持 |
| 永久性卷 | 支持1 |
| PV 扩展/调整大小 | 支持 |
| 快照 | 不支持 |
| 复制 | 不支持 |
1 默认情况下,Azure 容器存储对本地 NVMe 磁盘使用通用临时卷,这意味着在删除 Pod 后不会保留数据。 若要启用与 Pod 生命周期无关的永久性卷,请将相应的注释添加到永久性卷声明中。 有关详细信息,请参阅 使用本地 NVMe 磁盘创建永久性卷。
区域可用性
Azure 容器存储仅适用于部分 Azure 区域:
- (非洲)南非北部
- (亚太)澳大利亚东部
- (亚太)东亚
- (亚太)日本东部
- (亚太)韩国中部
- (亚太)东南亚
- (亚太)印度中部
- (欧洲)法国中部
- (欧洲)德国中西部
- (欧洲)欧洲北部
- (欧洲)西欧
- (欧洲)英国南部
- (欧洲)瑞典中部
- (欧洲)瑞士北部
- (中东)阿联酋北部
- (北美)美国东部
- (北美)美国东部 2
- (北美)美国西部
- (北美)美国西部 2
- (北美)美国西部 3
- (北美)美国中部
- (北美)美国中北部
- (北美)美国中南部
- (北美)美国中西部
- (北美)加拿大中部
- (北美)加拿大东部
- (南美洲)巴西南部
选择主要版本的注意事项
Azure 容器存储提供两个主要版本:v1 和 v2。 根据基础存储选项选择适当的版本。
- 本地 NVMe 磁盘:选择 Azure 容器存储 v2。
- Azure 磁盘:选择 Azure 容器存储 v1。 Azure 容器存储 v2 尚不支持 Azure 磁盘。
- Azure 弹性 SAN:选择 Azure 容器存储 v1。 Azure 容器存储 v2 尚不支持 Azure 弹性 SAN。
术语表
若要更好地导航 Azure 容器存储和 Kubernetes 概念,请熟悉以下基本术语:
容器化
仅打包具有操作系统和所需依赖项的应用程序代码,以创建单个可执行文件。
Kubernetes
Kubernetes 是一个开源系统,可以自动部署、缩放和管理容器化应用程序。
Azure Kubernetes 服务 (AKS)
Azure Kubernetes 服务是一项托管的 Kubernetes 服务,通过减少 Azure 的运营开销简化了在 Azure 中部署托管 Kubernetes 群集的过程。 Azure 会处理关键任务,例如运行状况监视和维护。
Cluster
Kubernetes 群集是运行容器化应用程序的一组计算节点 (VM)。 每个节点由控制平面管理,包含运行 Pod 所需的服务。
Pod
Pod 是由一个或多个容器构成的组,这些容器具有共享的存储和网络资源,以及有关如何运行容器的规范。 Pod 是 Kubernetes 群集中最小的可部署单元。
存储类
Kubernetes 存储类定义了使用永久性卷动态创建存储单位的方式。 有关详细信息,请参阅 Kubernetes 存储类。
数据量
Kubernetes 卷是一个目录,其中包含的数据可供给定 Pod 中的容器访问。 卷可以是永久性的,也可以是临时的。 卷在存储池中进行精简预配,并共享存储池的性能特征(IOPS、带宽和容量)。
永久性卷
永久性卷类似于 VM 中的磁盘。 它们表示可用于装载任何文件系统的原始块设备。 应用程序开发人员会与其应用程序或 Pod 定义一起创建永久性卷,这些卷通常与有状态应用程序的生命周期相关联。 有关详细信息,请参阅永久性卷。
永久性卷声明 (PVC)
持久卷声明用于基于存储类自动预配存储。