Optimaliseren van een Kubernetes relatie-orchestrator

Student:Lennart Onghena
Richting:Master of Science in de industriële wetenschappen: informatica
Abstract:

Microservice applicaties zorgen voor uitdagingen met betrekking tot het beheer van afhankelijkheden tussen services. Sebrechts et al. stellen het concept van service relations voor om afhankelijkheden tussen services te modelleren. Ze ontwikkelden een proof of concept orchestrator die ondersteuning biedt voor service relations in Kubernetes.

Deze masterproef breidt twee aspecten van de orchestrator uit. De eerste aanpassing implementeert veel-op-veel relaties. Om dit efficiënt te verwezenlijken wordt gebruik gemaakt van de al aanwezige SharedIndexInformer om API aanvragen te vermijden. Evaluatie van de oplossing geeft aan dat veel tijd gewonnen kan worden in de orchestrator door API aanvragen naar de Kubernetes API server te vermijden.

De tweede uitbreiding maakt de automatische configuratie van gerelateerde services flexibeler. Hiertoe worden twee custom configuratie-objecten aangemaakt aan de hand van Custom Resource Definitions. De evaluatie geeft aan dat de impact van de extra API aanvragen die nodig zijn om deze configuratie-objecten op te halen te groot is. Als echter controllers met een SharedIndexInformer aangemaakt zouden worden voor deze configuratie-objecten, zou de oplossing die in het eerste deel van deze masterproef voorgesteld wordt gebruikt kunnen worden om de extra API aanvragen te vermijden.

Abstract (Eng):

Microservice applications bring with them the challenge of dependency management between services. Sebrechts et al. propose service relationships as a tool to model these dependencies, and implemented a proof of concept orchestrator which provides support for service relations in Kubernetes.

This master's dissertation extends the orchestrator in two areas. The first extension implements many-to-many relationships. To do this efficiently, API requests are avoided by using the already present SharedIndexInformer. Evaluation of this solution shows that a lot of performance can be gained by avoiding API requests to the Kubernetes API server.

The second extension makes the automatic configuration of related services more flexible. To this end, two custom configuration objects are created using Custom Resource Definitions. The evaluation shows that the impact of the additional API requests needed to fetch the configuration objects is too large. However, by creating controllers with SharedIndexInformers for these configuration objects, the solution proposed in the first part of this master's dissertation could be used. This way the additional API requests could be avoided.