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 对象,系统会将自动缩放程序默认配置文件添加到群集。 然后,可以使用 命令并传递具有更新值的 autoscalerconfig 对象,从而微调配置文件Set-AksHciCluster
中的参数。 无需在对象中提供所有参数,只需在对象中提供更新的参数。
使用自动缩放程序
可以在自动缩放程序配置文件中设置参数以配置自动缩放程序。 有关详细信息,请参阅如何使用自动缩放程序配置文件。
可以使用 PowerShell 启用、配置和禁用自动缩放程序。 有关详细信息,请参阅使用 PowerShell 进行群集自动缩放。
群集升级期间的群集自动缩放
在群集升级和更新期间,自动缩放程序会暂停,并且不会执行缩放操作,直到群集和群集中的所有节点池完成更新操作。 如果群集中的特定节点池更新到较新的 Kubernetes 版本,则会暂停该节点池的自动缩放程序。 在所有其他节点池上继续执行自动缩放操作。