Although it was clear in 2017 that Kubernetes was the most popular container orchestration tool, it was 2018 the year where Kubernetes has established himself as the de facto container orchestration and management engine. Not only companies like Google, Amazon, OpenShift, Docker, Microsoft are supporting and promoting it, but also many other companies are also including it in their offerings.
Docker, released in 2013, was responsible for making containers technology so popular. And now, Kubernetes popularizes the orchestration of these containers, by going a step further, and making it easy the deployment and management of scalable and distributed “dockerized” applications in multiple environments. In fact according to the “2018 Docker Usage Report”, Kubernetes is by far the most used orchestration tool for Docker containers:
Image: Orchestrators for Docker containers (2018 Docker Usage Report)
In the mF2C project we rely on Docker to deploy, manage and run containerized services in different types of agents. These agents can be PCs, laptops, mobile and Raspberry Pi devices, etc. During the first iteration of this project we focused on Docker because it offers a lot of well-known benefits. But it also constraints us to a limited set of services we can manage. How can we manage the coordination and communication between different services? Or how can we manage the scalability of them? In principle, the services we tested during this first iteration, either didn’t have these needs or found a workaround to solve this kind of problems. Therefore, if we want to include and run more type of services in mF2C, then we need to include other solutions like Kubernetes and Docker Swarm. This would open a wide range of possibilities for the future of this project.
For this purpose, ATOS will provide a hardware prototype device to deploy and test Kubernetes in a fog environment. The idea is to have an mF2C agent and a Kubernetes master running in this hardware prototype. This way we could have an mF2C agent capable to manage services in a Kubernetes cluster, as shown in the next picture:
Image: mF2C-Kubernetes agent
The implementation of these new functionalities involves some mF2C modules, mainly the component responsible for deploying and managing the services in a mF2C cluster, the Lifecycle Manager. This module is a python application that can make use of the “official” client library supported by Kubernetes (Kubernetes Python Client), the same way it is currently using the Docker library, Docker SDK for Python.