Kubernetes · Pods

Pods

Découvrez le cycle de vie des Pods et apprenez à les observer avant de les gérer via un Deployment.

Leçon disponible
20 min

Objectifs

  • Expliquer pourquoi le Pod est la plus petite unité déployable Kubernetes.
  • Comprendre le partage réseau et le cycle de vie de ses containers.
  • Lire phases, labels et restartPolicy.
  • Créer et diagnostiquer un Pod pédagogique à partir d’un manifeste YAML.

Comprendre les Pods

Un Pod regroupe un ou plusieurs containers étroitement liés, co-planifiés sur le même nœud. Ils partagent notamment l’adresse IP du Pod, l’espace de ports et les volumes déclarés.

Les Pods sont conçus comme des ressources remplaçables. Leur adresse IP peut changer après recréation ; un contrôleur et un Service fournissent les abstractions adaptées à une application durable.

Phases, labels et restartPolicy

La phase résume le cycle de vie global : Pending avant exécution complète, Running lorsqu’au moins un container fonctionne ou redémarre, Succeeded après succès définitif, Failed après terminaison en échec et Unknown si l’état ne peut être obtenu.

restartPolicy vaut Always, OnFailure ou Never et guide le kubelet pour les redémarrages des containers dans le même Pod. Les labels sont des paires clé-valeur utilisées notamment par les sélecteurs.

Lister les Pods avec leur placement et leur adresse
kubectl get pods
kubectl get pods -o wide

Manifeste d’un Pod nginx

Le manifeste déclare l’API core v1, le nom, un label et un container. containerPort documente le port écouté, mais ne crée pas à lui seul un Service ou un accès externe.

pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
    - name: nginx
      image: nginx:alpine
      ports:
        - containerPort: 80
Appliquer puis inspecter le Pod
kubectl apply -f pod.yaml
kubectl get pod nginx-pod
kubectl describe pod nginx-pod

Décrire, lire les logs et supprimer

describe rassemble configuration, état des containers, conditions et événements récents. logs affiche la sortie d’un container. Pour un Pod multi-container, précisez le container avec -c.

Observer un Pod ciblé
kubectl describe pod <pod>
kubectl logs <pod>
Suppression volontaire d’un Pod identifié
kubectl delete pod <pod>

Un Deployment recrée normalement un Pod supprimé pour restaurer le nombre de replicas. Un Pod isolé n’a pas ce contrôleur : sa suppression peut être définitive.

Pourquoi utiliser un Deployment ?

En pratique, une application stateless est généralement décrite par un Deployment. Son contrôleur crée et remplace les Pods, gère les replicas et les mises à jour, au lieu de vous obliger à maintenir un Pod isolé.

Bonnes pratiques

Ajoutez des labels cohérents, utilisez des images versionnées, déclarez les ressources et probes adaptées, puis laissez un contrôleur gérer les Pods applicatifs.

  • Éviter de dépendre du nom ou de l’IP d’un Pod individuel.
  • Décrire avant de supprimer une ressource en échec.
  • Séparer les containers en Pods distincts sauf s’ils doivent réellement partager leur cycle de vie.

Mini résumé

  • Un Pod contient un ou plusieurs containers co-localisés.
  • Son IP et son existence sont éphémères ; les contrôleurs créent des remplacements.
  • Phases, restartPolicy et labels décrivent état et comportement.
  • get, describe et logs sont les premières commandes d’observation.

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Pourquoi Kubernetes gère-t-il des Pods plutôt que directement chaque container ?
2. Pourquoi ne pas configurer un client avec l’IP fixe d’un Pod ?
3. Quel avantage principal apporte un Deployment par rapport à un Pod isolé ?