节点和 Pod 可伸缩性

已完成

随着需求的不断增加,Kubernetes 可以通过水平 Pod 自动缩放(HPA)向现有节点添加更多 Pod 来横向扩展。 如果无法再计划其他 Pod,则需要通过 AKS 群集自动缩放来增加节点数。 完整的缩放解决方案必须能够同时缩放 Pod 副本和群集中的节点计数。

有两种方法:自动缩放或手动缩放。

手动或编程方式要求监视和设置有关 CPU 使用率或自定义指标的警报。 对于 Pod 缩放,应用程序操作员可以通过 Kubernetes API 调整 ReplicaSet 来增加或减少 Pod 副本数。 对于群集缩放,一种方法是在 Kubernetes 调度器失败时收到通知。 另一种方法是监视一段时间内挂起的 Pod。 可以通过 Azure CLI 或门户调整节点计数。

建议使用自动缩放方法,因为其中一些手动机制内置于自动缩放程序中。

水平 Pod 自动缩放程序

水平 Pod 自动缩放程序 (HPA) 是可缩放 Pod 数的 Kubernetes 资源。

在 HPA 资源中,建议设置最小和最大副本计数。 这些值约束自动缩放边界。

HPA 可以根据 CPU 利用率、内存使用情况和自定义指标进行缩放。 仅提供默认的 CPU 利用率。 HorizontalPodAutoscaler 定义指定这些指标的目标值。 例如,规范设置目标 CPU 利用率。 运行 Pod 时,HPA 控制器使用 Kubernetes 指标 API 检查每个 Pod 的 CPU 使用率。 它将该值与目标利用率进行比较,并计算比率。 然后,它使用该比率来确定 Pod 是过度分配还是分配不足。 它依赖于 Kubernetes 计划程序将新 Pod 分配到节点或从节点中删除 Pod。

群集自动缩放程序

群集自动缩放程序是一个 AKS 加载项组件,用于缩放节点池中的节点数。 应在集群配置期间添加它。 需要为每个用户节点池创建单独的群集自动缩放程序。

群集自动缩放程序是使用 Kubernetes 计划程序启动的。 当 Kubernetes 计划程序由于资源限制而无法计划 Pod 时,自动缩放程序会自动在节点池中预配一个新节点。 相反,群集自动缩放程序会检查节点未使用的容量。 如果节点未按预期容量运行,Pod 会移至另一个节点,并会删除未使用的节点。

启用自动缩放程序时,设置最大节点计数和最小节点计数。 建议的值取决于工作负载的性能预期、希望群集增长多少以及成本影响。 最小数目是该节点池的预留容量。 在此参考实现中,由于工作负荷的简单性质,最小值设置为 2。

对于系统节点池,建议的最小值为 3。