Ku­ber­netes est une pla­te­forme open source qui permet d’au­to­ma­ti­ser le dé­ploie­ment, la mise à l’échelle et la gestion des ap­pli­ca­tions con­te­neu­ri­sées. Elle regroupe les con­te­neurs en clusters et les gère comme une seule entité. Un fonc­tion­ne­ment stable et per­for­mant des services est ainsi garanti. Avec des fonctions comme la ré­par­ti­tion de charge, l’auto-ré­pa­ra­tion et les dé­ploie­ments pro­gres­sifs, Ku­ber­netes facilite largement l’ex­ploi­ta­tion des ap­pli­ca­tions modernes.

Managed Ku­ber­netes de IONOS Cloud
Or­ches­trez vos charges de travail en toute sécurité

Managed Ku­ber­netes est la pla­te­forme idéale pour des ap­pli­ca­tions de con­te­neurs per­for­mantes et hautement évo­lu­tives.

Qu’est-ce que Ku­ber­netes ?

Ku­ber­netes (K8s) est un système open source d’or­ches­tra­tion de con­te­neurs, ini­tia­le­ment développé par Google et aujourd’hui maintenu par la Cloud Native Computing Foun­da­tion (CNCF). Il ad­mi­nistre les ap­pli­ca­tions con­te­neu­ri­sées dans des en­vi­ron­ne­ments dis­tri­bués en au­to­ma­ti­sant le démarrage (et re­dé­mar­rage), la mise à l’échelle, la sur­veil­lance et le rem­pla­ce­ment au­to­ma­tique des con­te­neurs dé­fail­lants.

Son ar­chi­tec­ture, écrite en langage Go (Golang), repose sur un plan de contrôle et plusieurs nœuds de travail, avec dif­fé­rentes com­po­santes comme le pla­ni­fi­ca­teur (Scheduler), chargé de la gestion centrale. Grâce aux con­fi­gu­ra­tions dé­cla­ra­tives (par exemple dans des fichiers YAML), on définit l’état souhaité du système, que Ku­ber­netes s’efforce de maintenir en per­ma­nence. L’outil peut être utilisé aussi bien dans le Cloud, sur des or­di­na­teurs locaux que dans des data centers On-Premises.

Note

Dans les premières versions de Ku­ber­netes, on parlait de « nœud maître » (master node). La do­cu­men­ta­tion of­fi­cielle utilise désormais le terme plan de contrôle (control plane), plus précis et inclusif. De même, les machines qui exécutent les ap­pli­ca­tions n’étaient autrefois appelées minions ; elles sont aujourd’hui désignées comme nœuds de travail (worker nodes).

Comment fonc­tionne Ku­ber­netes ?

Ku­ber­netes est un système d’or­ches­tra­tion de con­te­neurs. Cela signifie que le logiciel ne crée pas de con­te­neurs, mais qu’il les gère. Pour ce faire, Ku­ber­netes s’appuie sur l’au­to­ma­ti­sa­tion des processus, ce qui simplifie pour les dé­ve­lop­peurs le test, la main­te­nance et le dé­ploie­ment d’ap­pli­ca­tions. L’ar­chi­tec­ture de Ku­ber­netes repose sur une hié­rar­chie claire :

  • Conteneur : contient des ap­pli­ca­tions et leurs en­vi­ron­ne­ments logiciels.
  • Pod : unité de base de Ku­ber­netes, un pod regroupe un ou plusieurs con­te­neurs qui partagent les mêmes res­sources réseau et de stockage.
  • Nœud : exécute un ou plusieurs pods Ku­ber­netes et peut cor­res­pondre à une machine virtuelle ou physique.
  • Cluster : regroupe plusieurs nœuds en un cluster Ku­ber­netes.

L’ar­chi­tec­ture Ku­ber­netes repose également sur le principe du plan de contrôle et des nœuds de travail. Ces derniers cor­res­pon­dent aux parties exécutées du système, gérées et con­trô­lées par le plan de contrôle.

