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