Red Hat OpenShift users need efficient resource management of their applications to avoid overprovisioning and underprovisioning of resources which leads to unnecessary costs. In OpenShift 4.16 we introduced two expanders to autoscaler: the LeastWaste
expander and the Priority
expander. These expanders give users more control over how the cluster scales with autoscaler. In this article, we briefly cover these expanders and their utility.
What is cluster autoscaler?
OpenShift uses the cluster autoscaler to adjust cluster size based on resource requirements of workloads. The cluster autoscaler uses expanders strategies to decide which node group should be expanded when additional resources are required. The selection of an expander can influence your cluster's efficiency and cost effectiveness.
LeastWaste expander
The LeastWaste
expander allows for minimizing resource wastage when incorporating nodes. It determines the "waste" for each node addition by comparing the nodes capacity with the resources requested by pending pods. The expansion is carried out on the node group with the waste. The expander calculates waste for each node group by assessing the variance between a node's resources (CPU and memory) and those needed by pending pods. Then the autoscaler expands to the node group that has resources. The LeastWaste
expander is set up by updating the expander flag, with the expander type.
Priority expander
This expander empowers administrators to set a priority for each group of nodes deciding which groups should be expanded first based on established priorities. This is useful when certain workloads or node groups hold higher priority than others. To set up priority expanders, you must outline a series of expanders in the autoscalers configuration file. The expansion mechanism picks the node group with the priority (displayed as the numerical value) for expansion. For critical workloads this is advantageous. Priority
expanders can help in the environments where particular applications or services hold importance and require dedicated resources.
Here is a sample configuration snippet for Priority
expanders that gives preference to nodes, with CPU>=80% or memory>=70%:
expanderPriorities;
Name; high cpu expander
weight; 2
criteria;
Type; cpu
operator; ">="
value; 80%
Name; high memory expander
weight; 1
criteria;
Type; memory
operator; ">="
value; 70%
With these two expanders users can unlock the power of efficient autoscaling and optimize costs and resources.
Learn more about configuring cluster autoscaler in the OpenShift documentation. We encourage users to explore these new expanders and see the difference in cost savings. Don’t forget to share your feedback with us.
Note
This feature is currently unavailable in hosted control planes (HCP) or managed OpenShift, but it will be available soon. Stay tuned for updates.