Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Déploiement Kubernetes et réplicas

Après cette leçon: Je peux garder trois copies d’un pod en marche avec un Deployment, et dire ce qui se passe quand l’une disparaît.

Leçon de 50 min12 commandesLab Kubernetes : un cluster k3s à un nœud pour chaque élève, sur une VM Ubuntu privée

Trois copies, même si l’une plante

Un Deployment, ou déploiement, est l’objet Kubernetes qui garde en marche le nombre voulu de copies d’un pod. Si une copie disparaît, il en recrée une sans que personne n’intervienne.

Une boulangerie en ligne reçoit ses commandes de 7 h à 9 h. Elle veut trois copies de son programme de caisse : si l’une plante, les deux autres continuent.

À la fin de cette leçon

Remarque

Je peux garder trois copies d’un pod en marche avec un Deployment, et dire ce qui se passe quand l’une disparaît.

Mots-clés

MotCe que ça veut direExemple
Deploymentl’objet qui garde le nombre voulu de pods en marche
Réplicaune copie identique d’un pod
État vouluce que vous demandez à Kubernetesreplicas: 3
État réelce qui tourne vraiment à cet instant
Étiquetteun couple nom et valeur posé sur un objetapp=baguette
Mise à l’échellechanger le nombre de réplicas

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Vous décrivez l’état voulu, Kubernetes le tient

Avec un Deployment, vous ne dites pas « lance trois pods ». Vous dites : « je veux trois réplicas ». C’est l’état voulu.

Kubernetes compare sans arrêt l’état voulu à l’état réel, ce qui tourne vraiment. S’il manque un pod, il en crée un. S’il y en a trop, il en supprime. Le Deployment retrouve ses pods grâce à une étiquette commune, ici app=baguette.

Créer l’espace boulangerie

Commande
kubectl create namespace boulangerie

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Créer un Deployment de trois pods

Commande
kubectl create deployment baguette --image=busybox:1.37.0 --replicas=3 -n boulangerie -- sleep 3600

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Attendre que les trois pods soient prêts

Commande
kubectl rollout status deployment/baguette -n boulangerie --timeout=90s

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Que montrent ces trois Runs ?

Le deuxième affiche deployment.apps/baguette created. Le troisième affiche plusieurs lignes « Waiting for deployment… » pendant que les pods démarrent, puis deployment "baguette" successfully rolled out : les trois pods sont prêts.

sleep 3600 donne au pod un programme qui ne finit pas avant une heure. Sans lui, le pod s’arrêterait tout de suite, et le Deployment le relancerait sans fin.

Lire l’état du Deployment

Commande
kubectl get deployment baguette -n boulangerie --no-headers | awk '{print $2, $3, $4}'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un pod supprimé est remplacé aussitôt

Supprimez un pod du Deployment : l’état réel tombe à deux, l’état voulu reste trois. Kubernetes crée tout de suite un pod pour combler l’écart.

Le Run suivant choisit un seul pod avec head -n 1 et le supprime. Il affiche pod "baguette-…" deleted, avec un nom qui change à chaque fois. Le compte des pods, ensuite, reste trois.

Supprimer un pod du Deployment

Commande
kubectl get pods -n boulangerie -o name | head -n 1 | xargs kubectl delete -n boulangerie --grace-period=1

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compter les pods de l’espace

Commande
kubectl get pods -n boulangerie --no-headers | wc -l

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Erreur fréquente

Attention

Beaucoup pensent qu’il suffit de supprimer un pod pour arrêter une application. Le Deployment le recrée, puisqu’il doit en garder trois. Pour arrêter l’application, supprimez le Deployment, ou demandez zéro réplica.

Changer le nombre de réplicas

La mise à l’échelle (en anglais scaling) change l’état voulu. Les deux Runs suivants demandent cinq pods, puis attendent qu’ils soient prêts : le premier affiche deployment.apps/baguette scaled, le second se termine par successfully rolled out.

Le troisième lit l’état voulu puis le nombre de pods prêts : 5 5.

Demander cinq réplicas

Commande
kubectl scale deployment baguette --replicas=5 -n boulangerie

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Attendre les cinq pods

Commande
kubectl rollout status deployment/baguette -n boulangerie --timeout=90s

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire voulus et prêts

Commande
kubectl get deployment baguette -n boulangerie -o jsonpath='{.spec.replicas} {.status.readyReplicas}'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple travaillé : le pod isolé

ÉvénementPods du DeploymentPod isoléTotal
Au départ, cinq réplicas505
On lance le pod seul avec `kubectl run`516
On supprime le pod seul505
On supprime un pod du Deployment5 (un nouveau arrive)05

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Lancer un pod isolé

Commande
kubectl run seul -n boulangerie --image=busybox:1.37.0 --restart=Never -- sleep 3600

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compter : cinq plus un

Commande
kubectl get pods -n boulangerie --no-headers | wc -l

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Supprimer l’espace boulangerie

Commande
kubectl delete namespace boulangerie

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

À propos de ce labo et de sa source: Lab Kubernetes : un cluster k3s à un nœud pour chaque élève, sur une VM Ubuntu privée

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.