Panagiotis Iliadis, "Dynamic microservice placement in Kubernetes in the cloud", Diploma Work, School of Electrical and Computer Engineering, Technical University of Crete, Chania, Greece, 2023
https://doi.org/10.26233/heallink.tuc.94893
Microservices-based architectures become a very popular method to design cloud-based containerized applications. Kubernetes is a container orchestration system for automating software deployment, scaling, and management. The Kubernetes cluster consists of nodes (VMs) and the microservices are placed in pods into the nodes.The default Kubernetes scheduler selects an optimal node to run newly created or unscheduled pods but it does not adapt to workload changes so the default placement is static.Microservices (Pods) should be placed in nodes so that they are minimizing the infrastructure cost by minimizing the egresstraffic (traffic between nodes), the number of nodes and also the response time. In modern applications due to high workloads, services need to run in multiple instances to keep up with high traffic. In Kubernetes a Horizontal Pod Autoscaler (HPA) automatically updates a workload (Service), with the aim of automatically scaling the workload to match demand, but if starting from sub-optimal placement (using the default Kubernetes Scheduler) this solution can be sub-optimal overall. In this work we aim to improve the initial placement of application services in Pods. The problem is is handled as a graph clustering one, to minimize the applications cost and the latency.Graph clustering needs to be fuzzy so it will allow pods to belong in more than one node.In this thesis two microservice-based applications were deployed in the Kubernetes of the GCP (Google Cloud Platform) to test the service placement solution, iXen an IoT application and Google’s OnlineBoutique an e-shop application. The experimental results reveal that the fuzzy placement solution can reduce the total response time of the application and the total monetary cost compared to default kubernetes scheduler and with or without the use of Kubernetes horizontal pod autoscaler.