Imagine using Docker and creating an infrastructure composed by several containers; once you reach a certain degree of complexity, Docker struggles to activate and deactivate the containers and to carry out all the other management operations, and is here that Kubernetes comes in. Indeed, this tool was born just to simplify the containers management and orchestrate quickly and efficiently the entire infrastructure. However, the use of Kubernetes is not only related to the amount of containers, but especially to the level of availability requested for the service. Kubernetes is ideal for any business which needs a High Availability solution and it ensures the service continuity with SLA close to 100%.
How it works?
First of all, let’s introduce some basic terms to understand the Kubernetes architecture.
Master: the machine which controls Kubernetes nodes. It’s the origin point of all processes.
Nodes: machines that execute the requested activities, controlled by the Kubernetes master.
Pod: a group composed by one or more containers distributed on a single node. All containers of a pod share some resources. Pods abstract networking and storage from the underlying container, allowing to move easily containers on clusters.
Kubernetes offers the possibility of deploying containers in a scalable way with the aim of manage workloads at best. It enables to create applications and services on more containers, program them and manage their scalability and integrity in the long term. The complexity of management deriving from a high amount of conainers is simplified by grouping containers in “pods”, which help to programme workloads and provide requested services, including storage and networking to containers. Kubernetes is also able to automatically balance the loads into the pods, facilitating a lot the whole infrastructure management. In addition, Kubernetes standard infrastructure is fully redundant and this reduces drastically the risk of downtime, while with the use of simpler container management tool like Docker, the availability is not ensured at so high leveles.
Thanks to the development of new technologies and to the progress made with the namespaces, in 2008 was born the project LinuX Container (LXC): the most complete solution of containers management in those years. Among the crucial components of the project there is the development of cgroups, created by Google in 2006, which allow controlling and confining the amount of resources used for a process or for a group of processes.
Resuming: why you should use Kubernetes?
1. If you want to manage your containered applications easily, quickly and efficiently
2. If you need a HA solution and you can’t suffer downtime in any case
3. if you have a complex infrastructured, composed by several containers
4. If you want to take advantage of many other benefits of Kubernetes that we’ll show you in the next post 🙂