Aller au contenu principal

Lab 3.1 - Création et Gestion de Pods

Objectifs

À la fin de ce lab, vous serez capable de:

  • Créer des Pods avec YAML
  • Gérer le cycle de vie des Pods
  • Utiliser les labels et selectors
  • Inspecter les Pods

Prérequis

  • Cluster Kubernetes fonctionnel
  • kubectl installé et configuré

Exercice 1: Créer un Pod Simple

Étape 1: Créer le fichier YAML

Créez pod-simple.yaml:

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
env: dev
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80

Étape 2: Créer le Pod

kubectl apply -f pod-simple.yaml

Étape 3: Vérifier

# Voir le Pod
kubectl get pods

# Détails
kubectl describe pod nginx-pod

# Logs
kubectl logs nginx-pod

Exercice 2: Pod avec Variables d'Environnement

Créez pod-env.yaml:

apiVersion: v1
kind: Pod
metadata:
name: env-pod
spec:
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'echo $MESSAGE && sleep 3600']
env:
- name: MESSAGE
value: "Hello from Kubernetes!"

Appliquez et vérifiez les logs.


Exercice 3: Pod Multi-Conteneurs

Créez pod-multi.yaml:

apiVersion: v1
kind: Pod
metadata:
name: multi-pod
spec:
containers:
- name: nginx
image: nginx:1.20
- name: busybox
image: busybox
command: ['sh', '-c', 'while true; do echo $(date); sleep 5; done']

Testez la communication entre conteneurs.


Exercice 4: Labels et Selectors

Étape 1: Créer plusieurs Pods avec labels

kubectl run pod1 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod2 --image=nginx:1.20 --labels=app=web,env=prod
kubectl run pod3 --image=nginx:1.20 --labels=app=api,env=dev

Étape 2: Filtrer avec labels

# Pods avec app=web
kubectl get pods -l app=web

# Pods avec app=web ET env=prod
kubectl get pods -l app=web,env=prod

# Pods sans env=dev
kubectl get pods -l 'env!=dev'

Exercice 5: Cycle de Vie

Étape 1: Observer les phases

# Créer un Pod
kubectl run test-pod --image=nginx:1.20

# Observer les phases
kubectl get pod test-pod -w

# Voir les événements
kubectl describe pod test-pod

Étape 2: Tester le redémarrage

Créez un Pod qui plante:

apiVersion: v1
kind: Pod
metadata:
name: crash-pod
spec:
restartPolicy: Always
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'exit 1']

Observez le redémarrage automatique.


Nettoyage

# Supprimer tous les Pods créés
kubectl delete pod nginx-pod env-pod multi-pod pod1 pod2 pod3 test-pod crash-pod

Questions de Réflexion

  1. Quelle est la différence entre un Pod mono-conteneur et multi-conteneurs?
  2. Comment les conteneurs dans un Pod communiquent-ils?
  3. Pourquoi utiliser des labels?
  4. Que se passe-t-il si un conteneur plante?

Prochaines Étapes

Lab 3.2: Déploiement avec ReplicaSets
Chapitre 3.5: ReplicaSets


Lab créé le: Décembre 2024