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

Les bases de Kubernetes

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de machine virtuelle12 min de lecture10 commandes

Le garder en marche

Le site d’une boutique doit être là toute la journée. Si l’ordinateur qui le fait tourner tombe en panne à trois heures du matin, quelqu’un doit le relancer ailleurs. Kubernetes fait ce travail : tu lui dis ce qui doit tourner, et il le maintient en marche, en lançant une nouvelle copie dès qu’une disparaît.

À la fin de cette leçon

Remarque

Je peux dire ce que fait un Deployment et ce qui se passe quand l’un de ses pods est supprimé.

Mots-clés

  • Cluster : les machines sur lesquelles Kubernetes fait tourner tes programmes.
  • Nœud (node) : une machine du cluster.
  • Pod : une copie en marche d’un programme, faite d’un ou plusieurs conteneurs.
  • Deployment : ton souhait d’un certain nombre de pods identiques, que Kubernetes maintient vrai.
  • Espace de noms (namespace) : un dossier nommé qui sépare les affaires d’un groupe de celles d’un autre.
  • kubectl : la commande qui parle au cluster.

Pour commencer : ce que tu sais déjà

Remarque

Réponds dans ta tête. 1. Qu’est-ce qu’un conteneur ? 2. Que se passe-t-il si un programme ne tourne que sur un seul ordinateur, et que cet ordinateur tombe en panne ? 3. Que veut dire mettre à l’échelle (scale) un programme ? Tu as besoin des trois dans un instant.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de cette leçon. Ce lab est une machine Ubuntu entière, rien que pour toi, avec un petit cluster Kubernetes, k3s, installé dedans : il met donc quelques minutes à démarrer la première fois. Chaque bouton Exécuter tape sa commande dans le terminal de la machine, l’une après l’autre, dans la même session. Si l’un d’eux dit que le cluster n’est pas prêt, attends une minute et appuie de nouveau. Pour les regarder, ou pour taper les tiens, appuie sur Ouvrir le terminal dans la barre. Kubernetes a besoin de 2 Go de mémoire : c’est la machine d’un compte d’établissement, celle d’un compte gratuit n’en a qu’un.

Un cluster qu’on peut lire

Ce cluster est une seule machine, donc il a un seul nœud. kubectl get nodes le liste : son STATUS est Ready, son rôle est control-plane et la dernière colonne est la version de k3s. kubectl get pods -A liste les pods de tous les espaces de noms. Ceux de kube-system ont été lancés par Kubernetes lui-même : coredns donne des noms au cluster et local-path-provisioner donne aux pods un endroit où garder des fichiers.

Commande
kubectl get nodes

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.

Commande
kubectl get pods -A

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 Deployment maintient des pods en marche

D’abord un espace de noms à nous, demo, pour que rien ici ne gêne le lab. Puis un Deployment nommé hello : trois copies d’un petit programme, busybox qui exécute sleep. Cette machine n’atteint aucun registre d’images : tous les pods de ce lab utilisent donc la seule image qu’elle a, busybox. kubectl get pods -n demo liste trois pods dont le nom commence par hello- et finit par des lettres au hasard. Ils sont Running au bout de quelques secondes, et Pending ou ContainerCreating d’ici là.

Commande
kubectl create namespace demo

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.

Commande
kubectl create deployment hello --image=busybox:1.37.0 --replicas=3 -n demo -- 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.

Commande
kubectl get pods -n demo

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.

Une erreur fréquente

Attention

Beaucoup pensent que supprimer un pod arrête le programme. Ce n’est pas le cas. Le Deployment veut toujours trois pods, il en fait donc un autre. Pour arrêter le programme, on supprime le Deployment, ou on le réduit.

Supprime les pods, et ils reviennent

Supprime maintenant les trois pods d’un coup. --grace-period=1 sert seulement à les arrêter vite. La commande affiche trois lignes, une pour chaque pod supprimé. Liste ensuite les pods de nouveau : il y en a trois, avec des noms nouveaux et un AGE de quelques secondes. Personne n’a dit à Kubernetes de les lancer. Le Deployment a remarqué qu’il n’en avait plus et en a fait trois.

Commande
kubectl delete pods -n demo -l app=hello --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.

Commande
kubectl get pods -n demo

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.

Vérifie

Astuce

Pourquoi y a-t-il encore trois pods après que tu as supprimé les trois ? Réponse : le Deployment est un souhait de trois pods, et Kubernetes continue de rendre ce souhait vrai.

Change le nombre, puis range

Mettre à l’échelle, c’est changer le nombre du souhait. kubectl scale en demande cinq. Le Deployment affiche READY à 3/5 pendant que les deux nouveaux pods démarrent, puis 5/5. La dernière commande supprime l’espace de noms, et tout ce qu’il contient part avec lui, prêt pour le lab.

Commande
kubectl scale deployment hello -n demo --replicas=5

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.

Commande
kubectl get deployment hello -n demo

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.

Commande
kubectl delete namespace demo

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.

Maintenant, fais le lab

Astuce

Tu as vu un Deployment maintenir trois pods. Ton lab en demande plus : trois serveurs web derrière un seul nom de Service, une ConfigMap dont les pages sont faites, et trois Deployments cassés que tu répares en lisant ce que dit Kubernetes. Ouvre le fichier README.md de ton dossier personnel avec cat README.md dans le terminal.

Vérification finale

Astuce

Réponds sans regarder en arrière. 1. Que fait un Deployment ? 2. Que se passe-t-il quand tu supprimes un pod d’un Deployment de trois ? 3. Que change kubectl scale ? 4. À quoi sert un espace de noms ? Réponses : il maintient en marche un certain nombre de pods identiques ; il en fait un nouveau, donc il y en a de nouveau trois ; le nombre de pods que veut le Deployment ; séparer les affaires d’un groupe de celles d’un autre.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon donnée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Elle se déroule dans un lab VM : chaque élève a sa propre machine Ubuntu avec un cluster Kubernetes à un nœud (k3s), et un bouton Exécuter tape dans son terminal et montre ce qui s’est affiché. Points clés : 1. Un Deployment est un souhait d’un nombre de pods. 2. Kubernetes maintient le souhait vrai : un pod supprimé revient. 3. Mettre à l’échelle change le nombre. Erreur fréquente : croire que supprimer un pod arrête le programme. Matériel : le lab et un navigateur, et un compte d’établissement, car le cluster demande 2 Go. Conseil : avant de supprimer les pods, demandez à la classe ce qui va se passer et pourquoi. Le lab lui-même a une vérification qui note le cluster. Copiez la leçon dans votre propre module pour la modifier, ou construisez-en une de zéro avec le menu Lab du générateur de leçons.

À 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 ces leçons à vos élèves avec correction et un labo pour chaque élève.