Anton
ip ro & iptables -t NAT?
Anton
только зачем это нужно, заворачивать все через одну машину
Alexander
Вероятно для решения проблемы ассиметричного роутинга
Alexey
так при использовании ингресов, лодбалансеров и сервисов - входящий трафик натится на адрес хоста, к которому обращается клиент, и ответ пода натируется в сторону клиента также на адрес лодбалансера
V
Alexey
только если подключение инициализируется из кластера, то да - ip будет хоста, на котором под
Alexey
ну это решается только на сетевом уровне, гейтвей не примет от сервера пакет с левм ip, т.е. примет, но ответить не сможет
Салтыдык
я, конечно, рискну вангануть, но может достаточно заскейлить на все ноды и тогда проблема сама собой решится?
Andor
зависит от того как сеть сделана
V
V
просто есть обращение по апи к другому сервису
V
и там только один айпи разрешают
Салтыдык
а, вон оно чо
Ivan
либо нат, либо прокси
V
сейчас это решается тем что пода создается и указывается четко где ей подыматься на какой ноде
Alexey
проще тогда проксировать - какой-нибудь haproxy с разрешённым ip, и все поды подключаются уже к нему
Stanislav
Stanislav
Stanislav
Andrey
Alexey
client
\ ^
\ \
v \
node 1 <--- node 2
| ^ SNAT
| | —->
v |
endpoint
Alexey
вот каритинка для нагляднасти - как работает кластер, если у тебя больше 1 ноды
Andrew
Жесть, не поленился же стрелочки так нарисовать ))
Andor
зависит от того, как сеть реализована
Andrey
кривая копипаста у вас
Andrey
Andrey
клиент в ноду2 идет а не ноду1
Alexey
Andor
телеграм поддерживает маркдаун-стайл
Andor
через три бэктика
🦠
▲
▲ ▲
🦠
итак
🦠
и вот так
Alexey
даже если клиент подключется в ноду1, пакеты всё равно будет снат, т.к. кубер не гарантирует что под всегда будет на одной и тойже ноде, или вообще их несколько будет
Andrey
ВОПРОС
Я попробовал собрать все варианты для "выставления" сервиса наружу в случае baremetal кластера
* https://github.com/Mirantis/k8s-externalipcontroller
* https://github.com/google/metallb
* https://github.com/cloudnativelabs/kube-router
* nodePort + DNS round-robin
* https://github.com/kubernetes/contrib/tree/master/keepalived-vip
* nodePort + external LB with healthcheck
Кто-нибудь знает ещё варианты?
Nikita Dwarf
.
Gleb
Вчера такой холивар про базы на кубе был, а я не успел))
Моё никому не нужное мнение:
Запустить кластер какой-нибудь базы в кубере вполне реально, и он даже будет удовлетворительно работать.
Преимущества: ну... можно хвастаться что смог и осилил)
Недостатки: базы не знают что они в кубернетесе - всякие memory лимиты им противопоказаны.
Следовательно, один Под с базой желательно чтоб распоряжался всей нодой, на которой он задеплоин. Например у монги, кроме кэша вайрвтайгера, который можно задать параметром, есть ещё кэш, который просто занимает половину свободной памяти на ноде, я не нашёл как его можно отрегулировать. И тогда смысл занимать весь сервер с кубернетевским оверхэдом для базы?
с персистент-волюмами тоже отдельная тема, но которая имеет несколько решений, со своими преимуществами и недостатками.
Но вот сил на то, чтобы это всё отладить и предусмотреть все кейсы уйдёт в разы больше, чем просто поднять рядом снэдэлон-кластер БД и забыть про него (ну ещё монтиоринг настроить, причём клиента запустить прямо в кубере - пусть пишет тудаже, где и все метрики кубернетеса)
Ты еще учитывай что у многих базы "игоушечные"все те кто пишут о работе в продакшене не хранят там десятки тб данных. У нас есть кластер из многи шардированный на 30 нод - в каждой примерно по 5 тб пожатых данных. Если такое в кубернетисе запустить будет просто неуправляемый ад
Andrey
Etki
ееее, время мерки размерами баз данных
Alexey
да, просто одноразовая база в кубернетесе отлично, но для тестов и дев-окружений для них и кластеризация не нужна, 1 под - 1 база, никаких реплик, тут кубер отлично подходит
Stanislav
ееее, время мерки размерами баз данных
Ну тут как бы есть объективная реальность. Если база занимает почти всю ноду, оверхеды с ноды в виде оркестратора дешевле убрать, чем постоянно огребать проблемы с местом и памятью, не говоря уже о latency базы.
Etki
> c местом
мужчина, удалите сотню-другую мегабайт бинарей с ноды
Stanislav
Волшебно. Например, бинари самой БД?
Andor
WAL
Etki
ой, кажется гиперболу не распознали
Stanislav
Anton
Andrey
Logan
Andor
Andor
нельзя что ли анонсить один и тот же адрес с помощью calico с разных подов?
Andrey
что бы этот ip сделать "внешним" и постоянным
Andrey
это только для нескольких подов которые должны принимать в себя конекты, фронтенды
Andor
а почему этот ip нельзя анонсить с разных подов одновременно?
Andrey
перефразируйте) а то у меня только смешные ответы :D
Andor
давай смешные
Andrey
с подов ничего не анонсится
один ip не может быть у 2х подов
Andor
это ограничение калико?
Alexey
это ограничение OSI
Andor
я не говорил "быть в одной сети", я сказал "анонсить"
Andor
по бгп ты можешь анонсить один и тот же адрес разными маршрутами
Dmitrii
Причем тут OSI, у меня прям щас в сети 4 сервака с одним ip и одним маком, почему нельзя двум подам один ip)
Andrey
в такой схеме обычно нет необходимости в моделях кубера
Etki
вечер переставал быть томным
Andrey
и да, calico такое вам точно не организует) поднимайте quagga/bird руками и конфигурите под свою инфру
Alexey
ну и твои серверы имеют свои уникальные адреса, а общий это какой-нибудь вррп, или они просто имеют одинаковые настройки, но они не работают)
Dmitrii
Да, это виндовый nlb, но я просто придрался что такого ограничения нет)
Alexey
да тут 95% людей что-то переспрашивают - только чтобы придраться))
непонятно - из-за чего спор? Чего хотят добиться "анонсом одного адреса с разных подов"?
ну чисто теоретически это будет возможно только если поды будут на одном хосте - у разных хостов своя подсеть для подов, которыми они по бгп обмениваются.
Или вы про какие ip адерса, внешние?)) ничего не понятно
Andor
почему это будет работать только если поды на одном хосте-то?
Andor
ничего не понимаю
Andrey
смысл как раз в том что бы могли запускаться и перемещаться по разным хостам
Alexey
так у ваших подов внешние IP адреса? и они доступны извне без всяких сервисов и балансеров?
Andrey
да
Dmitry
и зачем вам прямой доступ в поды?
Dmitry
это ваще не кубовэй
Andor
а что кубовей? вообще доступ в поды не иметь?