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)
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 orchestre les conteneurs pour :
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.
Les avantages de Kubernetes sont nombreux et ne sont pas des moindres :
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 :
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 :
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.