Kubernetes (K8s) : principes et fonctionnement

Auteur : Publié le

En bref : Kubernetes, abrégé en K8s, est une plateforme ouverte permettant d’exécuter et de gérer des applications dans des conteneurs. Elle veille à maintenir le nombre prévu de copies en fonctionnement, remplace les instances indisponibles et facilite le déploiement de nouvelles versions. Elle est utile pour les systèmes complexes, mais, pour un simple site ou une petite application, sa maintenance peut être plus compliquée que l’hébergement lui-même.

Du conteneur à la gestion de l’application

Un conteneur est un environnement isolé dans lequel s’exécute un processus applicatif. Il est créé à partir d’une image de conteneur, c’est-à-dire un paquet contenant le code, les bibliothèques nécessaires et les paramètres de démarrage. On peut ainsi exécuter la même version d’une application dans différents environnements compatibles sans installer manuellement toutes ses dépendances.

Lancer un conteneur seul est relativement simple. Les difficultés apparaissent lorsqu’il faut gérer plusieurs applications, les répartir sur plusieurs serveurs, les mettre à jour sans longues interruptions et réagir aux pannes. Kubernetes automatise une partie de ces tâches : cette gestion s’appelle l’orchestration de conteneurs.

K8s est une abréviation du mot Kubernetes : huit lettres séparent le « K » du « s ». Ce nom ne désigne ni un produit distinct ni une autre version de la plateforme.

Comment fonctionne Kubernetes : cluster, nœuds et pods

Un cluster est un environnement Kubernetes composé d’un plan de contrôle et de nœuds qui exécutent les applications. Un nœud, ou node en anglais, est une machine physique ou virtuelle. Dans un petit environnement de test, tous ces éléments peuvent fonctionner sur un seul ordinateur.

Le plan de contrôle, ou control plane, conserve la configuration et coordonne le fonctionnement du cluster. Il décide notamment où exécuter l’application. Les logiciels présents sur les nœuds exécutent ces instructions et transmettent des informations sur l’état des tâches en cours.

Kubernetes repose sur le principe de l’état souhaité. Au lieu de lancer manuellement chaque copie de l’application, vous déclarez par exemple : « trois copies de cette version doivent fonctionner ». Le système compare en permanence cette déclaration à la situation réelle et tente de corriger les écarts.

Quatre notions suffisent pour comprendre les bases :

La configuration est souvent enregistrée dans des fichiers YAML, un format de données textuelles lisible. L’outil en ligne de commande kubectl permet notamment de travailler avec le cluster.

Que se passe-t-il lors des pannes et des mises à jour ?

Imaginez une boutique en ligne dont la partie chargée de traiter les requêtes fonctionne dans trois pods répartis sur plusieurs nœuds. Le Deployment définit le nombre de copies, tandis que le Service dirige le trafic vers les pods disponibles. Si un pod cesse de fonctionner, Kubernetes tente de lancer un pod de remplacement.

Cela ne signifie pas que la réparation sera immédiate ou garantie. Le cluster doit disposer de ressources libres, avoir accès à l’image de l’application et s’appuyer sur une infrastructure fonctionnelle. Si un défaut de l’application provoque une panne à chaque démarrage, relancer le pod ne supprimera pas la cause du problème.

Lors d’une mise à jour, Kubernetes peut remplacer progressivement les anciens pods par de nouveaux. Les tests de disponibilité, c’est-à-dire des vérifications configurées pour déterminer si l’application est capable de traiter des requêtes, aident à éviter d’envoyer du trafic vers une copie encore en cours de démarrage. Un déploiement sans interruption exige toutefois une configuration adaptée et une application conçue à cet effet : la plateforme ne le garantit pas automatiquement.

Le même principe s’applique à la mise à l’échelle. Kubernetes permet de modifier le nombre de copies et, après configuration d’un mécanisme de mise à l’échelle automatique, peut le faire à partir de métriques comme l’utilisation du processeur. Ajouter des pods n’accélérera toutefois pas une base de données surchargée et ne résoudra pas un autre goulot d’étranglement commun.

Ce que Kubernetes ne remplace pas

Kubernetes ne crée pas les images des applications et ne remplace pas l’ensemble du processus de test et de publication du code. Ce n’est pas non plus un synonyme de Docker. Les outils Docker permettent notamment de créer et d’exécuter des conteneurs en local, tandis que Kubernetes gère leur fonctionnement dans un cluster à l’aide d’un environnement d’exécution adapté, par exemple containerd.

La plateforme n’assure pas à elle seule une supervision complète, les sauvegardes ou la sécurité des applications. Il faut prévoir les droits d’accès, les mises à jour, la collecte des journaux et la protection des identifiants d’authentification. L’accès depuis Internet exige également une configuration réseau adaptée et, généralement, des composants supplémentaires ou des services du fournisseur.

Les données demandent une attention particulière. Un pod peut disparaître puis être recréé : les fichiers à conserver durablement ne doivent donc pas rester uniquement dans la couche inscriptible du conteneur. Kubernetes prend en charge les volumes persistants, mais leur utilisation ne remplace ni une sauvegarde ni une procédure de restauration éprouvée.

Quand le déploiement de K8s est-il pertinent ?

Kubernetes mérite d’être envisagé si vous gérez de nombreux services, les déployez souvent, avez besoin de les mettre à l’échelle indépendamment et disposez d’une équipe capable d’administrer la plateforme. Une méthode commune de configuration et de déploiement peut alors réduire le nombre d’opérations manuelles.

Pour un blog, un site d’entreprise ou une seule petite application, un hébergement plus simple, un serveur virtuel ou une plateforme applicative gérée impliquent souvent moins de tâches à assurer. Il s’agit d’une appréciation pratique, non d’une limite technique : une petite application peut fonctionner dans Kubernetes, mais les avantages ne compensent pas nécessairement le travail requis.

Une offre Kubernetes gérée transfère une partie des responsabilités au fournisseur, mais leur étendue dépend du service. Avant de choisir, consultez la documentation officielle et la grille tarifaire pour vérifier qui est responsable des mises à jour, la disponibilité du plan de contrôle, ainsi que les frais liés aux serveurs, aux disques, au réseau et aux composants supplémentaires.

Si vous découvrez K8s, lancez un cluster de test local, par exemple avec kind ou minikube. Déployez une application simple avec deux copies, puis supprimez un pod. Observer comment le système le remplace permet de comprendre le mécanisme de base sans construire une infrastructure de production.

À lire aussi : Qu’est-ce que le 2FA ?

À lire aussi

Découvrez comment PHP-FPM traite les requêtes PHP, son rôle face au serveur web et comment adapter ses processus au trafic.
Découvrez BIND, logiciel libre de serveur DNS : ses rôles, la gestion des domaines et les cas où le déployer vous-même.
Découvrez le registre polonais REGON, son numéro, ses différences avec NIP et KRS et comment vérifier les données d’une entreprise.