Зонды готовности и быстродействия для приложений с зависимостями (DB, Celery, RabbitMQ)
Представьте, что есть приложение Django. Зависимости приложения: DB, Celery (workers, beat), RabbitMQ (как брокер для Celery). Если с liveness probe все более-менее понятно (если liveness probe не прошел, то перезапускается pod), то с readiness probe полного понимания нет. Пишут, что readiness probes определяет готовность контейнера к приему трафика. В связи с этим возникают следующие вопросы:
- Для описанной выше конфигурации приложения (с зависимостями), как будет выглядеть зонд готовности? Будет ли это конечная точка, которая проверяет доступность к базе данных, RabbitMQ, здоровье рабочих Celery?
- Если тест готовности будет сложным (проверка доступности базы данных, RabbitMQ, Celery workers), то что будет делать Kubernetes, если, например, RabbitMQ станет недоступным? Поскольку все контейнеры работают с одним и тем же RabbitMQ, нет смысла переключать трафик на другой pod. .