В моем развертывании следующее livenessProbe
определено:
apiVersion: приложения/v1
вид: развертывание
метаданные:
имя: бэкэнд-развертывание
этикетки:
имя: бэкэнд-развертывание
приложение: fc-тест
спецификация:
реплики: 1
селектор:
метки соответствия:
имя: fc-backend-стручок
приложение: fc-тест
шаблон:
метаданные:
имя: fc-backend-стручок
этикетки:
имя: fc-backend-стручок
приложение: fc-тест
спецификация:
контейнеры:
- имя: fc-backend
изображение: локальный: 5000/бэкэнд: 1.3
порты:
- контейнерПорт: 4042
среда:
- имя: NODE_ENV
значение: "целое"
живостьзонд:
исполнитель:
команда:
- RESULT=$(curl -X GET $BACKEND_SERVICE_HOST:$BACKEND_SERVICE_PORT/api/v2/makes | wc | awk '{print $3}');
- если [[ $RESULT -lt 150 ]]; затем выход 1; иначе выход 0; фи
начальныйЗадержкаСекондс: 20
порог отказа: 8
периодСекунды: 10
Поскольку иногда возникают проблемы с подключением к API, я решил настроить действие, проверяющее, получает ли весь набор запрошенных данных из API. Если это так, весь набор занимает около 400 КБ. Если нет, то возвращается только короткое сообщение и размер ответа меньше 120 байт. И тут поступает вторая команда от зонда: он проверяет, РЕЗУЛЬТАТ
переменная среды имеет низкий уровень: если это так, то это означает, что ответ не содержал всех нужных данных и завершается с кодом ошибки.
Обе команды были протестированы путем вызова из работающего контейнера, поэтому рассматриваются оба случая: а) извлечены правильные данные — выход 0 и б) получено просто сообщение об ошибке — выход 1.
Приложение, запущенное без зонда, работало корректно не менее 3-4 часов, затем появились проблемы с соединением, которые в итоге разрешились самостоятельно, но немного душили приложение, что было довольно нежелательно.
После внедрения зонда первые проблемы с нестабильностью начали возникать через несколько минут после развертывания. Каждые пару минут поды перезапускались, и количество перезапусков регулярно увеличивалось.
Что я нашел в описании развертывания:
Шаблон пода:
Ярлыки: приложение=FC-тест
имя = fc-backend-стручок
Контейнеры:
nsc-бэкенд:
Изображение: локальный: 5000/бэкенд: 1.3
Порт: 4042/TCP
Хост-порт: 0/TCP
Живость: exec [RESULT=$(curl -X GET $BACKEND_SERVICE_HOST:$BACKEND_SERVICE_PORT/api/v2/makes | wc | awk '{print $3}'); если [[ $RESULT -lt 150 ]]; затем выход 1; иначе выход 0; fi] задержка=20с тайм-аут=1с период=10с #успех=1 #неудача=8
Выглядит разумно, но при входе в работающий контейнер с исполнитель
команда, я узнал, что эхо $ РЕЗУЛЬТАТ
не выводит ничего (просто пустая строка).
Значит ли это, что только первый вызов зонда каким-то образом обработался успешно, а все последующие — нет? Как подойти к настройке зонда, чтобы он работал по назначению?