Kubernetes не создавал heapdump при перезапуске модуля

У меня проблема. В файле манифеста есть опция preStop, и произошло OOMKilled. pod был перезапущен, но heapdump не создается.

жизненный цикл: до остановки: исполнитель: команда: ["/tmp/preStop.sh"]

heapdump работает, когда я вручную завершаю работу модуля.

поэтому мне интересно, если pod перезапущен, preStop не должен выполняться?

Я думал, что когда модуль перезапускается, сначала отправьте TermSignal в приложение и выполните preStop, а затем завершите работу и снова запустите модуль. Я ошибаюсь?

Спасибо С наилучшими пожеланиями.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
1
0
111
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

при перезапуске модуля сначала отправьте TermSignal в приложение и выполнить preStop, завершить и снова запустить pod. Я ошибаюсь?

Согласно официальной документации

PreStop хуки не выполняются асинхронно от сигнала к остановить Контейнер; хук должен завершить свое выполнение до того, как Сигнал TERM может быть отправлен.

Если во время выполнения зависает хук PreStop, фаза пода будет Завершение и оставайтесь там до тех пор, пока Pod не будет убит после истечения срока действия terminationGracePeriodSeconds. Этот льготный период распространяется на общее время, которое требуется как для выполнения хука PreStop, так и для Контейнер остановить нормально.

Надеюсь, вышеизложенная информация окажется для вас полезной.

@ user2286858 ваша проблема решена? дайте мне знать, если вам нужна дополнительная помощь.

Kiran Kotturi 04.04.2023 08:09
Ответ принят как подходящий

Это известное поведение модулей OOMKilled, когда они не вызывают хук preStop.

Как объяснил Chanpreet08 (пользователь GitHub)

K8 подает сигнал SIGTERM, если хочет завершить под, но в случае OOM, он передает SIGKILL модулю, который мгновенно уничтожает основной процесс и, наконец, завершает под, не дожидаясь предварительной остановки выполнить. Таким образом, в случае OOM предварительная остановка не будет выполняться.

https://github.com/kubernetes/kubernetes/issues/93818

Вау спасибо большое! Это именно то, что я ищу. ()

user2286858 06.04.2023 11:50

Другие вопросы по теме