terminationGracePeriodSeconds не - PullRequest
       3

terminationGracePeriodSeconds не

0 голосов
/ 31 мая 2018

У меня консольное приложение .NET Core, запущенное в док-контейнере, который я развертываю через Kubernetes.Когда я обновляю образ развертывания, я хотел бы некоторое время сохранять существующий модуль, не принимая новые подключения, но поддерживая существующие подключения в течение определенного периода, чтобы позволить существующим пользователям завершить работу.

Глядя на документы Kubernetes, я подумал, что добавляемое свойство - это льготный период завершения, но, похоже, оно не работает.Как только я изменяю образ, указанный в развертывании, существующий модуль удаляется - льготный период не применяется.

У кого-нибудь есть идеи относительно того, что я делаю неправильно в этом случае?Я не вижу ничего в документах.

Бит из моего файла .yml ниже:

spec: 
   terminationGracePeriodSeconds: 60
   containers:
       - name: myApplication

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

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

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

0 голосов
/ 01 июня 2018

Каждый контейнер имеет свой жизненный цикл.Вы можете управлять процессом выключения с помощью Lifecycle Hooks .

Я могу порекомендовать вам проверить, соответствует ли ловушка PreStop вашим потребностям.

Хук PreStop вызывается непосредственно перед контейнеромпрекращено.Это блокировка, то есть синхронная, поэтому она должна быть завершена до того, как будет отправлен вызов для удаления контейнера.Никакие параметры не передаются в обработчик.

Вы можете использовать сценарий оболочки или вызвать http-запрос во время запуска ловушки PreStop.

Документация Kubernetes описывает завершение pods и я нахожу это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...