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

Nœud, espace de noms et pod

Après cette leçon: Je peux dire ce qu’est un nœud, un espace de noms et un pod, et les lister avec kubectl get.

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

Qu’est-ce que Kubernetes ?

Kubernetes est un logiciel qui lance des programmes sur un groupe d’ordinateurs et les garde en marche. Pour le lire et le dépanner, il faut d’abord comprendre trois notions : le nœud, l’espace de noms et le pod.

Prenez le site de réservation de billets d’une compagnie ferroviaire. Le soir d’un départ en vacances, des milliers de personnes se connectent. Personne ne veut démarrer des machines à la main : Kubernetes s’en charge.

À la fin de cette leçon

Remarque

Je peux dire ce qu’est un nœud, un espace de noms et un pod, et les lister avec kubectl get.

Mots-clés

MotCe que ça veut direExemple
Clusterun groupe de machines gérées ensemble
Nœudune machine du cluster
Espace de nomsun dossier qui range les objets d’un projetkube-system
Podun ou plusieurs conteneurs lancés ensemble
Conteneurun programme isolé, avec ce dont il a besoin
kubectlla commande qui parle au cluster

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

Un cluster est un groupe de nœuds

Un cluster est un groupe de machines que Kubernetes gère comme un tout. Chaque machine du groupe s’appelle un nœud.

Le nœud qui décide où tourne chaque programme porte le rôle control-plane, le plan de contrôle. Dans une grande entreprise, il y a plusieurs nœuds. Dans ce labo, il n’y en a qu’un : k3s, une version légère de Kubernetes, tient dans une seule machine.

Lister le nœud du cluster

Commande
kubectl get nodes --no-headers | awk '{print $2, $3, $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.

Que dit la ligne du nœud ?

La commande affiche une ligne : Ready control-plane v1.35.9+k3s1. Ready veut dire que le nœud est prêt à recevoir des pods. control-plane est son rôle. La dernière colonne est la version de Kubernetes que fait tourner ce k3s.

awk ne garde ici que trois colonnes : sans lui, kubectl get nodes affiche aussi le nom du nœud et son âge, qui changent d’une machine à l’autre.

Un espace de noms range les objets

Un espace de noms (en anglais namespace) est comme un dossier : il range les objets d’un projet et les sépare de ceux des autres. Deux projets peuvent avoir chacun un objet appelé menu, tant qu’ils sont dans deux espaces de noms différents.

Kubernetes en crée quatre tout seul. Lancez la commande pour les lire, puis comparez avec le tableau.

Lister les espaces de noms

Commande
kubectl get namespaces --no-headers | awk '{print $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.

Exemple travaillé : les quatre espaces du départ

Espace de nomsCe qu’il contient
defaultCe que vous créez sans préciser d’espace
kube-systemLes pods que Kubernetes lance pour lui-même
kube-publicCe que tout le monde peut lire
kube-node-leaseLes signes de vie des nœuds

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

Compter les pods du système

Commande
kubectl get pods -n kube-system --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.

Les pods que Kubernetes lance lui-même

L’option -n choisit l’espace de noms. Dans kube-system, la commande compte deux pods : coredns, qui sert les noms (leçon 3), et local-path-provisioner, qui donne du disque aux pods qui en demandent.

Sans -n, kubectl regarde l’espace default. Pour tout voir d’un coup, on écrit -A, pour all namespaces.

Erreur fréquente

Attention

Beaucoup pensent que kubectl get pods liste tous les pods du cluster. Il ne liste que ceux de l’espace de noms courant, default au départ. Un « No resources found » veut donc souvent dire : vous regardez au mauvais endroit. Ajoutez -n nom ou -A.

Le pod est le plus petit objet

Un pod est l’unité que Kubernetes lance : un ou plusieurs conteneurs qui tournent ensemble sur le même nœud. Le plus souvent, un pod ne contient qu’un conteneur.

Les trois Runs suivants créent un espace cantine, y lancent un pod qui écrit une ligne puis s’arrête (--restart=Never), et attendent qu’il ait fini.

Créer l’espace cantine

Commande
kubectl create namespace cantine

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.

Lancer un pod qui dit bonjour

Commande
kubectl run bonjour -n cantine --image=busybox:1.37.0 --restart=Never -- echo "Bonjour de la cantine"

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 la fin du pod

Commande
kubectl wait --for=jsonpath='{.status.phase}'=Succeeded pod/bonjour -n cantine --timeout=60s

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 ce que le pod a écrit

Commande
kubectl logs bonjour -n cantine

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 quatre Runs ?

Le premier affiche namespace/cantine created, le deuxième pod/bonjour created. Le troisième affiche pod/bonjour condition met quand le pod a fini. Le dernier affiche la ligne écrite par le programme : Bonjour de la cantine.

Le labo n’a pas accès à Internet : l’image busybox:1.37.0 est la seule qu’il possède, donc tous les pods du cours l’utilisent.

Lire l’état final du pod

Commande
kubectl get pod bonjour -n cantine --no-headers | awk '{print $2, $3}'

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é : lire un tableau de pods

ColonneElle ditExemple
NAMELe nom du podmenu-5c4b7-fghij
READYConteneurs prêts sur conteneurs du pod1/1, ou 0/1 pour le pod qui a fini
STATUSOù en est le podRunning, Pending, Completed
RESTARTSCombien de fois un conteneur a redémarré0
AGEDepuis combien de temps il existe5m

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

Supprimer l’espace cantine

Commande
kubectl delete namespace cantine

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.