Fragen? Antworten! Siehe auch: Alternativlos
Hier ist ein sehr schönes Post Morten von Gitlab über ein Problem, das sie in ihrem Kubernetes-Setup hatten. Die Auflösung am Ende ist recht lustig finde ich.
^Das Symptom war, dass ihre User Fehlermeldungen im Browser bekamen. Stellte sich raus, dass die Backends nicht antworteten, also haben die Webservices davor 502-Fehler geworfen.
Nun haben sie da Sensoren, die erkennen sollen, wenn ein Backend weg ist, und das sollte dann aus der Rotation genommen werden. Stellt sich raus: Selbst sauber runtergefahrene Backends blieben in der Rotation.
Am Ende lag es daran, dass Kubernetes den Container runterfahren wollte, und ein SIGTERM schickte, aber die Software in ihrem Docker-Image hatte eine Shell dazwischen und die fraß das SIGTERM. Daraufhin blieb der Container aus Sicht von Kubernetes 30 Sekunden lang "oben", bis Kubernetes nicht mehr warten will und ein SIGKILL schickt, um den Container "unsauber" herunterzufahren.
Interessanterweise reichte es nicht, da ein exec einzubauen in das Shellskript, das ihre Software ausführt. Sie mussten das Dockerfile umstellen.
Ganz blöder Bug, und ich finde es wunderbar, wenn Firmen sowas in Post Mortems veröffentlichen, damit man die Symptome googeln und die Lösung finden kann.