“readinessProbe или livenessProbe на контейнер или на модуль”
В Kubernetes и ReadinessProbe, и livenessProbe являются важными функциями, которые могут помочь обеспечить стабильность и доступность ваших приложений, работающих в контейнерах или модулях. В этой статье блога мы рассмотрим различные методы реализации readinessProbe и livenessProbe, а также приведем примеры кода. К концу этой статьи вы получите полное представление об этих зондах и о том, как эффективно их использовать в ваших развертываниях Kubernetes.
- 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 секунд.
- 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 секунд.
- 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.