Назад к вопросам
Middle
100
questionbank

Для чего используются пробы в Kubernetes?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

Существует три основных типа проб:

  • Liveness probe (Проба активности): Определяет, работает ли приложение внутри контейнера. Если liveness probe завершается с ошибкой, Kubernetes перезапускает контейнер.
  • Readiness probe (Проба готовности): Определяет, готов ли контейнер принимать трафик. Если readiness probe завершается с ошибкой, Kubernetes временно исключает под из списка доступных эндпоинтов для сервиса, направляющего к нему трафик.
  • Startup probe (Стартовая проба): Определяет, завершился ли запуск приложения в контейнере. Может быть использована для приложений, требующих длительного времени для инициализации. Если startup probe завершается успешно, дальнейшие проверки (liveness/readiness) начинаются по расписанию. Если startup probe завершается неудачей в течение заданного времени, Kubernetes убивает и перезапускает контейнер.

Пробы могут быть реализованы различными способами:

  • ExecAction: Выполняет команду внутри контейнера. Успех определяется по коду возврата (0 - успех, не 0 - ошибка).
    # Пример ExecAction для liveness probe
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    
  • HTTPGetAction: Отправляет HTTP GET запрос к указанному порту и пути контейнера. Успех определяется по коду состояния HTTP (обычно 2xx или 3xx).
    # Пример HTTPGetAction для readiness probe
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 3
    
  • TCPSocketAction: Пытается установить соединение по TCP сокетом на указанный порт контейнера. Успех определяется по успешному установленному соединению.
    # Пример TCPSocketAction для liveness probe
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20
    

Правильное использование проб критически важно для надежности и отказоустойчивости приложений в Kubernetes.