Publié le 30 septembre 2020, mis à jour le 18 décembre 2023.

Peut-être avez-vous entendu parler de Kubernetes, aussi appelé amicalement Kube ou encore pour les amateurs K8s ? Kubernetes est un orchestrateur Open Source très convoité par les entreprises qui cherchent à apporter de la scalabilité et à s’adapter rapidement aux différentes charges de trafic que subissent leurs infrastructures.

Seulement attention, bien que sa réputation le précède, il n’est pas évident de déployer un “Cluster Kubernetes” sur son infra. Padok vous explique…

Qu’est-ce que Kubernetes ?

Développé par des ingénieurs Google, Kubernetes voit le jour suite au projet Project Seven of Nine, nom inspiré par un personnage de Star Trek “Seven”. Kube y fait écho aujourd’hui par la représentation de 7 rayons du gouvernail qui apparaissent sur son logo. La technologie Kubernetes, de la traduction en grec “barreur” ou encore “pilote”, vient au secours de Gmail, Maps, Search et les autres services Google qui génèrent 2 milliards de conteneurs par semaine. Il est évident qu’il fallait trouver une solution pour tout orchestrer. Aujourd’hui, K8s connaît un tel succès que les grands acteurs du Cloud intègrent la plateforme en service managé dans leurs offres : “KaaS” (Kubernetes as a Service) comme l’illustre GKE (Google Kubernetes Engine), EKS (AWS), AKS (Azure Kubernetes Service)

Kubernetes

En 2015, à la création de Kubernetes, alors logiciel privé, Google se rapprocha de la fondation Linux pour co-fonder Cloud Native Computing Fondation, à laquelle il a confié comme première technologie la plateforme K8s, devenant ainsi un logiciel Open Source.

Avant de parler de Kubernetes et sa fonction orchestratrice, il est important de rappeler l’avantage des conteneurs. Les conteneurs contrairement aux machines virtuelles se reposent sur un système d’exploitation du serveur hôte alors que les VMs se rattachent à leurs propres systèmes d’exploitations. Ainsi, les conteneurs permettent d’isoler un espace au sein d’un même système d’exploitation et donc d’avoir plusieurs applications qui tournent sur un même noyau commun. Il n’est donc pas nécessaire de mettre à jour tous les conteneurs un par un, mais un seul système d’exploitation pour tous les composants.

Ces conteneurs utilisent en conséquence moins de ressources et pèsent moins sur la mémoire de l’hôte. Ne contenant pas de système d’exploitation propre à chacun, les conteneurs du même noyau ne disposent que d'environnement isolés pour chaque application pour leurs permettre d'exécuter leurs programmes. Les conteneurs s’avèrent donc plus performants, légers et facile à maintenir.

“Kube” est une plateforme Open Source qui automatise la gestion et l’orchestration des conteneurs sur un parc “cluster” entier de machines. La plateforme permet de supprimer de nombreuses étapes manuelles, notamment lors de déploiement ou en phase de scaling.

Un cluster comprend tout d’abord des nodes dans lesquels sont intégrés des pods regroupant des conteneurs. Ainsi, le rôle de Kubernetes est de gérer de manière automatisé les besoins en sécurité, données, stockage et mise en réseau des conteneurs. 

Pour que Kubernetes fonctionne de manière optimale, la plateforme s’appuie sur divers Projets Open Source représentés sur le schéma ci-dessous.

Vous êtes plus visuel ? Voici un schéma de Kubernetes et ses composants de bases :

kubernetes et composants

À quoi sert Kubernetes et comment ça marche ?

Kubernetes orchestre les conteneurs pour :

  • Créer des services applicatifs sur plusieurs conteneurs
  • Planifier les conteneurs dans les clusters
  • Garantir leur intégrité

De manière plus concrète, K8s permet aux développeurs de ne plus se soucier des VMs (Machines virtuelles) car il fait directement front à son environnement d’exécution, les conteneurs. Ainsi, Kube va s’occuper de la partie immergé de l’iceberg, en adaptant l’infrastructure, le Back-end, aux apports du développeur.

