Kubernetes : un orchestrateur pour les gouverner tous

DevOps
L’avènement de Docker a fortement transformé la façon de gérer l’infrastructure. La tâche devient plus complexe lorsqu’il s’agit de gérer l’ensemble des services et applications.

C’est là qu’intervient Kubernetes (nommé aussi « k8s »). Cet orchestrateur, créé en 2014 par Google, puis donné à la Cloud Native Computing Foundation dès 2015, est maintenant Open Source. Kubernetes s’est rapidement imposé comme l’orchestrateur de bas niveau de référence devant son concurrent principal Docker Swarm. Beaucoup de plateformes d’orchestration de plus haut niveau se base d’ailleurs maintenant sur k8s. L’idée principale de cet orchestrateur est de s’affranchir de l’architecture sous-jacente (les serveurs, appelés « nodes ») pour se concentrer sur la mise à disposition des applications.

Plus concrètement

Les serveurs formant les nodes peuvent être de différents types. Serveurs physiques, machines virtuelles locales ou distantes, peu importe la composition du cluster c’est Kubernetes qui se charge de sa gestion. Il se place entre le kernel et les applications. C’est d'ailleurs à lui qu’incombe les tâches de répartition de charge, de vérification de la santé des pods et de la communication entre eux. Le pod est la plus petite entité gérée par Kubernetes. Il s’agit d’un ou plusieurs conteneurs qui partagent un certain nombre de ressources et qui seront instanciés ensemble sur un même node.

Il est même possible de s’affranchir des machines avec des offres Cloud de KaaS (Kubernetes as a Service) comme GKE (Google Kubernetes Engine), Amazon EKS (Elastic Kubernetes) ou AKS (Azure Kubernetes Service) pour ne citer que les plus grands acteurs cloud.

Les principes de base d’un cluster Kubernetes


Pour le fonctionnement d’un cluster Kubernetes, il faut 2 types de node :

- Le control plane est le « master ». Il peut être installé sur un ou plusieurs nodes (pour des raisons de haute disponibilité par exemple). C’est lui qui est responsable au sein du cluster, de gérer les ressources, répartir la charge de travail et diriger les communications.

- Le worker (ou « minion ») est la machine sur laquelle vont être exécutés les pods. Il remonte les informations de santé des pods et de performance de la machine au « control plan ».

Il est possible qu’un node cumule les 2 rôles. Cette solution permet de limiter le nombre de machines à instancier pour un cluster.


L’utilisation de Kubernetes se fait via le CLI (Command-Line Interface). Une web UI (dashboard) est aussi disponible, elle sert à visualiser les différentes informations du cluster et à interagir de façon très basique avec ce dernier. Pour gérer plus facilement votre cluster il existe des orchestrateurs de plus haut niveau comme par exemple OpenShift de RedHat ou Rancher de Rancher Labs qui, dans leurs versions récentes, s’appuient sur la puissance de Kubernetes. Cette abstraction supplémentaire permet d’interagir avec le cluster et de visualiser l’état des différents composants via une interface graphique plus conviviale en ajoutant des fonctionnalités telles qu’une gestion de droits d’accès par exemple.



Freddy,

Ingénieur pôle innovation