Azure Arc 启用的 AKS 中的群集自动缩放

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

可以使用 Azure Kubernetes 服务 (AKS) 来调整在 AKS Arc 中运行应用程序工作负荷的节点数,以满足需求。 可以使用 PowerShell 启用自动缩放程序和管理目标群集中节点池的自动缩放。

本文介绍 Arc 启用的 AKS 中的自动缩放程序的上下文,以及自动缩放程序的工作原理。 若要使群集自动缩放能够有效工作,还可以使用 Kubernetes 水平 Pod 自动缩放程序,这是标准的 Kubernetes 组件。 有关 Kubernetes 水平 Pod 自动缩放程序的详细信息,请参阅 水平 Pod 自动缩放

群集自动缩放

在 AKS 中,群集自动缩放程序可监视群集中由于资源约束而无法进行计划的 Pod。 检测到问题时,节点池中的节点数会增加,以满足应用程序需求。 还会定期检查节点是否缺少正在运行的 Pod,随后根据需要减少节点数。 这种自动增加或减少 AKS 群集中的节点数的功能使你可以运行具有成本效益的高效群集。 自动缩放是系统通过自动化和包含特定参数的配置基于输入、度量值和规则来自动调整工作负载的功能

若要启用群集自动缩放程序,AKS 需要实现基本的资源管理。 AKS 估计资源要求,这些要求将在某个时间点触发自动缩放事件。 AKS 不会考虑来自 AKS Arc 外部的资源消耗。例如,启用自动缩放程序后添加 VM 时,此事件发生在自动缩放程序的上下文之外。

群集自动缩放的用途

自动缩放程序可自动将节点池的大小从指定的最小节点数增加到指定的最大节点数。 启用自动缩放时,自动缩放程序确定最大节点数是否可行,并警告你预配可用硬件资源是否过度。

自动缩放程序将跟踪所有已部署的目标群集和节点池中的可用资源和承诺的资源。 缩放程序将使用此数据做出明智的决策。 当自动缩放程序增加节点池时,自动缩放程序会检查资源的可用性。

AKS Arc 使用内置的 Kubernetes 自动缩放功能来支持类似于 Azure 自动缩放程序的操作。

群集自动缩放的工作原理

自动缩放程序会根据不断变化的应用程序需求进行调整。 随着工作日和晚上负载之间的需求变化,自动缩放程序会转移群集资源。 Kubernetes 群集以两种方式进行缩放:

  • 基于节点利用率的触发器。 群集自动缩放程序会监视由于资源约束而无法在节点上计划的 Pod。 当已有一段时间存在未使用的容量时,群集自动缩放程序会减少节点数。
  • 自动缩放程序配置文件中定义的触发器。 群集自动缩放程序对诸如缩放事件与资源阈值之间的时间间隔等触发器使用启动参数。 请参阅自动缩放程序配置文件

对节点池启用自动缩放时,除非使用 Set-AksHciCluster 上的 -ClusterAutoScalingProfile 参数替代一个或多个设置,否则将应用默认配置文件。 如果不启用节点自动缩放程序,在创建群集和节点池时,节点自动缩放程序将默认处于禁用状态。

如果为群集启用自动缩放程序但未提供 autoscalerconfig 对象,系统会将自动缩放程序默认配置文件添加到群集。 然后,可以使用命令并使用更新的值传递自动缩放程序配置对象来微调配置文件Set-AksHciCluster中的参数。 无需在对象中提供所有参数,只需在对象中提供更新的参数。

使用自动缩放程序

可以在自动缩放程序配置文件中设置参数以配置自动缩放程序。 有关详细信息,请参阅如何使用自动缩放程序配置文件

可以使用 PowerShell 启用、配置和禁用自动缩放程序。 有关详细信息,请参阅使用 PowerShell 进行群集自动缩放

群集升级期间的群集自动缩放

在群集升级和更新期间,自动缩放程序将暂停,并且群集中的所有节点池完成更新操作之前,不会发生缩放操作。 如果群集中的特定节点池更新为较新的 Kubernetes 版本,该节点池的自动缩放程序将暂停。 自动缩放操作在所有其他节点池上继续。

后续步骤