Ответ
readinessProbe определяет, готов ли контейнер внутри пода принимать сетевой трафик. Если проба не проходит, Kubernetes временно удаляет IP-адрес этого пода из списка конечных точек (Endpoints) соответствующего Service. Это позволяет избежать отправки запросов пользователей на поды, которые еще не завершили инициализацию или находятся в неработоспособном состоянии.
Пример конфигурации в манифесте пода:
readinessProbe:
httpGet:
path: /health/ready
port: 8080
initialDelaySeconds: 10 # Ждать 10 секунд перед первой проверкой
periodSeconds: 5 # Проверять каждые 5 секунд
failureThreshold: 3 # Под считается неготовым после 3 неудачных проверок
Типичные сценарии использования:
- Долгая инициализация: Приложение загружает большие конфигурации, подключается к базам данных или кэшам.
- Временная зависимость: Под ожидает доступности внешнего сервиса (например, очереди сообщений).
- Graceful shutdown: Во время остановки пода проба начинает фейлиться, что сигнализирует Service о необходимости перенаправить новый трафик на другие поды.
Ключевое отличие от livenessProbe:
livenessProbeопределяет, жив ли контейнер. При неудаче Kubernetes перезапускает контейнер.readinessProbeопределяет, готов ли контейнер к работе. При неудаче Kubernetes лишь временно исключает под из балансировки нагрузки, не перезапуская его.