CrashLoopBackOff
CrashLoopBackOff est l’état affiché par un pod dont le conteneur
redémarre de façon répétée, avec un délai croissant entre chaque
tentative (backoff exponentiel : 10 secondes, puis 20, 40, jusqu’à un
plafond de 5 minutes). Ce n’est pas une erreur en soi : c’est le
kubelet qui applique la politique de redémarrage (restartPolicy)
définie sur le pod, en espaçant les tentatives pour ne pas marteler un
système déjà en échec.
Ce que l’état ne dit pas
CrashLoopBackOff décrit un symptôme, jamais une cause. Le
conteneur peut planter au démarrage (erreur de configuration,
dépendance absente), être tué par le kernel pour dépassement de
mémoire (OOMKilled), ou être redémarré par une sonde
liveness qui
juge à tort le processus mort. Trois causes radicalement différentes,
un seul état affiché ; la cause réelle se trouve dans les événements
du pod (kubectl describe pod) et les logs du conteneur précédent
(kubectl logs --previous), jamais dans l’état lui-même.
Le piège du redémarrage en cascade
Une sonde liveness mal réglée sur une dépendance lente peut mettre en
CrashLoopBackOff toutes les replicas d’un service en même temps :
chacune surveille le même endpoint lent, chacune redémarre au même
moment, et le service entier disparaît pendant que la dépendance,
elle, n’a jamais été réellement en panne. Le backoff exponentiel
ralentit la fréquence des redémarrages sans jamais résoudre la cause.
Il protège le cluster d’un martèlement, pas le service d’une
indisponibilité.