Horizontal Pod Autoscaler 介绍

Horizontal Pod Autoscaler(HPA)是一项 Kubernetes 功能,用于将集群配置为自动扩缩其运行的服务。本节介绍 HPA 如何与 Kubernetes 一起工作。

为什么要使用 Horizo​​ntal Pod Autoscaler?

你可以使用 HPA 来自动扩缩 ReplicationController、Deployment 或 ReplicaSet 中的 pod 数量。HPA 会自动扩缩正在运行的 pod 数量以实现最高效率。影响 pod 数量的因素包括:

  • 允许运行的最小和最大 pod 数,由用户定义。
  • 资源指标中报告的 CPU/内存使用情况。
  • 第三方指标应用程序(如 Prometheus、Datadog 等)提供的自定义指标。

HPA 通过以下方式改进你的服务:

  • 释放硬件资源,避免资源被过多的 pod 浪费。
  • 按需提高/降低性能以达到服务级别协议。

HPA 的工作原理

HPA 架构

HPA 实现为一个控制循环,其周期由以下 kube-controller-manager 标志控制:

标志默认描述
—horizontal-pod-autoscaler-sync-period30sHPA 在 deployment 中审核资源/自定义指标的频率。
—horizontal-pod-autoscaler-downscale-delay5m0s完成缩减操作后,HPA 必须等待多长时间才能启动另一个缩减操作。
—horizontal-pod-autoscaler-upscale-delay3m0s完成扩展操作后,HPA 必须等待多长时间才能启动另一个扩展操作。

有关 HPA 的完整文档,请参阅 Kubernetes 文档

Horizo​​ntal Pod Autoscaler API 对象

HPA 是 Kubernetes autoscaling API 组中的 API 资源。当前的稳定版本是 autoscaling/v1,它只支持对 CPU 自动扩缩。要获得内存和自定义指标的扩缩支持,请改用 beta 版本 autoscaling/v2beta1

有关 HPA API 对象的更多信息,请参阅 HPA GitHub 自述文件