Команда LivenessProbe для фонового процесса
Что такое подходящий Kubernetes
livenessProbe
команда для фонового процесса?
У нас есть процесс NodeJS, который потребляет сообщения из очереди SQS. Поскольку это фоновая работа, мы не предоставляем никаких конечных точек HTTP, и поэтому команда liveness кажется более подходящим способом для проверки живучести. Как бы выглядела "достаточно хорошая" настройка команды, которая на самом деле проверяет, что процесс жив и работает правильно? Должен ли процесс NodeJS касаться файла, чтобы обновить время его редактирования, и проверка живучести подтвердит это? Примеры, которые я видел в Интернете, кажутся не связанными с реальным процессом, например, они проверяют, существует ли файл.
1 ответ
Вы можете использовать живость, используя
exec
команда.
Вот пример:
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
Чтобы выполнить зонд, кубелет выполняет команду cat /tmp/ Healthy в целевом контейнере. Если команда выполнена успешно, она возвращает 0, и кубелет считает, что контейнер жив и исправен. Если команда возвращает ненулевое значение, кубелет убивает контейнер и перезапускает его.