本文概述了用于管理和执行有状态容器化应用程序、其资源及数据的应用程序数据管理的解决方案。
体系结构
下载此体系结构的 Visio 文件。
数据流
在 Azure 订阅上创建一个 Azure NetApp 文件帐户,并定义容量池。 这些池映射到实现所需的服务级别,例如标准、高级和超高性能。
部署一个或多个 AKS 群集。 群集需要:
- 位于 AKS 和 Azure NetApp 文件可用的区域。 有关这些产品可用的区域,请参阅可用产品(按区域)。
- 位于具有对子网的直接访问权限的虚拟网络中(子网已委派给 Azure NetApp 文件) 有关详细信息,请参阅 Azure NetApp 文件网络规划指南。
用户注册 Astra Control 服务帐户。 Astra Control 服务使用具有参与者访问权限的 Azure 服务主体来定位要管理的 AKS 群集。 Astra Control 服务安装 Astra Trident,并在将群集添加到 Astra Control Service 时创建映射到每个服务层的 StorageClasses。 Astra Trident 使用自动部署的 StorageClass (SC) 对象(这些对象映射到 Azure NetApp 文件容量池)从应用程序 PersistentVolumeClaims (PVC) 创建 PersistentVolumes (PV)。 该映射考虑了容量池的服务级别。
用户在 AKS 群集上安装应用程序。 可能的部署方法包括 Helm 图表、运算符和 YAML 清单。 以上应用程序可按标签或命名空间进行分组。 Astra Trident 使用
StorageClass
对象,根据 PersistentVolumeClaims 预配永久性卷。Astra Control Service 管理应用程序及其关联的资源,例如 Pod、服务、部署和
PersistentVolumeClaim
(PVC) 对象。 此外,还管理绑定到 PVC 的 PersistentVolume (PV)。 用户使用以下方法之一定义应用程序:- 将其限制在命名空间中
- 使用自定义 Kubernetes 标签对资源进行分组
用户还可将群集范围的对象(如 storageclasses)与特定的应用程序组合在一起进行管理。
Astra Control 服务协调时间点快照与备份、备份策略以及即时活动克隆,以帮助保护应用程序工作负载。 Astra Control 服务通过以下方式实现此保护:
创建 Astra Control 服务保护策略。 这些策略可用于快照和/或备份,并指定计划和备份目标。 通过这些策略,可以按预定计划自动保护应用程序。
按需创建单个应用程序或一组应用程序的快照。
为单个应用程序或一组应用程序创建即时备份或克隆。
发生灾难或应用故障时,备份和快照会还原应用程序的状态。 用户可以跨命名空间和 AKS 群集克隆和迁移应用。 群集可以位于同一区域或单独的区域。
组件
- AKS 是一项完全托管的 Kubernetes 服务,可以轻松部署和管理容器化应用程序。 AKS 提供无服务器 Kubernetes 技术(一种整合的持续集成和持续交付 (CI/CD) 体验)以及企业级安全性和管理。
- Azure NetApp 文件是一项 Azure 存储服务。 此服务提供企业级网络文件系统 (NFS) 和服务器消息块 (SMB) 文件共享。 Azure NetApp 文件可以轻松迁移和运行基于文件的复杂应用程序,而无需更改代码。 此服务非常适合 Kubernetes 环境中具有永久性卷的用户。
- Azure 虚拟网络是 Azure 中专用网络的基本构建基块。 虚拟机等 Azure 资源可以通过虚拟网络安全地相互通信、与 Internet 和本地网络通信。
- Astra Control 服务是一项完全托管的应用程序感知数据管理服务。 Astra Control Service 可帮助你在公有云和本地环境中管理、保护和移动数据丰富的 Kubernetes 工作负载。 此服务为 Kubernetes 工作负载提供数据保护、灾难恢复和迁移。 Astra Control 服务使用业界领先的 Azure NetApp 文件数据管理技术执行快照、备份、跨区域复制和克隆。
备选方法
可以使用自定义的多管齐下的方法来单独备份或复制永久性卷、Kubernetes 资源和还原应用程序时所需的其他配置状态资源。 但此方法可能:
- 使用繁琐。
- 难以与所有应用兼容。
- 难以跨典型企业拥有的多个应用和环境进行缩放。
在某些环境中,可以通过避免跨对等虚拟网络流量来降低成本。 要消除此流量,请简化解决方案。 具体而言,将委派给 Azure NetApp 文件的 AKS 群集和子网放入同一虚拟网络中,如下图所示:
下载此体系结构的 Visio 文件。
方案详细信息
使用容器化应用程序时,执行应用程序数据保护可能很困难。 应用程序由多个微服务组成,这些微服务必须作为一个实体进行管理。 在 Kubernetes 上部署关键工作负载时,应用程序数据管理应:
- 简单。 建立数据保护策略和按需备份应直观明确。 这些策略不应依赖于底层基础结构的详细信息。
- 可移植。 为了使应用程序的跨区域移动成为可能,多个 Kubernetes 群集应能够使用备份。
- 应用程序感知。 解决方案应保护整个应用程序,包括标准 Kubernetes 资源,如机密、
ConfigMap
对象和永久性卷。 你还需要保护自定义 Kubernetes 资源。 如可能,在快照和备份之前,过程应会暂停应用程序。 这种做法可防止在备份期间丢失动态数据。
NetApp Astra Control Service 是一种用于执行有状态应用程序数据管理的解决方案,可帮助你实现这些目标。 Astra Control Service 提供数据保护、灾难恢复和应用程序可移动性功能。 该服务为有状态 AKS 工作负载提供一组丰富的存储和应用程序感知数据管理服务。 Azure NetApp 文件的数据保护技术是这些服务的基础。
可能的用例
此解决方案适用于运行有状态应用程序的系统:
- 持续集成 (CI) 系统,例如 Jenkins
- MySQL、MongoDB 和 PostgreSQL 等数据库工作负载
- AI 和机器学习组件,如 TensorFlow 和 PyTorch
- Elasticsearch 部署
- Kafka 应用程序
- 源代码管理平台,如 GitLab
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可靠性
可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性支柱概述。
部署 AKS 群集时,需在单个区域中进行。 为保护应用程序工作负载,最好跨多个区域的多个 AKS 群集部署工作负载。 影响部署的因素包括 AKS 区域可用性和 Azure 配对区域。 跨多个可用性区域部署群集时,可以在单个区域中跨多个区域分配节点。 这种 AKS 群集资源的分布可提高群集的可用性,因为它们可以在特定区域发生故障时进行复原。
Azure NetApp 文件设计为具备高可用性。 它基于所有闪存存储系统的高度可用的裸机机群构建。 有关此服务的可用性保证,请参阅 Azure NetApp 文件的 SLA。
Azure NetApp 文件支持跨区域复制,以实现灾难恢复。 你可以在 Azure 区域对之间连续复制卷。 有关跨区域复制的详细信息,请参阅以下资源:
- 有关一般信息,请参阅 Azure NetApp 文件卷的跨区域复制。
- 有关跨区域复制的要求,请参阅使用跨区域复制管理灾难恢复。
- 有关配置跨区域复制的信息,请参阅为 Azure NetApp 文件创建卷复制。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
使用 Azure 定价计算器估算以下组件的成本:
- AKS
- Azure NetApp 文件
- 虚拟网络
若需了解 Astra Control Service 定价计划,请参阅定价。 通过采用 Astra Control 服务,可以专注于应用程序,而不是花费时间和资源来构建无法缩放的自定义解决方案。 Astra Control 服务在 Azure 市场上提供。
要运行详细的带宽和定价计算,请使用 Azure NetApp 文件性能计算器。 可使用基本和高级计算器。
卓越运营
卓越运营涵盖了部署应用程序并使其在生产环境中保持运行的运营流程。 有关详细信息,请参阅卓越运营支柱概述。
使用 Kubernetes 控制平面时,监视基础结构和平台层非常重要。 Astra Control 服务提供了一个统一的控制平面,可用于跨多个 AKS 群集定义和管理应用程序保护策略。 仪表板提供了一种持续处理跨区域工作负载的方式。 Astra Trident 还提供一组丰富的 Prometheus 指标,可用于监视预配的存储。
性能效率
性能效率是指工作负荷能够以高效的方式扩展以满足用户对它的需求。 有关详细信息,请参阅性能效率要素概述。
AKS 群集可以添加额外的工作器节点以提高可伸缩性。 要缩放解决方案,可以添加节点池或缩放现有节点池。 这些步骤会增加群集中的节点数、核心总数和容器化应用程序可用的内存。
在每个虚拟网络中,只能为 Azure NetApp 文件委派一个子网。
使用 Azure NetApp 文件网络功能的基本配置时,每个虚拟网络限制为 1,000 个 IP 地址。 标准网络功能配置不会限制 IP 地址数。 有关详细信息,请参阅可配置的网络功能。 有关 Azure NetApp 文件的资源限制的完整列表,请参阅 Azure NetApp 文件的资源限制。
Azure NetApp 文件提供多个性能层。 使用 Astra Control Service 发现 AKS 群集时,载入过程会创建映射到标准层、高级层和超高性能服务层的特选 StorageClass
对象。 当用户部署应用程序时,他们会选择符合要求的存储层。 多个容量池可以共存。 预配的卷具有对应于服务层的性能保证。 有关 Azure NetApp 文件支持的服务级别列表,请参阅 Azure NetApp 文件的服务级别。
部署此方案
要实现此解决方案,需要一个 Azure 帐户。 免费创建帐户。
要部署此方案,请执行以下步骤:
- 注册资源提供程序(可以使用 Azure NetApp 文件)。
- 查看将 Astra Control 服务与 AKS 配合使用的要求。
- 使用 Azure 门户创建 NetApp 帐户。
- 在 Azure NetApp 文件帐户上设置容量池。
- 为 Azure NetApp 文件委派子网。
- 为 Astra Control 服务创建服务主体,用于发现 AKS 群集并执行备份、还原和数据管理操作。
- 通过创建 NetApp Cloud Central 帐户注册 Astra Control 服务。
- 将 AKS 群集添加到 Astra Control 服务以开始管理应用程序。
- 在 Astra Control 服务中检测应用程序。 发现和管理应用程序的方式取决于部署和标识的方式。 典型的标识策略包括在专用命名空间中对应用程序对象进行分组、为构成应用程序的对象分配标签以及使用 Helm 图表。 Astra Control 服务支持这三种策略。
- 建立保护策略(用于备份和还原应用程序)。 在定义保护策略之前,请明确标识工作负载。 一个先决条件是,Astra Control 服务可以个别地检测每个应用程序。 有关详细信息,请参阅开始管理应用。
若需了解能帮助保护应用程序的步骤,请参阅使用 Astra Control Service 和 Azure NetApp 文件对 AKS 工作负载进行灾难恢复。
有关 Astra Control Service 的详细信息,请参阅 Astra Control Service 文档。
作者
本文由 Microsoft 维护, 最初由以下参与者撰写。
主要作者:
- Arnt de Gier | 技术营销工程师
其他参与者:
- Paolo Salvatori | 首席客户工程师
后续步骤
有关使用 AKS 部署群集的信息,请参阅教程:部署 Azure Kubernetes 服务 (AKS) 群集。
要开始使用 Azure NetApp 文件,请参阅快速入门:设置 Azure NetApp 文件并创建 NFS 卷。
要了解有关 Astra Control 服务的详细信息,请参阅 Astra Control 服务文档。
有关使用 Astra Control 服务进行灾难恢复的深入说明,请参阅使用 Astra Control 服务和 Azure NetApp 文件对 AKS 工作负载进行灾难恢复。
若要详细了解如何跨多个区域运行 AKS 群集的多个实例,请参阅多区域群集的 AKS 基线。
有关解决方案组件的一般信息,请参阅以下资源: