Для чего нужен livenessProbe в Kubernetes?

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

Ответ

Liveness Probe (проба жизнеспособности) — это механизм, с помощью которого kubelet периодически проверяет, работает ли контейнер в состоянии, пригодном для обслуживания запросов. Если проба fails, kubelet убивает контейнер и перезапускает его согласно политике restartPolicy.

Цель: Восстановление «зависшего» (deadlocked) или неработоспособного приложения автоматически, без ручного вмешательства. Контейнер может быть запущен (Running), но само приложение внутри — нет.

Пример конфигурации для веб-приложения:

apiVersion: v1
kind: Pod
metadata:
  name: web-pod
spec:
  containers:
  - name: web-app
    image: nginx:alpine
    livenessProbe:
      httpGet:           # Тип проверки - HTTP GET запрос
        path: /health    # Эндпоинт здоровья приложения
        port: 8080
        httpHeaders:
        - name: Custom-Header
          value: "Liveness-Check"
      initialDelaySeconds: 15 # Ждем 15 сек после старта контейнера
      periodSeconds: 10       # Проверяем каждые 10 секунд
      timeoutSeconds: 3       # Таймаут на ответ - 3 секунды
      failureThreshold: 3     # После 3 неудачных проверок подряд - контейнер неживой

Ключевое отличие от readinessProbe:

  • livenessProbe отвечает на вопрос «Жив ли контейнер?». Неудача → перезапуск.
  • readinessProbe отвечает на вопрос «Готов ли контейнер принимать трафик?». Неудача → контейнер исключается из эндпоинтов Service. Это позволяет приложению спокойно завершить запуск или временно уйти на обслуживание без перезапуска.

Почему это важно для DevOps: Пробы обеспечивают самоисцеление (self-healing) приложений в продакшене, повышая общую отказоустойчивость сервиса.