Самое простое, что можно сделать здесь, - это просто иметь свой сервис sh, если он не может достичь RabbitMQ или другой зависимости.
Kubernetes немедленно перезапустит его, и если причина сбоя была сетевое сообщение, все снова будет хорошо. Но если RabbitMQ на самом деле не работает, модуль снова будет обрабатывать sh, и после нескольких попыток модуль будет в состоянии CrashLoopBackOff; Kubernetes сделает паузу, прежде чем пытаться перезапустить его.
В этот момент ваш RabbitMQ будет отсутствовать, а на ваших различных модулях будет отображаться CrashLoopBackOff. Если вы посмотрите на такие вещи, как kubectl get pods
, вы скажете «подождите, что-то действительно не так», и kubectl logs
на отдельном модуле, вероятно, будет иметь довольно четкий след: «Не удалось подключиться к RabbitMQ».
После восстановления RabbitMQ произойдет (в конце концов) перезапуск автомата c, и вся система снова включится сама.