Auto scaling is a service that can dynamically scale computing resources to meet your business requirements. Auto scaling provides a more cost-effective method to manage your resources. This topic introduces auto scaling and the related components.
- Workload scaling. Auto scaling can adjust workloads, such as pods. For example, Horizontal Pod Autoscaler (HPA) is a typical workload scaling component that can change the number of replicated pods to scale the workload.
- Resource scaling. If the resources of a cluster cannot meet the scaling requirements of workloads, Elastic Compute Service (ECS) instances or elastic container instances are added to the cluster.
Scaling components for ACK clustersComponents for workload scaling
|HPA||A built-in component of Kubernetes. HPA is mainly used for online applications.||Online business||HPA uses Deployments and StatefulSets to scale workloads.||HPA|
|Vertical Pod Autoscaler (VPA)||An open source component. VPA is mainly used for monolithic applications.||Monolithic applications||VPA is applicable to applications that cannot be horizontally scaled. In practical scenarios, VPA is used when pods are recovered from anomalies.||Vertical pod autoscaling|
|CronHPA||An open source component provided by ACK. CronHPA is applicable to applications whose resource usage periodically changes.||Periodically changing workloads||CronHPA uses Deployments and StatefulSets to scale workloads. CronHPA is compatible with HPA. You can use CronHPA and HPA in combination to scale workloads.||CronHPA|
|Elastic-Workload||A component provided by ACK. Elastic-Workload is mainly used in scenarios where fine-grained scaling is required, for example, you want to distribute a workload to different zones.||Scenarios where fine-grained scaling is required||Elastic-Workload is applicable to online workloads that require fine-grained scaling. For example, some pods of a Deployment are scheduled to an ECS instance, and the rest of the pods are scheduled to elastic container instances.||Install the elastic workload component|
|Component||Description||Scenario||Time cost for delivery||References|
|cluster-autoscaler||cluster-autoscaler is an open source component provided by Kubernetes that can scale nodes in a cluster. cluster-autoscaler is integrated with auto scaling to provide more elastic and cost-effective scaling services.||cluster-autoscaler is applicable to all scenarios, especially online workloads, deep learning, and large-scale computing.||The time required to add 1,000 nodes to a cluster:
||Auto scaling of nodes|
|virtual-node||virtual-node is an open source component provided by ACK. virtual-node provides the runtime for serverless applications. Developers do not need to handle node resources and only need to create, manage, and pay for pods based on the actual usage.||virtual-node is used to handle traffic spikes, continuous integration and continuous delivery (CD/CD), and big data computing.||The time required to create 1,000 pods in a cluster:
||Deploy the virtual node controller and use it to create Elastic Container Instance-based pods|
|virtual-kubelet-autoscaler||virtual-kubelet-autoscaler is a component provided by ACK. virtual-kubelet-autoscaler is used to scale serverless applications.||virtual-kubelet-autoscaler is used to handle traffic spikes, CI/CD, and big data computing.||The time required to create 1,000 pods in a cluster: