Exercice 02 : Créer et gérer des Pods
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Écrire un manifest YAML valide pour un Pod
- ✅ Utiliser
kubectl apply,get,describeetdelete - ✅ Accéder à une application via
kubectl port-forward - ✅ Diagnostiquer un pod en
CrashLoopBackOff
Durée estimée : 25 minutes
Difficulté : ⭐☆☆☆☆ (Débutant)
Prérequis : minikube démarré, exercice 01 terminé
📖 Contexte
Le Pod est l'unité de base de Kubernetes. Il encapsule un ou plusieurs conteneurs qui partagent le même réseau et le même stockage. Comprendre sa structure YAML et son cycle de vie est indispensable avant d'aborder les Deployments.
📋 Énoncé
Vous allez créer un pod qui héberge une application web simple, y accéder depuis votre machine via port-forward, puis provoquer intentionnellement un CrashLoopBackOff pour apprendre à le diagnostiquer.
Résultat attendu :
- Un pod
web-appaccessible surlocalhost:8080 - Compréhension des transitions d'état d'un pod
🧭 Déroulement de l'exercice
Tâche 1 : Écrire le manifest YAML
Créez un fichier web-app.yaml définissant un pod avec l'image httpd:2.4 (Apache), le port 80 exposé, et les labels app: web-app et env: dev.
Indice : Un Pod YAML a quatre champs racine :
apiVersion,kind,metadata,spec. Les conteneurs sont dansspec.containers.
Vérification : kubectl apply -f web-app.yaml ne retourne aucune erreur.
Tâche 2 : Observer les phases du pod
Appliquez le manifest et observez les transitions d'état avec kubectl get pods -w (watch).
Indice :
-wmaintient la connexion et affiche chaque changement d'état en temps réel.
Vérification : Vous observez la séquence Pending → ContainerCreating → Running.
Tâche 3 : Accéder à l'application
Utilisez kubectl port-forward pour rediriger le port local 8080 vers le port 80 du pod, puis testez avec curl.
Indice :
kubectl port-forward pod/web-app 8080:80
Vérification : curl localhost:8080 retourne le HTML de la page d'accueil Apache.
Tâche 4 : Inspecter avec describe
Inspectez le pod avec kubectl describe et repérez : l'IP, le noeud, l'image utilisée, et les events.
Indice : La section
Eventsen bas de la sortie est souvent la plus utile pour diagnostiquer.
Vérification : Vous identifiez l'IP du pod et l'événement Pulled image.
Tâche 5 : Provoquer et diagnostiquer un CrashLoopBackOff
Appliquez le manifest crash-pod.yaml (fourni en solution) qui utilise une commande invalide. Observez le statut, puis lisez les logs pour comprendre l'erreur.
Indice :
kubectl logs crash-podetkubectl describe pod crash-pod→ sectionEvents
Vérification : Vous voyez le statut CrashLoopBackOff et identifiez la cause dans les logs.
🗂️ Mini-Projet : Pod multi-conteneurs
Créez un pod sidecar-demo avec deux conteneurs : un nginx principal et un busybox sidecar qui exécute sleep 3600.
# sidecar-demo.yaml
apiVersion: v1
kind: Pod
metadata:
name: sidecar-demo
labels:
app: sidecar-demo
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
- name: sidecar
image: busybox:1.36
command: ["sleep", "3600"]Checkpoints :
kubectl get pods sidecar-demoaffiche2/2 Runningkubectl logs sidecar-demo -c nginxaffiche les logs nginxkubectl exec -it sidecar-demo -c sidecar -- wget -O- localhostretourne le HTML nginxkubectl port-forward pod/sidecar-demo 8081:80permet d'accéder à nginx depuis localhostkubectl delete pod sidecar-demosupprime le pod