Kubernetes startupProbe: дать приложению время на запуск

Категория: Backend · Язык: YAML · Обновлено:

startupProbe защищает медленно запускающийся контейнер от преждевременного перезапуска. Пока startup-проверка не прошла, Kubernetes не запускает для контейнера livenessProbe и readinessProbe.

Настроить startup, liveness и readiness

Добавьте настройки в элемент контейнера внутри spec.template.spec.containers:

YAML
ports:
  - name: http
    containerPort: 8080

startupProbe:
  httpGet:
    path: /healthz
    port: http
  periodSeconds: 10
  timeoutSeconds: 2
  failureThreshold: 30

livenessProbe:
  httpGet:
    path: /healthz
    port: http
  periodSeconds: 10
  timeoutSeconds: 2

readinessProbe:
  httpGet:
    path: /readyz
    port: http
  periodSeconds: 5
  timeoutSeconds: 2

Приложение должно отвечать на оба health path. При таких значениях startup-проверка допускает примерно до 300 секунд на запуск (30 × 10 секунд). После успеха liveness контролирует зависшее приложение, а readiness убирает pod из балансировки, пока он не готов принимать запросы.

Не делайте readiness зависимым от всех внешних систем, если их кратковременный сбой не должен убирать каждый экземпляр из обслуживания. Подберите пороги под реальное время старта и поведение приложения.

Документация: Liveness, Readiness and Startup Probes.