Optimizing application throughput with condition-based autoscaling and employing alternatives to scaling in/out
University of New Brunswick
In containerization-based deployment, containers are managed by orchestrators, such as Kubernetes, to ensure reliability and scalability. The Kubernetes Horizontal Pod Autoscaler supports autoscaling by utilizing various metrics, such as CPU/memory utilization. The use of single or multiple metrics to make a scaling decision is a widely used approach, but there can be scenarios where a metric value may see high peaks due to external factors than the application workload. Therefore, the contribution of this thesis is threefold: first, we investigated the correlation between two or more metrics and observed patterns indicating the coupling. Second, we proposed a condition-based approach to improve the scaling decision making process. Third, we used a technique to kill old pods exceeding thresholds on metrics indicating correlation instead of scaling in or out as one example of how to improve autoscaling. We evaluated our methodology and compared the performance results against the default autoscaling mechanism for various workloads.