Aller au contenu principal

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