Grâce à l’agent de surveillance de Kubernetes, Kubelet, si un node A ne répond plus, les pods déployés sur ce node seront transférés à un autre node pour assurer la stabilité.

Enfin, le dossier partagé, analogue à un Drive ou une Dropbox, appelé le “Volume” permet aux conteneurs d’échanger des informations entre eux.

Ainsi, un développeur aura uniquement à se soucier de sa propre création de nouvelles fonctionnalités et non de la stabilité de l’infrastructure lors du déploiement de ses fonctionnalités.

Quels sont les avantages et les inconvénients de Kubernetes ?

Les avantages de Kubernetes sont nombreux et ne sont pas des moindres :

  • L’adaptation : Kube s’adapte à la charge et la répartit, mais il adapte également l’infrastructure lorsque le développeur code sa fonctionnalité, pour que tout soit harmonisé et marche ensemble.
  • La productivité : Kube permet aux développeurs d’être très productif lors de la mise en production par l’automatisation des tâches qui sont sinon seraient manuelles, chronophage et s’ouvrant à des possibilités d’erreurs.
  • La communauté : Kube connaît une très grande communauté d’utilisateurs (+2500 contributeurs) fournissant une grande documentation sur le sujet, diffusant les best practices avec des mise à jour très régulières.
  • La liberté : Kube est gratuit et libre d’accès puisqu’il est Open Source, permettant un accès illimité.
  • La centralisation : Kube centralise et orchestre tous les éléments.

Il est difficile de trouver des points noirs, mais comme toute chose exceptionnelle, les avantages revêtent également certains désavantages dû à l’expertise nécessaire :

  • La complexité : Kube est difficile à maintenir pour un novice et nécessite l’intervention d’experts. La migration Kubernetes expliquée dans cet article, doit être minutieusement préparée.
  • La formation : Kube par sa complexité, nécessite une formation par un expert.
  • Les conteneurs : Kube ne sait gérer que des applications conteneurisées. En effet, qui dit Kubernetes, dit souvent Docker.

Quels sont les acteurs et leurs spécialisations qui servent Kubernetes ?

Bien qu'il soit assez simple de construire sa première infrastructure K8s, il est une tout autre histoire lorsqu’il s’agit de la maintenance des différents éléments comme le stockage, le réseau ou encore la conteneurisation.

Pour que Kubernetes puisse montrer tous ses effets, vous devez réunir ces prérequis :

  • Tout d’abord pour le stockage persistent, vous pouvez vous appuyer sur certaines technologies comme Azure, AWS, GCP, Vsphere, ScaleIO, StorageOS etc.
  • Puis concernant le réseau, voici certains logiciels qui vous aideront : Kube-Router, OVN, OpenVSwitch, Weave Net, Cilium etc.
  • Concernant la conteneurisation, le plus connu s’avère Docker.
  • La Sécurité peut être assurée par RBAC, SELinux.
  • L’automatisation des cycles de vie et la gestion d’installation peuvent être faites avec Ansible ou un service managé.
  • Enfin, la télémétrie pourra s'appuyer sur Kibana et Elastic ou Prometheus et Grafana.

Cloud providers

Kubernetes est un atout majeur, indispensable à toute infrastructure. La plateforme vient booster et libérer les équipes techs pour qu’elles se consacrent à ce pour quoi elles sont destinées. L’infrastructure reste stable tout en scalant et en déployant un maximum de fonctionnalités. Cependant, le revers de cette plateforme paradisiaque se concentre sur la nécessaire expertise pour la migration, et la formation de ses équipes concernant la maintenance. Pour gagner du temps il faut souvent savoir en perdre et pour gagner de l’argent il faut souvent savoir en dépenser. Par cette migration c’est certainement toute l’équipe IT qui vous dira merci.