← Назад к вопросам

Какие знаешь probe?

1.0 Junior🔥 241 комментариев
#Kubernetes

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Типы и использование Health Check Probe в Kubernetes

В Kubernetes для контроля работоспособности приложений используются три основных типа probe (проб, проверок здоровья). Это критически важный механизм для обеспечения высокой доступности и автоматического восстановления контейнеров.

Основные типы Probe

Liveness Probe

Цель: Определить, жив ли контейнер. Если проверка не проходит, Kubernetes убивает (terminates) контейнер и, согласно политике рестарта (restartPolicy), запускает новый. Сценарий использования: Приложение зависло, находится в бесконечном цикле и не может обслуживать запросы, хотя процесс работает. Liveness probe исправляет это, перезапуская контейнер.

Пример в манифесте Pod:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-example
spec:
  containers:
  - name: web
    image: nginx
    livenessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: 30  # Ждём 30 секунд перед первой проверкой
      periodSeconds: 10        # Проверяем каждые 10 секунд

Readiness Probe

Цель: Определить, готов ли контейнер принимать трафик. Если проверка не проходит, Kubernetes удаляет Pod из списка эндпоинтов (endpoints) Service, тем самым не отправляя ему новые запросы. Сценарий использования: Приложение запустилось, но временно не может обслуживать запросы (например, загружает большой объем данных в память, конфигурируется). Readiness probe позволяет избежать отправки трафика на неготовый контейнер.

Пример конфигурации:

readinessProbe:
  exec:
    command:
      - cat
      - /app/ready
  initialDelaySeconds: 5
  periodSeconds: 5

Startup Probe

Цель: Определить, успешно ли стартовало приложение. Используется для медленно стартующих контейнеров. Пока startup probe не пройдена, liveness и readiness probes не активируются. Сценарий использования: Старые приложения или системы с долгой инициализацией (например, Java приложения с "тяжелым" стартом). Startup probe предотвращает ложные убийства контейнера (liveness) или неправильное удаление из сервиса (readiness) во время старта.

Пример:

startupProbe:
  httpGet:
    path: /initialized
    port: 8080
  failureThreshold: 30  # Даём много попыток (30)
  periodSeconds: 10     # Проверяем каждые 10 секунд

Методы реализации Probe

Kubernetes поддерживает несколько способов выполнения проверок:

  • HTTP GET: Проверка через HTTP запрос к указанному пути и порту. Успех — код ответа между 200 и 399.
  • Exec: Выполнение команды внутри контейнера. Успех — код возврата 0.
  • TCP Socket: Попытка открыть TCP соединение на указанный порт. Успех — соединение установлено.

Ключевые параметры настройки

Каждая probe имеет набор параметров для тонкой настройки поведения:

  • initialDelaySeconds: Задержка перед первой проверкой после старта контейнера.
  • periodSeconds: Интервал между регулярными проверками.
  • timeoutSeconds: Время, после которого проверка считается неудачной, если ответ не получен.
  • successThreshold: Минимальное количество успешных проверок для перехода в состояние "Успех" (особенно важно после неудачи).
  • failureThreshold: Количество последовательных неудачных проверок для перехода в состояние "Неудача".

Практические рекомендации и вывод

Liveness и readiness probes — фундамент надежного приложения в Kubernetes. Их правильное использование:

  • Избегает ложных перезапусков: Установка достаточного initialDelaySeconds и failureThreshold.
  • Обеспечивает качественное обслуживание трафика: Readiness probe защищает клиентов от временных проблем в контейнере.
  • Позволяет работать с legacy приложениями: Startup probe дает время на инициализацию.

Не рекомендуется использовать для liveness probe тот же эндпоинт, что и для основного API, если проверка ресурсоемка. Создавайте легкий, независимый эндпоинт /health или /ready. Probe — это не мониторинг, а механизм жизненного цикла контейнера внутри кластера. Для глубокого мониторинга состояния приложения следует использовать отдельные инструменты (Prometheus, метрики приложения).

Какие знаешь probe? | PrepBro