Pods, ReplicaSets et Deployments
Pourquoi Kubernetes après Docker
Docker lance des conteneurs sur une machine. Dès qu'il faut faire tourner des dizaines de conteneurs sur plusieurs machines, avec redémarrage automatique en cas de panne et mise à l'échelle à la demande, il faut un orchestrateur. Kubernetes (K8s) est l'orchestrateur de conteneurs le plus utilisé.
Le Pod : l'unité de base
Un Pod est le plus petit objet déployable dans Kubernetes. Il encapsule un ou plusieurs conteneurs qui partagent le même réseau et le même stockage.
apiVersion: v1
kind: Pod
metadata:
name: mon-pod
spec:
containers:
- name: web
image: nginx:latest
ports:
- containerPort: 80
Un Pod est éphémère : s'il meurt, il n'est pas recréé automatiquement. C'est pour ça qu'on ne déploie presque jamais un Pod directement.
ReplicaSet : garantir un nombre de répliques
Le ReplicaSet s'assure qu'un nombre défini de Pods identiques tourne en permanence. Si un Pod meurt, le ReplicaSet en recrée un immédiatement.
Deployment : la couche de gestion
Le Deployment gère les ReplicaSets et permet les mises à jour progressives (rolling update) sans interruption de service.
apiVersion: apps/v1
kind: Deployment
metadata:
name: mon-app
spec:
replicas: 3
selector:
matchLabels:
app: mon-app
template:
metadata:
labels:
app: mon-app
spec:
containers:
- name: web
image: nginx:latest
Cette commande crée 3 Pods identiques, gérés automatiquement.
Cas concret
Une équipe déploie une API avec 3 répliques via un Deployment. Un nœud du cluster tombe en panne, emportant un Pod avec lui. Kubernetes détecte l'absence de ce Pod dans le ReplicaSet et en recrée un sur un nœud sain, sans intervention humaine.
Erreurs fréquentes
- Déployer un Pod seul en production : aucune auto-guérison en cas de panne. Toujours passer par un Deployment.
- Oublier les
labels/selector: le Deployment ne retrouve plus ses Pods, ils tournent orphelins. - Confondre
replicaset haute disponibilité géographique : plusieurs répliques sur le même nœud ne survivent pas à la panne de ce nœud.
À retenir
- Pod = plus petite unité déployable, éphémère.
- ReplicaSet = maintient un nombre de Pods identiques.
- Deployment = gère les ReplicaSets, permet les mises à jour sans coupure.
Mini-exercice
Un Deployment définit replicas: 3. Un Pod plante. Combien de temps avant qu'un nouveau Pod ne soit recréé, et par quel mécanisme ?
Réponse : quasi immédiatement, dès que le contrôleur ReplicaSet détecte l'écart entre l'état désiré (3 répliques) et l'état réel (2), sans intervention manuelle.