Chapitre 3.4 - Cycle de Vie des Pods
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre les phases d'un Pod
- Identifier les états d'un Pod
- Comprendre les conditions
- Gérer les redémarrages
Phases d'un Pod
Un Pod passe par plusieurs phases pendant son cycle de vie:
États Détaillés
1. Pending
Le Pod a été accepté par Kubernetes mais les conteneurs ne sont pas encore créés.
Raisons possibles:
- Image en cours de téléchargement
- Pas de node disponible
- Ressources insuffisantes
2. Running
Le Pod est lié à un node et tous les conteneurs sont créés. Au moins un conteneur est en cours d'exécution.
3. Succeeded
Tous les conteneurs du Pod se sont terminés avec succès et ne seront pas redémarrés.
4. Failed
Au moins un conteneur s'est terminé en échec.
5. Unknown
L'état du Pod ne peut pas être obtenu (problème de communication avec le node).
Conditions d'un Pod
Les conditions fournissent plus de détails sur l'état:
conditions:
- type: PodScheduled
status: "True"
reason: ""
- type: Initialized
status: "True"
- type: ContainersReady
status: "True"
- type: Ready
status: "True"
Types de conditions:
- PodScheduled: Le Pod a été assigné à un node
- Initialized: Tous les init containers ont terminé
- ContainersReady: Tous les conteneurs sont prêts
- Ready: Le Pod peut servir du trafic
Restart Policy
Détermine quand redémarrer les conteneurs:
spec:
restartPolicy: Always # Toujours redémarrer
# restartPolicy: OnFailure # Redémarrer seulement en cas d'échec
# restartPolicy: Never # Ne jamais redémarrer
Init Containers
Les init containers s'exécutent avant les conteneurs principaux:
spec:
initContainers:
- name: init-db
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do sleep 2; done']
containers:
- name: app
image: my-app:1.0
Cas d'usage:
- Attendre qu'une dépendance soit prête
- Initialiser la base de données
- Télécharger des fichiers de configuration
Commandes Utiles
# Voir l'état d'un Pod
kubectl get pod my-pod
# Détails complets avec conditions
kubectl describe pod my-pod
# Voir les événements
kubectl get events --field-selector involvedObject.name=my-pod
# Logs d'un conteneur qui a crashé
kubectl logs my-pod --previous
Résumé
Dans ce chapitre, vous avez appris:
Phases: Pending → Running → Succeeded/Failed
Conditions: PodScheduled, Initialized, ContainersReady, Ready
Restart Policy: Always, OnFailure, Never
Init Containers: S'exécutent avant les conteneurs principaux
Diagnostic: kubectl describe, get events, logs --previous
Prochaines Étapes
Maintenant que vous comprenez le cycle de vie:
Chapitre 3.5: ReplicaSets - Gestion de la Réplication
Lab 3.1: Création et Gestion de Pods
Chapitre créé le: Décembre 2024