#kubernetes #kubelet #livenessprobe
#kubernetes #kubelet #livenessprobe
Вопрос:
Ниже приведена текущая конфигурация для livenessProbe:
livenessProbe:
httpGet:
path: /heartbeat
port: 8000
initialDelaySeconds: 2
timeoutSeconds: 2
periodSeconds: 8
failureThreshold: 2
Но тело ответа для URL .well-known/heartbeat
-адреса отображается status: "DOWN"
, а статус возврата http равен 200
Итак, Kubelet не перезапускает контейнер из-за состояния ответа http 200
Как убедиться, что Kubelet считывает тело ответа, а не статус возврата http? использование livenessProbe
конфигурации
Ответ №1:
Вы можете интерпретировать тело в своем зонде, используя команду оболочки, пример:
livenessProbe:
exec:
command:
- sh
- -c
- curl -s localhost | grep 'status: "UP"'
grep
возвращает ненулевое значение if status: "DOWN"
, которое приведет к сбою readinessProbe. Вы, конечно, можете настроить скрипт в соответствии с вашим фактическим телом ответа.
Ответ №2:
Как убедиться, что Kubelet считывает тело ответа, а не статус возврата http? использование конфигурации livenessProbe
Это не соответствует «контракту», предоставляемому Kubernetes. Вероятно, вам нужно реализовать пользовательскую конечную точку, которая следует контракту для проверки работоспособности HTTP, как показано ниже.
Из Определения HTTP-проверки живучести
Если обработчик возвращает код сбоя, kubelet завершает работу контейнера и перезапускает его.
Любой код, больший или равный 200 и меньший 400, указывает на успех. Любой другой код указывает на сбой.