Я использую самый простой докер:
FROM ubuntu
COPY script.sh /script.sh
CMD /script.sh
Где все, что делает скрипт, это:
#!/bin/bash
function sigterm() {
echo "Got SIGTERM"
exit
}
trap sigterm SIGTERM
i=1
while true; do
echo "$(date +%H:%M:%S) | $((i++)) | $HOSTNAME"
sleep 1
done
Я запускаю этот контейнер в Minikube, но не могу заставить его перехватывать сигналы SIGTERM от kubernetes.
Я попытался удалить модуль/развертывание или масштабировать его вверх и вниз. Ни в коем случае он не получил SIGTERM перед удалением. Он уважает terminationGracePeriodSeconds
, но, похоже, не запускает команду preStop
и не отправляет SIGTERM перед уничтожением модуля.
Это из-за использования minikube? или я делаю что-то еще не так?
(развертывание не является частью службы, это просто развертывание) (SSH в модуль и вручную kill
работает, как и ожидалось)