Gymterview
middle

Что такое Liveness, Readiness и Startup Probes?

Probes (пробы) — механизм проверки состояния контейнера в Kubernetes. Liveness определяет, жив ли контейнер, Readiness — готов ли принимать трафик, Startup — завершился ли запуск.

Сравнение Probes

Probe Что проверяет Действие при провале Когда использовать
Liveness Жив ли контейнер Перезапуск контейнера Deadlock’и, зависания, утечки памяти
Readiness Готов ли принимать трафик Убрать из эндпоинтов Service (без перезапуска) Длительный прогрев, временные перегрузки
Startup Завершился ли запуск Перезапуск (блокирует Liveness/Readiness) Приложения с долгим стартом (Spring Boot)

Типы проверок

Тип Описание
httpGet HTTP GET-запрос к эндпоинту. Успех: код 200-399
tcpSocket Проверка TCP-соединения к порту
exec Выполнение команды внутри контейнера. Успех: exit code 0
grpc gRPC Health Check

Пример для Spring Boot приложения

Spring Boot Actuator предоставляет готовые эндпоинты для проб:

Deployment с тремя Probes
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-spring-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-spring-app
  template:
    metadata:
      labels:
        app: my-spring-app
    spec:
      containers:
        - name: app
          image: my-registry/my-spring-app:1.0.0
          ports:
            - containerPort: 8080
          startupProbe:
            httpGet:
              path: /actuator/health/liveness
              port: 8080
            initialDelaySeconds: 10
            periodSeconds: 5
            failureThreshold: 30       # 10 + 30*5 = до 160 сек на старт
          livenessProbe:
            httpGet:
              path: /actuator/health/liveness
              port: 8080
            periodSeconds: 10
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /actuator/health/readiness
              port: 8080
            periodSeconds: 5
            failureThreshold: 3

Настройка Spring Boot application.yml:

Пример
management:
  endpoints:
    web:
      exposure:
        include: health,info,prometheus
  endpoint:
    health:
      probes:
        enabled: true
      group:
        liveness:
          include: livenessState
        readiness:
          include: readinessState,db

Параметры проб

Параметр Описание По умолчанию
initialDelaySeconds Задержка перед первой проверкой 0
periodSeconds Интервал между проверками 10
timeoutSeconds Тайм-аут одной проверки 1
failureThreshold Количество неудачных проверок для признания провала 3
successThreshold Количество успешных проверок для признания успеха 1

На собеседовании: нужно чётко разделять Liveness (перезапускает), Readiness (убирает из балансировки), Startup (блокирует остальные пробы на время старта). Частая ошибка — не использовать Startup Probe для Spring Boot и получать убийство контейнера Liveness Probe во время старта.