Background Information on HPAs
The Horizontal Pod Autoscaler (HPA) is a Kubernetes feature that allows you to configure your cluster to automatically scale the services it's running up or down. This section provides explanation on how HPA works with Kubernetes.
#
Why Use Horizontal Pod Autoscaler?Using HPA, you can automatically scale the number of pods within a replication controller, deployment, or replica set up or down. HPA automatically scales the number of pods that are running for maximum efficiency. Factors that affect the number of pods include:
- A minimum and maximum number of pods allowed to run, as defined by the user.
- Observed CPU/memory use, as reported in resource metrics.
- Custom metrics provided by third-party metrics application like Prometheus, Datadog, etc.
HPA improves your services by:
- Releasing hardware resources that would otherwise be wasted by an excessive number of pods.
- Increase/decrease performance as needed to accomplish service level agreements.
#
How HPA Works
HPA is implemented as a control loop, with a period controlled by the kube-controller-manager
flags below:
Flag | Default | Description |
---|---|---|
--horizontal-pod-autoscaler-sync-period | 30s | How often HPA audits resource/custom metrics in a deployment. |
--horizontal-pod-autoscaler-downscale-delay | 5m0s | Following completion of a downscale operation, how long HPA must wait before launching another downscale operations. |
--horizontal-pod-autoscaler-upscale-delay | 3m0s | Following completion of an upscale operation, how long HPA must wait before launching another upscale operation. |
For full documentation on HPA, refer to the Kubernetes Documentation.
#
Horizontal Pod Autoscaler API ObjectsHPA is an API resource in the Kubernetes autoscaling
API group. The current stable version is autoscaling/v1
, which only includes support for CPU autoscaling. To get additional support for scaling based on memory and custom metrics, use the beta version instead: autoscaling/v2beta1
.
For more information about the HPA API object, see the HPA GitHub Readme.