Le plan de contrôle a pour rôle, par exemple, de répartir les pods sur les nœuds. Grâce à une sur­veil­lance continue, il in­ter­vient au­to­ma­ti­que­ment lorsqu’un nœud tombe en panne et peut réaf­fec­ter ou recréer les pods concernés pour compenser la dé­fail­lance. L’état actuel est sans cesse comparé à l’état souhaité et ajusté si né­ces­saire. Le plan de contrôle sert aussi de point d’accès pour les ad­mi­nis­tra­teurs, qui or­chestrent les con­te­neurs via celui-ci.

Nœud Ku­ber­netes

Le nœud tra­vail­leur est un serveur physique ou virtuel sur lequel s’exécutent un ou plusieurs con­te­neurs. Il comprend un en­vi­ron­ne­ment d’exécution dédié aux con­te­neurs. On y trouve également le Kubelet, un agent chargé de la com­mu­ni­ca­tion avec le plan de contrôle, qui démarre et arrête les con­te­neurs. Avec le cAdvisor, le Kubelet intègre un service qui en­re­gistre l’uti­li­sa­tion des res­sources, utile pour l’analyse des per­for­mances. Enfin, le Kube-proxy permet au système d’assurer le Load Balancing et d’établir des con­nexions réseau via TCP ou d’autres pro­to­coles.

Plan de contrôle Ku­ber­netes

Le plan de contrôle est lui aussi un serveur (ou un ensemble de serveurs). Pour contrôler et sur­veil­ler les nœuds de travail, il exécute le Con­trol­ler Manager, une com­po­sante qui regroupe plusieurs processus :

  • le Node Con­trol­ler surveille les nœuds et réagit lorsqu’un d’entre eux tombe en panne
  • le Re­pli­ca­tion Con­trol­ler veille à ce que le nombre souhaité de pods fonc­tionne si­mul­ta­né­ment ; dans les con­fi­gu­ra­tions modernes, il est remplacé par des Re­pli­ca­Sets, gé­né­ra­le­ment gérés via des dé­ploie­ments
  • l’Endpoints Con­trol­ler gère les objets endpoint, chargé d’assurer la connexion entre les services et les pods
  • le Ser­vi­ceAc­count et Token Con­trol­ler ad­mi­nistre l’espace de noms et crée des jetons d’accès API

En plus du Con­trol­ler Manager, une base de données appelée etcd est utilisée. Dans cette base de données clé-valeur, la con­fi­gu­ra­tion du cluster est stockée et gérée par le plan de contrôle. Le composant Scheduler au­to­ma­tise la dis­tri­bu­tion des pods sur les nœuds de travail. La com­mu­ni­ca­tion avec les nœuds passe par l’API Server, intégré au plan de contrôle, qui fournit une interface REST et échange des données au format JSON. Grâce à cette interface, les dif­fé­rents con­trô­leurs peuvent interagir ef­fi­ca­ce­ment avec les nœuds.

Ku­ber­netes et Docker : com­plé­men­ta­rité ou rivalité ?

La question de savoir qui performe le mieux dans la com­pa­rai­son Ku­ber­netes vs Docker ne se pose pas vraiment, car les deux outils sont conçus pour fonc­tion­ner ensemble. Docker (ou une autre pla­te­forme de con­te­neurs comme rkt) assure l’as­sem­blage et l’exécution des con­te­neurs, tandis que Ku­ber­netes y accède pour en assurer l’or­ches­tra­tion et l’au­to­ma­ti­sa­tion des processus. Ku­ber­netes seul ne prend pas en charge la création de con­te­neurs.

La véritable con­cur­rence se situe plutôt avec Docker Swarm, un outil dédié à l’or­ches­tra­tion de Docker. Lui aussi fonc­tionne avec des clusters et propose des fonc­tion­na­li­tés proches de celles de Ku­ber­netes.

Cloud GPU VM
Maximisez les per­for­mances de l'IA avec votre VM GPU dans le Cloud
  • GPU NVIDIA H200 exclusifs pour une puissance de calcul maximale
  • Per­for­mances garanties grâce à des cœurs de pro­ces­seurs en­tiè­re­ment dédiés
  • Hé­ber­ge­ment en Europe pour une sécurité maximale des données et une con­for­mité au RGPD
  • Modèle tarifaire simple et pré­vi­sible avec un prix fixe par heure

