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.
kubectl get pods
kubectl get pods -o wideManifeste 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.
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80kubectl apply -f pod.yaml
kubectl get pod nginx-pod
kubectl describe pod nginx-podDé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.
kubectl describe pod <pod>
kubectl logs <pod>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.
Erreur fréquente : déployer durablement avec un Pod isolé
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.