Microservice Based Architecture: Towards High-Availability for Stateful Applications with Kubernetes

Kubernetes is an open source platform that hides the complexity of orchestrating containerized microservices while managing their availability. Stateless microservices can be executed in a resilient manner with Kubernetes. However, the same is not true for stateful microservices. Containers are characterized by having an ephemeral state and the state aspect of stateful microservices makes orchestration more complex than what the initial Kubernetes controllers were built for. In this paper, we investigate the current Kubernetes support for stateful microservices and identify the problems. We propose a solution to enrich Kubernetes with a State Controller that allows for state replication and automatic service redirection to the healthy entities through the management of secondary labels. We have conducted experiments under the default configuration of Kubernetes as well as under its most responsive one to evaluate our solution and compare the different architectures from an availability perspective. We also perform a comparative evaluation with OpenSAF, which is a proven solution for enabling high-availability. The results of our investigations show that our solution improves the recovery time of stateful microservices by 55% and even up to 99% in certain cases.