Kubernetes as an Availability Manager for Microservice Applications

Leila Abdollahi Vayghan,Mohamed Aymen Saied,Maria Toeroe,Ferhat Khendek
DOI: https://doi.org/10.48550/arXiv.1901.04946
2019-01-16
Abstract:The move towards the microservice based architecture is well underway. In this architectural style, small and loosely coupled modules are developed, deployed, and scaled independently to compose cloud-native applications. However, for carrier-grade service providers to migrate to the microservices architectural style, availability remains a concern. Kubernetes is an open source platform that defines a set of building blocks which collectively provide mechanisms for deploying, maintaining, scaling, and healing containerized microservices. Thus, Kubernetes hides the complexity of microservice orchestration while managing their availability. In a preliminary work we evaluated Kubernetes, using its default configuration, from the availability perspective in a private cloud settings. In this paper, we investigate more architectures and conduct more experiments to evaluate the availability that Kubernetes delivers for its managed microservices. We present different architectures for public and private clouds. We evaluate the availability achievable through the healing capability of Kubernetes. We investigate the impact of adding redundancy on the availability of microservice based applications. We conduct experiments under the default configuration of Kubernetes as well as under its most responsive one. We also perform a comparative evaluation with the Availability Management Framework (AMF), which is a proven solution as a middleware service for managing high-availability. The results of our investigations show that in certain cases, the service outage for applications managed with Kubernetes is significantly high.
Software Engineering
What problem does this paper attempt to address?
The problem that this paper attempts to solve is how to ensure high availability during the migration of microservice architectures to cloud - native applications, especially in carrier - grade service providers. Specifically, the paper focuses on the availability level provided by Kubernetes, as a microservice management platform, for microservice applications through its self - healing function under different configurations and architectures. The paper evaluates the availability performance of Kubernetes under the default configuration and the most responsive configuration through a series of experiments, and explores the impact of adding redundancy on improving the availability of microservice applications. In addition, the paper also compares the availability of Kubernetes with existing high - availability management frameworks (such as AMF) to assess whether the service interruption time of Kubernetes is significantly higher in specific situations. The main research questions of the paper include: - RQ1: How high availability can Kubernetes provide for the microservices it manages only through its self - healing feature? - RQ2: What is the impact of adding redundancy on the availability achieved by Kubernetes? - RQ3: What kind of availability can be achieved under the most responsive configuration of Kubernetes? - RQ4: How does the availability achieved by Kubernetes compare with existing solutions? Through these research questions, the paper aims to explore and evaluate the availability performance of Kubernetes under different conditions, and provide references for the design and optimization of microservice architectures.