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 used for online applications.||Online business||HPA uses Deployments and StatefulSets to scale workloads.||HPA|
|VPA (alpha)||An open source component. Vertical Pod Autoscaler (VPA) is used for monolithic applications.||Monolithic applications||VPA is used for applications that cannot be horizontally scaled. Typically, VPA is used when pods are recovered from anomalies.||Vertical pod autoscaling|
|CronHPA||An open source component provided by ACK. CronHPA is used for 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 used in scenarios where fine-grained scaling is required. For example, you can use Elastic-Workload if you want to distribute a workload across 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 ack-kubernetes-elastic-workload|
|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.||Kubernetes Autoscaler is applicable especially for online workloads, deep learning tasks, and large-scale computing tasks.||The time required to add 100 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-node is used to handle traffic spikes, CD/CD, and big data computing.||The time required to create 1,000 pods in a cluster:||Install virtual-kubelet-autoscaler|
Logs of auto scaling activities
For more information about how to collect the logs of auto scaling activities, see Collect log files of system components.