Exit Code 137 = 128 + 9 : le processus a reçu SIGKILL. Avec Reason: OOMKilled, c'est le
noyau qui l'a tué parce que le conteneur dépassait sa limite mémoire (cgroup), pas le nœud, qui a
encore 70 % de RAM libre. La 3.2 charge 412 318 factures en mémoire au démarrage (~420 Mi) : en
préprod, la limite est de 1 Gi, en prod elle est restée à 256Mi. D'où le « ça marche en préprod ».
La sonde de vivacité n'est pas en cause : quand elle échoue, l'événement indique Liveness probe failed
et le conteneur finit en Error, pas en OOMKilled.
Incident résolu
Analyse et correction
Correction immédiate : relever les ressources selon la consommation mesurée, avec une marge :
kubectl set resources deployment facturation --requests=memory=512Mi --limits=memory=768Mi, puis
suivre le déploiement avec kubectl rollout status deployment facturation.
Pour que cela ne recommence pas :
- reporter la valeur dans les manifests Git (sinon le prochain
kubectl applyremet 256Mi) ; - garder les mêmes limites en préprod et en prod, et tester les versions sous charge réaliste ;
- alerter sur les redémarrages de conteneurs (
kube_pod_container_status_restarts_total) et sur la raisonOOMKilled; - côté code : charger le cache par lots ou à la demande plutôt que tout en mémoire au démarrage.