Keepalive для kubectl exec - PullRequest
       32

Keepalive для kubectl exec

1 голос
/ 22 апреля 2020

Я сталкиваюсь со специфической проблемой с kubectl exec -it ... сессиями.

Они истекают через 4-5 минут в зависимости от поставщика облачных услуг и некоторых неясных настроек, которые, несмотря на мои поиски, я не мог понять. Это известная проблема, люди, похоже, не согласны с тем, происходит ли это из-за тайм-аутов балансировки нагрузки или kubelet.

В любом случае, ни один из вариантов kubectl или kubectl exec не предлагает какого-либо keep-alive или настройка тайм-аута.

Я отследил вещи с tcpdump, и я действительно получил RESET пакетов через 4-5 минут.

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

Поэтому я ищу способ легко отправлять пакеты поддержки активности TCP / UDP из сеанса kubectl обратно на вызывающий компьютер, каждые минуты или около того (и затем сами рассчитайте время по своему усмотрению).

Как мне этого добиться?

РЕДАКТИРОВАТЬ: еще один способ задать вопрос: - Как я могу найти IP / порт обратно к компьютер, который открыл сеанс kubectl exec?

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Я пытался воспроизвести вашу проблему на GCP с различными конфигурациями и методами, но мне не удалось решить ту же проблему.

К сожалению, нет простого ответа на этот вопрос. Многие реализации Kubernetes полагаются на туннель S SH между мастером и узлами, так что туннель также может превышать время ожидания в зависимости от того, как он настроен. В GKE он имеет туннель s sh в кластерах publi c и использует пиринг VP C в частных кластерах, но другие установки могут иметь другие методы, поэтому нет простого решения.

Однако в качестве обходного пути вы можете просто оставить пинг на заднем плане, чтобы избежать простоя. Таким образом, это не должно больше вас задерживать.

Пожалуйста, дайте мне знать, если это помогло.

0 голосов
/ 22 апреля 2020

Если вы выбираете tcp соединение для сервиса kubectl. У TCP есть один механизм поддержки. Для рабочей станции Linux время поддержания активности по умолчанию составляет 7200 с.

sysctl -a | grep keep
net.ipv4.tcp_keepalive_time = 7200

Вы можете изменить время сохранения активности на 200 с в /etc/sysctl.conf и 'sysclt -p', чтобы сделать его эффективным.

cat /etc/sysctl.conf | grep keep
net.ipv4.tcp_keepalive_time=200

Примечание. Это изменение относится к системному уровню. После изменения этого параметра на все TCP-подключения будет влиять

.
...