Azure Arc 启用的 AKS 中的应用程序可用性

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

Azure Kubernetes 服务 (Azure Arc 启用的 AKS) 提供了一个完全受支持的容器平台,可在 Kubernetes 容器业务流程平台上运行云原生应用程序。 该体系结构支持运行虚拟化的 Windows 和 Linux 工作负载。

AKS 体系结构使用故障转移聚类分析和实时迁移构建,这些迁移会自动为目标 (工作负载) 群集启用。 在各种中断事件期间,托管客户工作负载的虚拟机可自由移动,而应用程序不会出现故障。 此体系结构意味着传统企业客户(作为 Azure Stack HCI 或 Windows Server 上的 AKS 的单一实例管理旧应用程序)可以获得与旧 VM 应用程序当前体验的类似 (或更好的) 运行时间。

本文介绍的一些基本概念适用于希望在启用实时迁移的 AKS Arc 上运行容器化应用程序的用户,以确保应用程序在中断期间可用。 Kubernetes 术语(例如“自愿中断”和“非自愿中断”)用于表示 Pod 中运行的应用程序的故障时间 。

什么是实时迁移?

实时迁移是一项 Hyper-V 功能,可用于在无停机的情况下将正在运行的虚拟机从一台 Hyper-V 主机透明地移动到另一台主机。 实时迁移的主要优势是灵活性;正在运行的虚拟机不绑定到单个主机。 这使用户可执行多种操作,例如在停用或升级主机之前清空虚拟机的特定主机。 与 Windows 故障转移群集配对时,实时迁移可以创建高度可用和容错的系统。

Azure Stack HCI 和 Windows Server 上的 AKS 的当前体系结构假定你在 Azure Stack HCI 群集环境中启用了实时迁移。 因此,所有 Kubernetes 工作器节点 VM 都是在配置实时迁移的情况下创建的。 发生中断时,可在物理主机上移动这些节点,确保平台高度可用。

显示已启用故障转移群集的 Azure Stack HCI 和 Windows Server 上的 AKS 的关系图。

在 Kubernetes 的基础上以单一实例的形式运行旧版应用程序时,此体系结构可满足高可用性需求。 Kubernetes 管理可用工作器节点上 Pod 的计划,而实时迁移则管理可用物理主机上的工作器节点 VM 的计划。

显示作为单一实例运行的示例旧应用程序的关系图。

应用程序中断方案

一项对比研究调查了在“Azure Stack HCI 和 Windows Server 上的 AKS”上的 VM 中运行的应用程序的恢复时间,该研究清楚表明,常见中断事件对应用程序的影响极小。 三种示例中断场景包括:

  • 应用导致物理计算机重启的更新。
  • 应用需重新创建工作器节点的更新。
  • 物理计算机的意外硬件故障。

注意

这些方案假定应用程序所有者仍使用 Kubernetes 相关性和非相关性设置来确保跨工作器节点正确调度 Pod。

中断事件 在 Azure Stack HCI 上的 VM 中运行应用程序 在 Azure Stack HCI 或 Windows Server 上的 AKS 上的 VM 中运行应用程序
应用导致物理计算机重启的更新 无影响 无影响
应用涉及重新创建工作器节点 (或重新启动 VM 的更新) 无影响 多种多样
物理计算机的意外硬件故障 6-8 分钟 6-8 分钟

应用导致物理计算机重启的更新

在物理主机维护事件(例如应用导致主机重启的更新)期间,不会对群集中运行的应用程序产生任何影响。 群集管理员会清空主机,并确保在应用更新之前实时迁移所有 VM。

应用涉及重新创建工作器节点的更新

此方案需关闭工作器节点 VM 来执行常规维护。 为了准备更新,群集管理员会清空并隔离节点,以便在应用更新之前将所有 Pod 逐出到可用的工作器节点。 更新完成后,工作器节点将重新加入并可用于计划。

注意

应用程序的可用性各不相同,因为它包括下载基础容器映像所需的时间,尤其是对于存储在公有云中的较大映像。 因此,建议使用小型基本容器映像,对于 Windows 容器,建议使用 nano server 基本映像。

物理计算机的意外硬件故障

在这种情况下,其中一个工作器节点 VM 中托管旧式应用程序容器/Pod 的物理计算机发生非自愿中断事件。 故障转移聚类分析将主机置于隔离状态,然后在 6 到 8 分钟后,开始将这些 VM 实时迁移到幸存主机的过程。 在这种情况下,应用程序停机时间相当于重启主机和工作节点 VM 所需的时间。

结论

AKS 故障转移聚类分析技术旨在确保 Azure Stack HCI 和 Windows Server 中的计算环境具有高可用性和容错能力。 不过,应用程序所有者仍然必须将部署配置为使用 Kubernetes 功能(例如 DeploymentsAffinity MappingRelicaSets),确保 Pod 在中断场景中具有复原能力。

后续步骤

Windows Server 和 Azure Stack HCI 上的 AKS 概述