Article

Kubernetes 017 – Rollouts : strategies, recreate, undo, pause

TL;DR

Quand le template d’un Deployment change, Kubernetes declenche un rollout. La strategie par defaut RollingUpdate remplace progressivement les pods. On peut suivre l’etat, annuler une version avec undo, mettre en pause et reprendre un rollout.

La video de reference

Video: https://www.youtube.com/watch?v=WSfB7Ae4SPg

Elle approfondit le Deployment en montrant ce qui se passe lors d’une mise a jour.

Declencher un rollout

Un rollout est declenche quand le template du pod change: image, variables d’environnement, labels du template, probes, volumes, arguments.

kubectl set image deployment/web nginx=nginx:1.26
kubectl rollout status deployment/web
kubectl rollout history deployment/web

Le Deployment cree un nouveau ReplicaSet et diminue progressivement l’ancien.

Strategie RollingUpdate

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 1
    maxSurge: 1

maxUnavailable limite le nombre de pods indisponibles. maxSurge autorise des pods supplementaires pendant la transition.

Strategie Recreate

strategy:
  type: Recreate

Avec Recreate, Kubernetes arrete les anciens pods avant de creer les nouveaux. C’est plus brutal, mais utile pour certaines applications qui ne supportent pas deux versions en parallele.

Rollback

kubectl rollout history deployment/web
kubectl rollout undo deployment/web
kubectl rollout undo deployment/web --to-revision=2

Le rollback revient a un template precedent. Il ne remplace pas une vraie strategie de release, mais il est tres utile en lab et en exploitation.

Pause et reprise

kubectl rollout pause deployment/web
kubectl set image deployment/web nginx=nginx:1.27
kubectl rollout resume deployment/web

La pause permet de preparer plusieurs changements avant de declencher la mise a jour.

Découvrez  Kubernetes 020 - Services : ClusterIP, principes, schema et demo

Lire les objets

kubectl get deploy web
kubectl get rs -l app=web
kubectl describe deploy web
kubectl get events --sort-by=.lastTimestamp

Ces commandes montrent la progression, les ReplicaSets et les evenements associes.

Liens utiles

FAQ

Changer replicas declenche-t-il un rollout ?

Non. Cela scale le Deployment, mais ne cree pas une nouvelle revision du template.

RollingUpdate garantit-il zero interruption ?

Pas seul. Il faut aussi des readiness probes et une application capable de recevoir le trafic correctement.

Undo restaure-t-il les donnees ?

Non. Il restaure le template du Deployment, pas l’etat applicatif ni la base de donnees.

Erreurs frequentes

  • Faire un rollout sans readiness probe.
  • Croire qu’un rollback corrige une migration de donnees.
  • Utiliser Recreate sans accepter une coupure.
  • Ne pas regarder les ReplicaSets crees.

Pour pratiquer

kubectl create deployment web --image=nginx:1.25
kubectl scale deployment web --replicas=3
kubectl set image deployment/web nginx=nginx:1.26
kubectl rollout status deployment/web
kubectl rollout history deployment/web
kubectl rollout undo deployment/web

Observez les ReplicaSets avant et apres le rollback.

Notions et definitions

  • Pod: plus petite unite deployable dans Kubernetes.
  • Controleur: objet qui maintient un etat attendu, comme Deployment, ReplicaSet, DaemonSet ou StatefulSet.
  • Reconciliation: boucle permanente qui compare l’etat reel et l’etat desire.

Ces definitions donnent le vocabulaire minimal pour suivre l’article sans reduire Kubernetes a une simple commande. Chaque notion doit etre reliee a un objet visible avec kubectl ou a un composant du cluster.

Exemple concret

Un Deployment a trois replicas recree automatiquement un pod supprime afin de revenir a l’etat attendu declare dans sa specification.

Cet exemple sert de fil conducteur: il montre quel probleme operationnel Kubernetes cherche a resoudre et quelle ressource permet de le formaliser.

Découvrez  Kubernetes 035 - Volumes : TP Wordpress partie 2 solution

How-to rapide

  • Declarer le workload avec un manifest YAML ou une commande kubectl.
  • Observer les pods crees et leurs labels.
  • Lire les events pour comprendre scheduling, pulls d’images et redemarrages.
  • Modifier le controleur plutot que les pods generes directement.

Le how-to est volontairement court: l’idee est d’obtenir un resultat observable, puis d’utiliser les commandes de verification pour comprendre ce qui s’est passe.

Approfondir cet article

Cet episode doit surtout permettre de maitriser le passage d’un conteneur isole a un workload controle par Kubernetes. L’objectif n’est pas seulement de refaire les commandes, mais de comprendre quel objet Kubernetes est cree, quel composant le prend en charge et comment verifier le resultat.

Questions a se poser

  • Quel est l’etat desire exprime dans Kubernetes ?
  • Quel composant observe cet etat et tente de le reconciler ?
  • Quels symptomes montrent que l’objet est cree mais pas encore operationnel ?
  • Quelle commande donne l’information la plus fiable pour diagnostiquer ?

Commandes de verification

  • kubectl get pods -o wide --show-labels
  • kubectl describe pod <pod> pour lire scheduling, events et conditions
  • kubectl rollout history deployment/<name> quand un Deployment est concerne

Ces commandes ne sont pas a apprendre par coeur. Elles servent a construire un reflexe: partir de l’objet Kubernetes, lire son etat, puis descendre vers les pods, les events, les logs ou le noeud uniquement si c’est necessaire.

Points de vigilance

  • modifier un pod gere par un controleur au lieu de modifier le controleur lui-meme
  • ignorer les events alors qu’ils expliquent souvent le probleme
  • oublier que les labels sont le lien entre controleurs, pods et Services

Exercice conseille

Lancez un Deployment nginx a trois replicas, supprimez un pod manuellement, puis observez comment le controleur reconcilie l’etat attendu.

Pour valider la comprehension, gardez une trace courte: manifest utilise, commandes lancees, resultat attendu, resultat observe et correction appliquee. Cette methode rend les episodes suivants beaucoup plus faciles a enchainer.

Lien interne conseille

Pour poursuivre la progression, consultez aussi Kubernetes 018 – What is a Service ? Objectifs, ClusterIP et expose.

Conclusion

Les rollouts donnent au Deployment sa vraie valeur: mettre a jour progressivement, observer, revenir en arriere et maitriser le rythme de changement.

Explorer les formations Xavki

Pour apprendre dans l ordre, repartez depuis la roadmap ou une playlist thematique.