Auto Scaling in the Cloud: An Evaluation of Kubernetes
Abstract
Autoscaling is a crucial component of cloud computing, adjusting the amount of available
resources dynamically to match service demand. Modifications to resource pools are
required to maintain user-defined highest and lowest boundaries on performance metrics
such as utilisation level. Today, the cloud business is embracing container technology for
large-scale systems for internal and commercial purposes. That is because containers
provide plenty of features, including a constant lightweight runtime environment provided by
operating system virtualisation, as well as reduced overhead for maintaining and scaling
applications. For instance, Kubernetes, which is currently the de facto cloud-based container
orchestration framework, as recent advances have demonstrated. This is because of the
features that Kubernetes delivers to the market, including an application-centric interface
and plug-and-play horizontal scaling processes. Autoscaling has a vast set of academic
research to draw on, but while Kubernetes offers several autoscaling algorithms, they are
widely unexplored.
The aim of this project is to evaluate the performance of the Kubernetes cluster Autoscaler,
which can be configured to perform a range of autoscaling types from a single node pool
(CA). Microsoft Azure provides the Kubernetes environment for the experiments. The
experiments support the findings by altering the autoscaling type and workload over time.
For instance, horizontal pod autoscaling and cluster autoscaling are being examined in this
project for a variety of workloads. Additionally, this project tests the TeaStore microservices
application's behaviour using the JMeter application via experiments on Azure Kubernetes
clusters, hence analysing the Autoscaler performance of the Kubernetes cluster.
Additionally, Prometheus is utilised to collect Prometheus Custom Metrics (PCM) data in
terms of CPU utilisation and Grafana is used to visualise the results.
The project's findings indicate that the performance of the Kubernetes cluster Autoscaler is
affected by the size of the cluster's nodes, regardless of the cluster's overall size in both
forms of autoscaling investigated. As a result, autoscaling Kubernetes clusters with a large
node size perform better and faster than clusters with a small node size. However, clusters
with a large size of nodes consume more resources than clusters with a small size of nodes