Не отключайте модуль kubernetes до тех пор, пока последний пользователь не отключится - PullRequest
0 голосов
/ 27 июня 2018

У меня есть контейнер node.js, работающий на kubernetes, который обрабатывает соединения веб-сокетов, которые обычно остаются открытыми до тех пор, пока пользователь не закроется. Теперь, когда я делаю непрерывное обновление или когда развертывание сокращается, есть ли способ остановить уничтожение модуля, пока последний пользователь не отключился?

1 Ответ

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

На данный момент Kubernetes не поддерживает изящное закрытие соединения.

terminationGracePeriodSeconds определяет таймер только до завершения Pod. Это не заботится о соединениях Pod.

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

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

PDB определяет количество реплик, которые может использовать приложение терпеть иметь, относительно того, сколько он должен иметь. За Например, развертывание, которое имеет .spec.replicas: 5, должно есть 5 стручков в любой момент времени. Если его PDB учитывает 4 в время, затем API выселения позволит добровольно нарушить один, но не две капсулы одновременно.

PDB не могут предотвратить непроизвольные сбои , но они считаются с бюджетом.

Бобы, которые удалены или недоступны из-за непрерывного обновления до приложение рассчитывает против срыва бюджета, но контроллеров (например, развертывание и набор состояний ) не ограничиваются PDB при выполнении непрерывные обновления - обработка сбоев во время обновления приложений настраивается в спецификации контроллера. (Узнайте об обновлении развертывание .)

Когда модуль выселяется с помощью API выселения, он изящно прекращено (см. terminationGracePeriodSeconds в PodSpec .)

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