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

В какой момент проходит проверка Pods

2.0 Middle🔥 161 комментариев
#Kubernetes

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

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

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

Проверка Pods (Pod Lifecycle и Probes)

В Kubernetes проверка Pods (health checks) проходит на нескольких этапах жизненного цикла, но ключевой механизм — это Probes (зонды), которые kubelet выполняет периодически на протяжении всей жизни Pod. Основные моменты проверки:

1. Инициализация Pod (Init Containers)

Перед запуском основных контейнеров выполняются init-контейнеры. Их успешное завершение — это первая проверка, необходимая для перехода к следующей фазе.

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done']
  containers:
  - name: myapp-container
    image: nginx:alpine

2. Запуск контейнера (Startup Probe)

Проверка, что контейнер стартовал. Особенно важно для legacy-приложений с долгим стартом. Если startupProbe указан, другие пробы отключаются до его успеха.

startupProbe:
  httpGet:
    path: /health-startup
    port: 8080
  failureThreshold: 30  # Пробуем 30 раз
  periodSeconds: 10     # Каждые 10 секунд

3. Готовность (Readiness Probe)

Непрерывная проверка после старта, определяет, готов ли контейнер принимать трафик. Неудачный readinessProbe удаляет Pod из эндпоинтов Service.

readinessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5

4. Живучесть (Liveness Probe)

Постоянный мониторинг работоспособности контейнера. При неудаче kubelet перезапускает контейнер (restart policy).

livenessProbe:
  httpGet:
    path: /health
    port: 8080
    httpHeaders:
    - name: Custom-Header
      value: Awesome
  initialDelaySeconds: 3
  periodSeconds: 3

Критические моменты времени проверок

  • Initial Delay: Задержка перед первой проверкой (чтобы приложение успело инициализироваться)
  • Period: Интервал между регулярными проверками
  • Timeout: Время ожидания ответа
  • Success/Failure Threshold: Количество успешных/неудачных попыток для определения результата

Что происходит при сбоях проверок

  • Readiness Probe fails: Pod помечается как NotReady, удаляется из балансировщика нагрузки
  • Liveness Probe fails: Контейнер перезапускается (согласно политике restartPolicy)
  • Startup Probe fails: Контейнер убивается и перезапускается

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

  1. Всегда используйте readinessProbe для stateful-сервисов
  2. Liveness probe должен проверять критическую функциональность, а не зависимость
  3. Настройте правильные таймауты в соответствии с SLA приложения
  4. Мониторинг событий для анализа сбоев:
kubectl describe pod <pod-name>
kubectl get events --watch

Пример комплексной конфигурации

apiVersion: v1
kind: Pod
metadata:
  name: web-app
spec:
  containers:
  - name: app
    image: myapp:v2
    ports:
    - containerPort: 8080
    startupProbe:
      httpGet:
        path: /startup
        port: 8080
      failureThreshold: 30
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
    livenessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20
      failureThreshold: 3

Проверки Pods — фундаментальный механизм самоисцеления в Kubernetes, обеспечивающий отказоустойчивость и стабильность работы приложений в production-средах. Правильная настройка probes напрямую влияет на доступность сервиса и эффективность использования ресурсов кластера.

В какой момент проходит проверка Pods | PrepBro