Finding the Sweet Spot: Optimizing Kubernetes for Scalability and Resilience : A Comprehensive Study on Improving Resource Utilization and Performance in Containerized Environments.

University essay from Karlstads universitet/Fakulteten för hälsa, natur- och teknikvetenskap (from 2013); Karlstads universitet/Avdelningen för datavetenskap

Abstract: Modern technology is rapidly and efficiently expanding, and by looking at the largest companies by market cap, one will find enterprises like Apple, Microsoft, Alphabet, and Meta. Given the complexity of modern software architecture, there arises a necessity for a software architecture that is both scalable and adaptable. This demand has given rise to the adoption of microservices as a preferred approach for building complex and distributed applications. However, managing microservices effectively is a difficult task. Therefore, Google created an orchestration tool called Kubernetes (K8). The primary purpose of this thesis is to extend the information about the characteristics of a K8 cluster by monitoring its performance in various scenarios. There is substantial documentation about how K8 works and why it is used. However, insufficient information exists regarding the performance of K8 in different scenarios.  Extensive testing has transpired to extend the information about the characteristics of K8. Parameters such as the number of Pods, containers, mounts, and CPU cores have been thoroughly tested. Additionally, parameters such as container load, CPU limitation, container distribution, and memory allocation have been examined. The core result will include startup time and CPU utilization. The startup time is essential in a K8 cluster because of its ephemeral characteristics, meaning each Pod is short-lived and will restart frequently. CPU utilization testing is essential to analyze how K8 allocate resources and perform with different amounts of resources.  The results show that the most significant parameters regarding startup time are, as one might expect, the number of containers, CPUs, Pods, and the load in each Pod. However, the complexity of the Pod, for instance, the number of mount points, has significantly less effect on the cluster than expected. Regarding CPU utilization, the results show that K8 does lower CPU usage if possible, resulting in equal CPU usage even with different numbers of CPUs. The most significant CPU usage parameter is the load of the application. Finally, this thesis work has filled some gaps in how a K8 cluster behaves during various circumstances, for instance, varying numbers of Pods, containers, or CPUs. One must consider several aspects while designing a K8 cluster. However, all aspects have not been considered, and the usage of K8 increases daily. Therefore, this thesis will hopefully be one of many reports investigating how a K8 cluster behaves and what to consider when building a cluster.

  AT THIS PAGE YOU CAN DOWNLOAD THE WHOLE ESSAY. (follow the link to the next page)