Quels sont les avantages de Ku­ber­netes ?

Ku­ber­netes offre de nombreux atouts qui ren­for­cent la sca­la­bi­lité, la fiabilité opé­ra­tion­nelle et l’ef­fi­ca­cité.

Évo­lu­ti­vité au­to­ma­ti­sée : Ku­ber­netes exploite les res­sources de manière optimale. Au lieu de laisser tourner des machines inu­ti­li­sées, il libère ces res­sources pour d’autres tâches ou les met en pause, réduisant ainsi les coûts.

Haute tolérance aux pannes : grâce à la ré­pli­ca­tion et à la res­tau­ra­tion au­to­ma­tique, les ap­pli­ca­tions con­ti­nuent de fonc­tion­ner même si certaines com­po­santes tombent en panne.

Uti­li­sa­tion optimisée des res­sources : les pods et con­te­neurs sont répartis in­tel­li­gem­ment sur les nœuds dis­po­nibles afin d’optimiser la puissance de calcul.

Dé­ploie­ment et rollbacks sim­pli­fiés : les nouvelles versions d’ap­pli­ca­tions peuvent être déployées avec un effort minimal, et un retour rapide aux versions an­té­rieures reste possible si né­ces­saire.

In­dé­pen­dance de la pla­te­forme : Ku­ber­netes s’exécute sur des serveurs locaux, dans le Cloud ou dans un Cloud Hybride, ga­ran­tis­sant la por­ta­bi­lité des charges de travail.

Dé­cou­verte de services et ré­par­ti­tion de charge : Ku­ber­netes détecte au­to­ma­ti­que­ment les services dans le cluster et répartit le trafic de manière équi­li­brée, sans né­ces­si­ter de ré­par­ti­teur de charge externe.

Gestion efficace par API : grâce à une API centrale, toutes les com­po­santes du cluster peuvent être ad­mi­nis­trées et au­to­ma­ti­sées, y compris via des outils externes et des pipelines CI/CD.

À quoi sert Ku­ber­netes ?

Ku­ber­netes est par­ti­cu­liè­re­ment indiqué lorsque les ap­pli­ca­tions s’exécutent dans des con­te­neurs et qu’une in­fras­truc­ture évolutive et hautement dis­po­nible est requise. Voici quelques cas d’usage typiques :

  • Ar­chi­tec­tures de mi­cro­ser­vices : en pratique, K8s est souvent utilisé pour gérer des ar­chi­tec­tures de mi­cro­ser­vices, où de nombreux petits services sont dé­ve­lop­pés, testés et mis à jour in­dé­pen­dam­ment. Les en­tre­prises s’appuient sur Ku­ber­netes pour au­to­ma­ti­ser les en­vi­ron­ne­ments de dé­ve­lop­pe­ment et de pro­duc­tion et réagir plus ra­pi­de­ment aux nouvelles exigences.
  • CI/CD : Ku­ber­netes est largement employé dans l’in­té­gra­tion continue (CI) et le dé­ploie­ment continu (CD), car il permet d’au­to­ma­ti­ser les dé­ploie­ments et de gérer les versions de manière fiable.
  • Multi-Cloud et Cloud Hybride : dans des stra­té­gies de Multi-Cloud ou de Cloud Hybride, Ku­ber­netes déploie des charges de travail (workloads) in­dé­pen­dam­ment des pla­te­formes et permet de les déplacer fa­ci­le­ment entre dif­fé­rents four­nis­seurs de Cloud ou centres de données.
  • Big Data : Ku­ber­netes est aussi adapté aux projets de Big Data et de Machine Learning, où de nombreux con­te­neurs éphémères fonc­tion­nent en parallèle.
  • Grandes pla­te­formes : pour les pla­te­formes ac­cueil­lant un grand nombre d’uti­li­sa­teurs, Ku­ber­netes est in­dis­pen­sable pour absorber au­to­ma­ti­que­ment les pics de trafic et garantir la ré­si­lience des services.
Aller au menu principal