Что произойдет, если под не пройдет readiness-пробу в Kubernetes?

«Что произойдет, если под не пройдет readiness-пробу в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Если Pod не проходит readiness-пробу, Kubernetes исключает его из списка эндпоинтов Service. Это означает:

  • Трафик не направляется на этот Pod — балансировщик нагрузки (kube-proxy) обновляет правила iptables/IPVS, убирая IP этого Pod'а из цепочки правил.
  • Pod продолжает работать — в отличие от failed liveness-пробы, контейнер не перезапускается.
  • Сервис остается доступным через другие, здоровые Pod'ы.

Типичный сценарий использования:

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10  # Даем время на инициализацию
  periodSeconds: 5
  failureThreshold: 3

Это полезно, когда приложению нужно время для загрузки кэша, подключения к БД или выполнения других подготовительных операций перед приемом трафика. В моей практике мы настраивали readiness-пробу для сервисов, которые подключаются к нескольким внешним системам — пока все подключения не установлены, Pod не получает пользовательские запросы.