Dockerfile не задано иное. Так вот у меня образ собран на базовом образе php-fpm в котором этот сигнал переопределён на SIGQUIT для корректного завершения воркеров. Но у меня на этом же образе крутятся деплойменты с cli командами php и там такой сигнал не корректно работает. Как я могу на уровне деплоймента определить что завершать надо именно SIGTERM, а не то что задано в Dockerfile? Неужели прийдётся билдить 2 образа?)
забилдь заново
неужели никак нельзя переопределить?)
lifecycle: preStop: exec: command: ["kill", "-SIGTERM", "1"]
ну это как бы как раз делает то что мне надо, и не надо иметь 2 образа которые блин ничем не отличаются кроме этого
сигналы посылает не сам куб, а container runtime, которому просто посылается StopContainerRequest в котором есть только id контейнера и таймаут. Container runtime не видит манифест, поэтому способа задать там сигнал нет.
то есть либо берётся дефолтный, либо тот что задан в самом контейнере?
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
зависит от container runtime, но думаю все поддерживают кастомный сигнал из образа
так что preStop - пожалуй самые аккуратные костыли чтобы послать другой тип сигнала
да, я так и хочу, а вот прогер с которым я работаю упёрся и думает что он может просто перезагрузиться от этого lifecycle: preStop: exec: command: ["kill", "-SIGTERM", "1"] Типа престоп шлёт сигнал и он успевает перезапустить до терминатинг в момент которого шлёт сигнал сам кубер
.
Обсуждают сегодня