Kubernetes as an Availability Manager for Microservice Applications

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.

[1]  Maria Toeroe,et al.  Service Availability: Principles and Practice , 2012 .

[2]  Fabrizio Montesi,et al.  Microservices: Yesterday, Today, and Tomorrow , 2017, Present and Ulterior Software Engineering.

[3]  Malgorzata Steinder,et al.  Performance Evaluation of Microservices Architectures Using Containers , 2015, 2015 IEEE 14th International Symposium on Network Computing and Applications.

[4]  Miguel Correia,et al.  State machine replication in containers managed by Kubernetes , 2017, J. Syst. Archit..

[5]  Sam Newman,et al.  Building microservices - designing fine-grained systems, 1st Edition , 2015 .

[6]  David Jaramillo,et al.  Leveraging microservices architecture by using Docker technology , 2016, SoutheastCon 2016.

[7]  Ivan Lanese,et al.  Microservices: How To Make Your Application Scale , 2017, Ershov Informatics Conference.

[8]  Khaled El Emam,et al.  The Optimal Class Size for Object-Oriented Software , 2002, IEEE Trans. Software Eng..

[9]  Maria Toeroe,et al.  Availability in the cloud: State of the art , 2016, J. Netw. Comput. Appl..

[10]  Maria Toeroe,et al.  Comparing redundancy models for high availability middleware , 2013, Computing.

[11]  Marin Litoiu,et al.  Efficiency Analysis of Provisioning Microservices , 2016, 2016 IEEE International Conference on Cloud Computing Technology and Science (CloudCom).

[12]  Leila Abdollahi Vayghan,et al.  Deploying Microservice Based Applications with Kubernetes: Experiments and Lessons Learned , 2018, 2018 IEEE 11th International Conference on Cloud Computing (CLOUD).