Logan
а вот с диапазонами балансировщики, вроде как, пока не умеют
Ivan
а нужно трекать весь диапазон, один порт не вариант? С одним можно было бы как-то поиграть, ИМХО
Тогда балансировщику надо будет как то дополнительно отличать на какой сервер от какого клиента запрос посылать
Ivan
Вся проблема текущих вариантов, что они заточены под стейтлес
Sergey
Да в ямле пропишите любой свободный из диапазона
Maksim
Каждый сервис типа NodePort это конкретный порт, который днатится также как и Cluster IP в ряд ip endpoint (которыми являются поды)
Ivan
Сервисы не пренадлежат нодам
это понятно, сервис и нужен чтобы скрыть то что в кластере
Maksim
При этом все Ноды открывают этот порт
Maksim
Сервис нужен что бы отвязаться от динамического IP пода
Maksim
и что бы сделать балансировку если подов больше одного
Ivan
Каждый сервис типа NodePort это конкретный порт, который днатится также как и Cluster IP в ряд ip endpoint (которыми являются поды)
я вот не понимаю, за этим конкретным портом, может скрываться >1 пода? если я буду оперировать nodeip:port, то это мне, может, и подойдет, если на ноде один такой под крутится, но если мне нужно несколько подов на ноду, то нужно тогда делать несколько NodePort, что опять же предполагает, что я это делаю ручками и гранулярность подов не будет регулироваться автоматически
Maksim
Ммм Ты совсем запустался и не туда смотришь
Maksim
Сервис объеденяет поды
Maksim
например у меня 10 Nginx
Maksim
и один сервис на все этои 10 Nginx
Maksim
Сервис выполняет DNAT ClusterIP:80 порта на один из 10 Nginx
Maksim
Если я сделаю Тип срвиса NodePort
kås
На каждом сервисе разные внешний ip как ты и хочешь
Maksim
ТО NodeIP:NodePOrt будет выполнять DNAT на 1 из 10 подов
Maksim
ПРи этом все 10 подов это копии одного и того же аппликатива
Maksim
по сути сервис = балансировщки
Maksim
Разберитесь в примитивах.....а потом стройкте Садомы и Гаморы
Ivan
по сути сервис = балансировщки
Мне не нужна балансировка. Мне нужен роутинг. Мне нужен постоянный маршрут.
Maksim
Куда?
Ivan
До конкретного пода
Ivan
нужно чтобы юзер имел возможность общаться с конкретным подом в рамказ сессии
Maksim
У тебя не будет отказоустойчивости?
Maksim
ТО есть ты даёшб 90% Работы в лучшем случае а в январе только 50%
Maksim
В рамках сессии так оно и есть
Ivan
речь идеть об игровых серверах, если сервер упал, ты не сможешь перебросить игру на другой, в этом вся разница со всякими вебами
kås
Мне не нужна балансировка. Мне нужен роутинг. Мне нужен постоянный маршрут.
Под должен быть типа пет? Иначе они могут кубером убиваться как ему угодно
Maksim
Нафига тогда тебе кубер?
Ivan
вот примерно та же задача https://stackoverflow.com/questions/45877455/kubernetes-hosting-game-server-with-udp-how-to-connect-route-traffic-to-pod
Maksim
Делай каждый под HostNetwork: True
Maksim
и ставь AntiAffinaty
Maksim
и всё Под будет цепляться на сеть Ноды напрямую...и выплёвывать туда все свои порты
Ivan
См pet
не знал про это, спасибо, почитаю
Maksim
у них да же ip своих не будет, то же самое что —net=host у контейнера
Maksim
См pet
не кактит
Maksim
Либо ds либо deploy с AntiAffinaty и hostnetwork
Maksim
я бы так делал
Ivan
у них да же ip своих не будет, то же самое что —net=host у контейнера
ну сейчас я делаю —net=host и руками ставлю public ip для ноды, но руками для каждой ноды его выставлять как то костыльно
Etki
я бы все-таки попробовал вариант с кастомным сервисом-проксей
Maksim
Дык можно же деплой сказать hostNetwork
Ivan
Азур по ходу не умеет генерить public ip кроме как через LoadBalancer
Etki
Не нужно ничего выносить в хост нетворк без терпкой надобности
Maksim
ты в Азуре хостишься что ли?
Ivan
да
Maksim
Тогда усё понятно)
Maksim
Таам же сервера напряму не выходят, там всё хитрее
Etki
Прокся как минимум позволит всякие штуки делать типа вывода плавного вывода конкретного инстанса из обслуживания, плюс позволит держать всякие штуки типа порта для дебаггера постоянно поднятыми. Да и вообще это не настолько костыльно.
Etki
И дальше чего?
Maksim
И дальше чего?
Смысл делать проксю? Если в его приложении плавный вывод не предусмотрен архитектурой?
Ivan
под плавным выводом имеется ввиду роллинг апдейт? или что?
Maksim
Кстати всякие там vxlan и тюп дают не хилую задержку на нагрузке
Ivan
тут есть еще одна задача для меня нерешенная, что нужно при апдейте серверов не отрубать тачки, пока матч не завершится (все юзеры не задисконнектятся)
Maksim
Так что HostNetwork это его вариант
Etki
под плавным выводом имеется ввиду роллинг апдейт? или что?
у вас запрещен роллинг апдейт из-за специфики. вам сначала нужно запретить пользователям подключаться к инстансу, затем дождаться, пока все выйдут, и только тогда прибивать.
Ivan
300 ms не хотите?)
серьезно? тогда прокся точно не вариант
Etki
300 ms не хотите?)
я не хочу слышать голословные заявления
Maksim
Хотя он в этом чате раза 4 был сналча на английском потом в переводе на хабре
Maksim
https://habrahabr.ru/company/flant/blog/332432/
Etki
если ваш пруф - кривые руки админа, то можете не приносить. в вебе половина вего живет на кривой связке нджинкс-апач-модпхп и несмотря на весь этот срам легко сервит запросы за меньше сотни мс
Maksim
Maksim
Мой пруф это сеть докера)
Etki
все так. это только кастомными решениями делать?
есть вариант поднимать целиком новый деплоймент, ждать, пока трафик перельется, прибивать целиком старый
Ivan
есть вариант поднимать целиком новый деплоймент, ждать, пока трафик перельется, прибивать целиком старый
да, так и предполагал делать, но в любом случае нужно свой сервис для этого поднимать, который будет это мониторить.
Etki
конкретно этот вариант можно хоть вручную запускать
Ivan
ну вручную это как-то не очень :), но да
Maksim
http://machinezone.github.io/research/networking-solutions-for-kubernetes/
Maksim
Больше цифрами особо никто не бросался
Maksim
Но Сеть это самое узкое место докера как технологии