У меня есть развертывание (A pods) с подключенными Service и HorizontalPodAutoscaler. Я хочу иметь возможность контролировать процесс уменьшения масштаба и выполнить некоторую очистку перед выключением модуля. Проблема в том, что очистка может занять много времени, и для ее завершения некоторые другие службы (блоки B) должны иметь доступ к модулю, пытающемуся завершить работу.
Для этого я установил для развертывания A длинное значение spec.terminationGracePeriodSeconds
. Когда Стручок получает SIGTERM, он начинает заканчивать и закрывать процесс, когда он закончен.
Из точки, в которой модуль A получает SIGTERM, он больше не получает подключения от модуля B, поскольку служба удаляет свой IP из конечной точки, что делает невозможным завершение очистки модулем A модуля.
При использовании служб ClusterIP и Headless оба работают одинаково.
Как я могу заставить службу продолжать отправлять трафик на модуль A даже после того, как он получил SIGTERM? Я не возражаю против запросов от модулей B о получении ошибок при попытке добраться до модулей А.