Kubernetes - Container orchestration
Introduction
Kubernetes (or K8s) is an open-source system used for container orchestration. Indeed, it complements container applications such as Docker. It permits the consistent deployment and management of containers. Kubernetes was developed by Google and later donated to the Cloud Native Computing Foundation. The first version was released in July 2015.
Architecture
The first thing we find in the architecture of container orchestration is the Node (prevously named Minions). A Node can be a physical or virtual machine where containers are run by Kubernetes.
You should have multiple Nodes to use Kubernetes properly. Indeed, if one Node fails, the others are still available to take over and keep the application running. This setup is called a Cluster.
If a Node in the Cluster fails, a Master Node should be set up to move the workload. The Master Node watches over the Nodes in the Cluster and is responsible for container orchestration.
Components
Kubernetes is composed of multiple components that are automatically installed when you set up it on your system:
- API Server : This acts as the front end for Kubernetes, managing and interacting with Nodes in the cluster ;
- Scheduler : It is responsible for distributing the workload and containers across the multiple Nodes in the cluster. When a new container is created, it automatically assigns it to a Node.
- Controller : It acts as the brain of this orchestration. Indeed, it notices and responds when Nodes or containers go down. It makes decisions about when new containers need to be brought up.
- etcd : It is a key-value store that holds all the information about the Nodes and Masters in the cluster ;
- Container Runtime : This is the software used to run containers (Docker in our case).
- Kubelet : It is the agent running on each Node in the cluster. It ensures that the containers are running as expected on the Node.
The main component resides on the left side, which is a machine with the Kube API server, and this is what makes it a Master in this configuration. On the other hand, the Nodes have the Kubelet agent installed, which is responsible for interacting with the Master to provide health information of the Node and carry out actions requested by the Master.
All of the information about the Nodes and the Master is stored in the key-value store, using the framework etcd. Finally, the Master also includes the controller and the scheduler.

