在 AKS Arc 群集上使用群集自动缩放程序

适用于:Azure Local 上的 AKS

若要跟上 Kubernetes 中的应用程序需求,可能需要调整运行工作负荷的节点数。 群集自动缩放程序组件可监视群集中由于资源约束而无法进行计划的 Pod。 当群集自动缩放程序检测到问题时,它会纵向扩展节点池中的节点数来满足应用程序需求。 它还会定期检查节点是否缺少正在运行的 Pod,并根据需要纵向缩减节点数。 本文介绍如何在 AKS Arc 中启用和管理群集自动缩放程序。

注释

在 Azure 本地群集上启用自动缩放之前,请查看 Azure 本地版 AKS 的规模要求 ,以确保环境满足所需的限制。

在新群集上启用群集自动缩放程序

使用az aksarc create命令创建 AKS Arc 群集,并在群集的节点池上启用和配置自动缩放程序,使用--enable-cluster-autoscaler参数并指定节点的--min-count--max-count。 以下示例命令创建具有单个节点的群集,启用群集自动缩放程序,并设置至少一个节点和最多三个节点:

az aksarc create \
--resource-group myResourceGroup \
--name my-aks-arc-cluster \
--custom-location $customLocationId 
--vnet-ids $vnetId
--generate-ssh-keys
--aad-admin-group-object-ids $entraIds
--node-count 1 \
--enable-cluster-autoscaler \
--min-count 1 \
--max-count 3

创建群集并配置群集自动缩放程序设置需要几分钟时间。

在现有群集上启用群集自动缩放程序

使用az aksarc update命令更新现有群集,并通过使用--enable-cluster-autoscaler参数为节点指定--min-count--max-count来启用和配置群集自动缩放器。 以下示例命令更新现有 AKS Arc 群集以在群集上启用群集自动缩放程序,并设置至少一个节点和最多三个节点:

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

更新群集并配置群集自动缩放程序设置需要几分钟时间。

在群集上禁用群集自动缩放程序

使用 az aksarc update 命令和 --disable-cluster-autoscaler 参数禁用群集自动缩放程序:

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --disable-cluster-autoscaler

群集自动缩放程序处于禁用状态时,不会删除节点。

更新群集自动缩放程序设置

随着应用程序需求发生变化,可能需要调整群集自动缩放程序节点计数以实现高效缩放。 使用 az aksarc update 命令更改节点计数,使用 --update-cluster-autoscaler 参数并为该节点指定更新的 --min-count--max-count,更新群集自动缩放程序。

az aksarc update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

使用群集自动缩放程序配置文件

可以通过更改群集范围的自动缩放程序配置文件中的默认值,来配置群集自动缩放程序的更高粒度详细信息。 例如,在节点未充分利用 10 分钟后,将发生纵向缩减事件。 如果你的工作负载每 15 分钟运行一次,则可能需要更改自动缩放程序配置文件,以便在 15 到 20 分钟后纵向缩减未充分利用的节点。 启用群集自动缩放程序后,除非指定不同的设置,否则将使用默认配置文件。

群集自动缩放程序配置文件设置

下表列出了群集自动缩放程序配置文件的可用设置:

设置 说明 默认值
scan-interval 重新评估群集纵向扩展或缩减的频率。 10 秒
scale-down-delay-after-add 纵向扩展后多长时间纵向缩减评估恢复。 10 分钟
scale-down-delay-after-delete 删除节点后多长时间纵向缩减评估恢复。 scan-interval
scale-down-delay-after-failure 纵向缩减失败后多长时间纵向缩减评估恢复。 3 分钟
scale-down-unneeded-time 节点闲置多长时间之后才有资格进行纵向缩减。 10 分钟
scale-down-unready-time 未准备就绪的节点闲置多长时间之后才有资格进行纵向缩减。 20 分钟
scale-down-utilization-threshold 节点利用率级别(定义为所请求资源的总和除以容量),其中可以考虑对节点进行纵向缩减。 0.5
max-graceful-termination-sec 尝试对节点进行纵向缩减时,群集自动缩放程序等待 Pod 终止的最大秒数。 600 秒
balance-similar-node-groups 检测类似节点池并在各池之间均衡节点数。 false
expander 扩展器在纵向扩展中使用的节点池的类型。 可能的值包括 most-podsrandomleast-wastepriority
skip-nodes-with-local-storage 如果 true,群集自动缩放程序不会删除包含本地存储(例如,EmptyDir 或 HostPath)的 Pod 的节点。 true
skip-nodes-with-system-pods 如果为 true,则群集自动缩放程序不会从 kube-system 中删除具有 Pod 的节点(DaemonSet 或 mirror Pod 除外)。 true
max-empty-bulk-delete 可同时删除的空节点的最大数目。 10 个节点
new-pod-scale-up-delay 对于像突发或批量扩容这样的场景,如果你希望在 Kubernetes 调度程序能够计划所有 Pod 之前不让 CA 进行操作,可以指示 CA 忽略未达到指定年龄的未计划 Pod。 0 秒
max-total-unready-percentage 群集中未就绪节点的最大百分比。 超过此百分比后,CA 将暂停操作。 45%
max-node-provision-time 自动缩放程序等待节点预配的最长时间。 15 分钟

在新群集上设置群集自动缩放程序配置文件

使用 az aksarc create 命令创建 AKS Arc 群集,并使用 cluster-autoscaler-profile 参数设置群集自动缩放程序配置文件:

az aksarc create \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --node-count 1 \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3 \
  --cluster-autoscaler-profile scan-interval=30s

在现有群集上设置集群自动扩缩器配置

使用 az aksarc update 命令和 cluster-autoscaler-profile 参数在现有群集上设置群集自动缩放程序。 以下示例将扫描间隔设置配置为“30 秒”:

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --cluster-autoscaler-profile scan-interval=30s

将群集自动缩放程序配置文件重置为默认值

使用 az aksarc update 命令重置群集自动缩放程序配置文件:

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --cluster-autoscaler-profile ""

有效使用自动缩放程序

将群集和节点池配置为自动缩放后,可以选择配置工作负荷,使其利用水平自动伸缩功能进行缩放。

注释

Microsoft未正式支持以下指南。 它作为基于开源做法的最佳做法建议进行共享。

有两种方法可用于工作负荷缩放:

  • Kubernetes 水平 Pod 自动缩放程序:基于负载特征,水平 Pod 自动缩放程序(也称为 水平自动缩放程序)将应用程序部署的 Pod 缩放到 Kubernetes 群集中的可用节点。 如果没有更多节点可供调度,水平自动伸缩器将实例化一个新的节点以便调度 Pod。 如果应用程序负载消退,节点将再次缩减。 若要使水平 Pod 自动缩放程序正常工作,必须在 AKS 群集中手动部署指标服务器组件。 有关水平 Pod 自动缩放程序规则的详细信息,请参阅 Kubernetes 水平 Pod 自动缩放程序
  • Kubernetes 节点反亲和性规则:Kubernetes 部署的反亲和性规则可以指定一组 Pod 不能在同一节点上扩展,需要使用其他节点来扩展工作负载。 结合应用程序实例的负载特征或目标 Pod 数,水平自动缩放程序实例化节点池中的新节点以满足请求。 如果应用程序需求消退,水平自动缩放程序会再次缩减节点池。 有关 Kubernetes Pod 相关性规则的详细信息,请参阅 将 Pod 分配到节点

后续步骤

本文介绍了如何自动缩放 AKS Arc 节点数。 若要手动缩放节点池,请参阅 管理 AKS Arc 群集中的节点池。