𝚔𝚟𝚊𝚙𝚜
Не понял, что ты хочешьсделать?
смотри, есть 10 нод,
- я создаю deployment, в котором описано приложение ABC и 3 реплики для него
- я создаю сервис с ExternalIP который редиректит весь трафик на эти три контейнера, так?
- теперь я хочу создать еще один deployment ABC-IP, который запустится на одной из тех нод, на который работает приложение ABC
Maksim
пишишт лабел на три ноды kubectl lavbel no <имя ноды> ABC=true
Maksim
и пишишь в деплой nodeSelector:
abc: "true"
𝚔𝚟𝚊𝚙𝚜
Ты просто мало курил)
возможно, но с каждым разом все интересней и интересней, мне кажется я уже крепко подсел на эту дурь :)
Maksim
тогда шелдулер будет запускать поды только на нода с лейблом abc: true
Maksim
http://blog.kubernetes.io/2017/03/advanced-scheduling-in-kubernetes.html
𝚔𝚟𝚊𝚙𝚜
ок, а возможно label'ы назначать динамически? - мол запустилось приложение ABC, и ноде присвоился label run-app-ABC ?
𝚔𝚟𝚊𝚙𝚜
после этого использовать его для деплоя следующего приложения
Maksim
Делай запрос в API через serviceaccount
𝚔𝚟𝚊𝚙𝚜
или грубо говоря сказать:
"запустись там же, где и ABC"
Maksim
То есть под запускается, получает данные о ноде на которой запущен и делает запрос в api сервер с постановкой лейбла.
Maksim
Самое главное отрабоать логику, что бы эти лейблы чистить
Maksim
-)
Anonymous
чем вы проводите нагрузочное тестирование на ваш кластер?
Anonymous
хайлоада нить иди
Etki
ab, wrk, jmeter, gatling, blazemeter taurus, yandex.tank
𝚔𝚟𝚊𝚙𝚜
да, чет не нравится мне это решение, ес честно
Maksim
почитай статейку выше) Должна помочь. У тебя как раз нужная задачка
Etki
locust.io
Maksim
𝚔𝚟𝚊𝚙𝚜
ок, сча займусь
Maksim
так вот сначала yandex.cocain потом yandex.tank -)
Etki
реально из вышеописанного только ab и jmeter постоянно пользую. гатлинг очень хорош, но не хватает декларативного описания сценариев
Maksim
И никак иначе
Anonymous
https://artillery.io/
вот еще нашел
G72K
𝚔𝚟𝚊𝚙𝚜
он самый, спасибо
G72K
но учтите, что ABC-IP под не переедет сам, когда ABC разбегуться на другие ноды со временем
𝚔𝚟𝚊𝚙𝚜
а вот это плохо.
Но что если ABC и ABC-IP будет описан в одном yaml и будут апдейтиться одновременно?
𝚔𝚟𝚊𝚙𝚜
или это не имеет значения?
G72K
поможет, но не гарантирует
G72K
в теории ABC-IP может прилететь к поду ABC, который вот вот будет убит :)
𝚔𝚟𝚊𝚙𝚜
а kubernetes сам двигает podы, если нода не умерла?
G72K
может вам ABC-IP запустить, как еще один контейнер в ABC?
G72K
ну они пытаются сделать preemtion,т.е. будет уметь вскоре, пока вроде нет. но поды двигаются при передеплое же
G72K
если вы гарантируете , что сначала полностью деплоите ABC , потом когда оно все устоялось, запускаете ABC-IP, то ОК. но ведь тогда будет период, где ABC работает без ABC-ip
G72K
незнаю насколько вам это важно
G72K
ну и что
G72K
а нет
𝚔𝚟𝚊𝚙𝚜
G72K
ха, тогда вам все равно
G72K
пускайте его где угодно
G72K
хоть отдельно от ABC
G72K
этот ExternalIP он как NodePort , трафик отправится в поды, даже если они на других нодах
Maksim
там не ExternalIP
𝚔𝚟𝚊𝚙𝚜
да, потому я и думаю что podAffinity хорошо здесь подойдет
𝚔𝚟𝚊𝚙𝚜
не, там как раз ExternalIP
Maksim
ты же его через ip addr вешаешь на интерфейс) Это уже не extrnalIP
Maksim
это вариант совсем из другой оперы
G72K
𝚔𝚟𝚊𝚙𝚜
ну у сервис создается с ExternalIP, а контейнер этот ExternalIP на интерфейс одной из нод ассигнит
G72K
𝚔𝚟𝚊𝚙𝚜
в целом да, но как бы не получилось так, что одна из нод является роутером для всех остальных, и все дико тупит из-за этого
𝚔𝚟𝚊𝚙𝚜
или kubernetes умеет еще net load учитывать?
𝚔𝚟𝚊𝚙𝚜
и опять же, даже если и умеет, он никак не сможет связать что внешний трафик из-за этого dummy контейнера возникает
𝚔𝚟𝚊𝚙𝚜
лучше гарантировать что все точки входа будут размазаны вместе с основными pod (которые делают основную работу)
𝚔𝚟𝚊𝚙𝚜
еще вариант просто размазать все ABC-IP максимально друг от друга, но опять же это не так то и просто, потому что количества нод может быть меньше чем таких контейнеров
𝚔𝚟𝚊𝚙𝚜
а не, там preferredDuringSchedulingIgnoredDuringExecution есть, где можно веса выставлять, ух ты
Maksim
мне прсто да же любопытно, сколько ты хочешь пустит трафика, что бы iptables загнулось
𝚔𝚟𝚊𝚙𝚜
ну, у меня очень много нод, и я хочу размазать трафик равномерно между ними
G72K
сделайте несколько externalIP
𝚔𝚟𝚊𝚙𝚜
externalIP у меня будет тоже много
𝚔𝚟𝚊𝚙𝚜
их то и хочу размазать по нодам
Anonymous
немного нубский вопрос
http://blog.lwolf.org/post/going-open-source-in-monitoring-part-i-deploying-prometheus-and-grafana-to-kubernetes/
у меня прометей крутится как внутренний сервис и могу к нему подключаться напрямую через внутренний адрес, но я бы хотел, чтобы https://prometheus.example.com редиректил меня на внутренний сервис, если я подключен через впн и на 403, если стучусь просто из инета
такое возможно вообще?
𝚔𝚟𝚊𝚙𝚜
у нод есть свой IP, который в случае если нода упадет потеряется тоже
Maksim
дык у тебя же ряд IP будет работать
𝚔𝚟𝚊𝚙𝚜
в случае если IP назначается контейнером, он передет на другую ноду
Maksim
или все твои 2-3-5 ip должным быть 100% uptime
Maksim
,,
Maksim
??
𝚔𝚟𝚊𝚙𝚜
ага, в том то и фишка
𝚔𝚟𝚊𝚙𝚜
и внешний балансер получается не нужен
Maksim
А где вообще балансировка идёт?
Maksim
если у тебя ряд ip смотрит наружу, то где-то должна быть балансировка, или ты хочешь это решать чисто управленчиским ресурсом? (типо отдел А работает по ip А, отдел Б по ip Б)??
Maksim
как то же мир доллжен узнать, что сервис работает по нескольких ip
𝚔𝚟𝚊𝚙𝚜
Ну допустим есть 20 нод, у каждой есть два интерфейса, внешний (смотрит сразу наружу) и внутренний,
на внутреннем у каждой ноды свой ip-адрес: 192.168.100.{1..20}
Я хочу создавать сервис в этом кластере и вешать на внешний IP.
𝚔𝚟𝚊𝚙𝚜
много сервисов
𝚔𝚟𝚊𝚙𝚜
то есть что бы ExternalIP не был привязан к какой-то конкретной ноде, а был привязан к конкретному сервису