пробовали ли вы отключить зонды готовности и живучести? - Ник
После удаления зондов готовности и живучести все работает. Похоже, для бега нужно дополнительное время. - mehmet
Это довольно распространенная ситуация, когда по какой-то причине для получения результата зондом требуется много времени.
Иногда приходится иметь дело с устаревшими приложениями, которые могут требовать дополнительных время запуска при их первой инициализации. В таких случаях может быть сложно настроить параметры проверки живучести без ущерба для быстрого ответа на взаимоблокировки, которые послужили причиной такой проверки.
Уловка состоит в том, чтобы настроить запуск проверки с той же командой, HTTP или TCP check с failureThreshold * periodSeconds
, достаточно длинным, чтобы охватить время запуска в худшем случае.
livenessProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 1
periodSeconds: 10
Probes
имеют ряд полей, которые вы можете использовать для более точного управления поведением проверок работоспособности и готовности:
initialDelaySeconds
: количество секунд после запуска контейнера перед запуском проверки работоспособности или готовности. По умолчанию 0 секунд. Минимальное значение - 0.
periodSeconds
: Как часто (в секундах) выполнять проверку. По умолчанию 10 секунд. Минимальное значение - 1.
Глядя на ваш файл YAML, я бы начал с изменений на readiness probe
first
readinessProbe:
httpGet:
path: /management/health
initialDelaySeconds: 20
periodSeconds: 15
failureThreshold: 6
livenessProbe:
httpGet:
path: /management/health
initialDelaySeconds: 120
Это означает, что после 20+ (6 * 15) = 110 se c зонд готовности выйдет из строя. В то же время задержка датчика liveness
установлена на 120 сек c. Я бы увеличил задержку для зонда readiness
до того же значения, что и livenes
, чтобы предотвратить ситуацию, когда трафик c отправляется в Pod, который не полностью запущен и работает.
Ниже приведена некоторая информация из официальной документации Kubernetes по зондам:
Проверка живучести
Многие приложения, работающие в течение длительного времени, в конечном итоге переходят в неработающее состояние. , и не может восстановиться, кроме как после перезапуска. Kubernetes предоставляет зонды живучести для обнаружения и устранения таких ситуаций.
Зонд готовности
Иногда приложения временно не могут обслуживать трафик c. Например, приложению может потребоваться загрузить большие данные или файлы конфигурации во время запуска или зависеть от внешних служб после запуска. В таких случаях вы не хотите убивать приложение, но и не хотите отправлять ему запросы. Kubernetes предоставляет зонды готовности для обнаружения и смягчения этих ситуаций. Pod с контейнерами, сообщающими о том, что они не готовы, не получает трафик c через Kubernetes Services.
Примечание. Зонды готовности работают с контейнером в течение всего его жизненного цикла.
Зонды готовности конфигурируются аналогично зондам живучести. Единственное отличие состоит в том, что вы используете поле readinessProbe
вместо поля livenessProbe
.
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
Надеюсь, что это поможет.