DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesDécouvrir Kubernetes : pods, services et kubectl02 - Créer et gérer des Pods

Détails

  • 25 minutes
  • Débutant

Objectifs

  • Écrire un manifest YAML Pod complet
  • Appliquer, inspecter et supprimer un pod
  • Rediriger un port local vers un pod
  • Comprendre les statuts Pending, Running et CrashLoopBackOff
Module Découvrir Kubernetes : pods, services et kubectl

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, describe et delete
  • ✅ 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-app accessible sur localhost: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 dans spec.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 : -w maintient 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 Events en 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-pod et kubectl describe pod crash-pod → section Events

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.

yaml
# 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-demo affiche 2/2 Running
  • kubectl logs sidecar-demo -c nginx affiche les logs nginx
  • kubectl exec -it sidecar-demo -c sidecar -- wget -O- localhost retourne le HTML nginx
  • kubectl port-forward pod/sidecar-demo 8081:80 permet d'accéder à nginx depuis localhost
  • kubectl delete pod sidecar-demo supprime le pod

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Écrire le manifest YAML
  • Tâche 2 : Observer les phases du pod
  • Tâche 3 : Accéder à l'application
  • Tâche 4 : Inspecter avec describe
  • Tâche 5 : Provoquer et diagnostiquer un CrashLoopBackOff
  • 🗂️ Mini-Projet : Pod multi-conteneurs