Kubernetes expliqué simplement (sans jargon inutile)
Pods, services, déploiements, self-healing : comprendre ce que fait vraiment l'orchestrateur qui est devenu le standard de l'infrastructure moderne.
Kubernetes (souvent abrégé « K8s » — huit lettres entre le K et le s) est devenu la façon standard de faire tourner des applications conteneurisées à grande échelle. Son nom vient du grec pour « timonier ». Ouvert par Google en 2014, il condense plus de quinze ans d'expérience de l'entreprise à opérer des services massifs (le système interne Borg). Il intimide par son vocabulaire, mais son idée centrale est étonnamment simple.
Le problème qu'il résout
Vous avez empaqueté votre application dans des conteneurs (avec Docker, par exemple) : c'est portable et reproductible. Mais en production, il faut orchestrer tout un ballet : lancer ces conteneurs sur plusieurs machines, les redémarrer s'ils tombent, en ajouter quand le trafic monte et en retirer quand il baisse, router le trafic vers eux, faire des mises à jour sans coupure, gérer les secrets et la configuration. Faire cela à la main sur des dizaines de services est intenable. Kubernetes automatise l'ensemble.
Vous décrivez l'état souhaité ; Kubernetes travaille en continu pour que le réel y corresponde. C'est tout le principe.
Ce que Kubernetes vous offre
La documentation officielle résume ses capacités : découverte de service et load balancing, orchestration du stockage, déploiements et rollbacks automatisés, « bin packing » (placement optimal des conteneurs selon CPU/RAM), self-healing, gestion des secrets et de la configuration, mise à l'échelle horizontale. Autant de briques qu'on devait auparavant assembler soi-même.
Les objets essentiels
- Pod — la plus petite unité déployable : un ou plusieurs conteneurs qui partagent réseau et stockage et vivent ensemble.
- Deployment — déclare combien de répliques d'un pod doivent tourner, et gère les mises à jour progressives (rolling update) et les retours arrière.
- Service — une adresse (IP/DNS) stable qui répartit le trafic vers les pods, même quand ceux-ci sont recréés et changent d'IP.
- Namespace — un cloisonnement logique pour organiser et isoler les ressources par équipe ou par environnement.
Le modèle déclaratif et la boucle de réconciliation
On ne donne pas d'ordres impératifs pas à pas ; on déclare un état cible en YAML :
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
template:
spec:
containers:
- name: web
image: mon-app:1.4.0
Ici : « je veux 3 répliques de mon-app:1.4.0 ». En coulisses, des contrôleurs exécutent en permanence une boucle de réconciliation : ils comparent l'état observé à l'état désiré et agissent pour combler l'écart. Si un pod meurt, un nouveau est recréé pour revenir à 3. C'est le fameux self-healing. La doc insiste : Kubernetes n'est pas un simple exécuteur de workflow (A puis B puis C) mais un ensemble de processus indépendants qui poussent en continu l'état courant vers l'état voulu.
Ce que Kubernetes n'est pas
Kubernetes n'est pas un PaaS clé en main. Il opère au niveau des conteneurs, pas du matériel ; il ne construit pas votre code (pas de CI/CD intégré), n'impose pas de base de données ni de solution de logs. Il fournit les briques pour bâtir une plateforme, tout en préservant la liberté de choix.
Faut-il toujours Kubernetes ?
Non — et c'est important. Sa puissance a un coût de complexité réel (courbe d'apprentissage, exploitation, sécurité). Pour une petite application ou une équipe réduite, un service managé plus simple (PaaS, « serverless ») suffit souvent et coûte moins cher en temps humain. Kubernetes brille quand on a beaucoup de services, plusieurs équipes et un fort besoin d'élasticité. Comme toujours, l'outil doit servir le besoin, pas l'inverse.