Реализация ReadinessProbe и LivenessProbe в Kubernetes: подробное руководство

“readinessProbe или livenessProbe на контейнер или на модуль”

В Kubernetes и ReadinessProbe, и livenessProbe являются важными функциями, которые могут помочь обеспечить стабильность и доступность ваших приложений, работающих в контейнерах или модулях. В этой статье блога мы рассмотрим различные методы реализации readinessProbe и livenessProbe, а также приведем примеры кода. К концу этой статьи вы получите полное представление об этих зондах и о том, как эффективно их использовать в ваших развертываниях Kubernetes.

  1. readinessProbe для каждого контейнера:
    readinessProbe используется для определения того, готов ли контейнер обслуживать трафик. Это помогает Kubernetes определить, когда контейнер запустился и его внутреннее состояние исправно. Вот пример определения ReadinessProbe для контейнера в спецификации модуля:
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    readinessProbe:
      httpGet:
        path: /health
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10

В приведенном выше примере ReadinessProbe настроен на выполнение HTTP-запроса GET по пути «/health» контейнера с использованием порта 80. Он начнет проверять готовность контейнера после начальной задержки в 5 секунд и повторяйте проверку каждые 10 секунд.

  1. livenessProbe для каждого контейнера:
    livenessProbe используется для определения правильности работы контейнера. Если контейнер не проходит проверку livenessProbe, Kubernetes перезапускает его. Вот пример определения livenessProbe для контейнера в спецификации модуля:
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    livenessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 15
      periodSeconds: 20

В приведенном выше примере livenessProbe настроен на выполнение проверки TCP-сокета на порту 80 контейнера. Проверка работоспособности контейнера начнется после начальной задержки в 15 секунд и будет повторяться каждые 20 секунд.

  1. readinessProbe и livenessProbe для каждого модуля:
    В некоторых случаях вам может потребоваться определить readinessProbe и livenessProbe на уровне модуля, а не на уровне контейнера. Это может быть полезно, если у вас есть несколько контейнеров в модуле и вы хотите контролировать проверки готовности и работоспособности независимо для каждого контейнера. Вот пример:
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: container-1
    image: nginx
  - name: container-2
    image: busybox
  readinessProbe:
    httpGet:
      path: /health
      port: 80
    initialDelaySeconds: 5
    periodSeconds: 10
  livenessProbe:
    tcpSocket:
      port: 8080
    initialDelaySeconds: 15
    periodSeconds: 20

В приведенном выше примере ReadinessProbe определен на уровне модуля и будет применяться ко всем контейнерам внутри модуля. Аналогично, livenessProbe также определяется на уровне модуля.

Эффективно используя readinessProbe и livenessProbe, вы можете быть уверены, что ваши контейнеры или модули готовы обрабатывать трафик и автоматически восстанавливаться после сбоев. Эти проверки имеют решающее значение для поддержания надежной и высокодоступной среды Kubernetes.