Size: a a a

2019 December 01

MF

Maxim Filatov in K8Spb
зато не надо париться с антиаффинити, если они хостпапки монтируют, например
источник

MF

Maxim Filatov in K8Spb
$ kubectl get ds -n ingress nginx-nginx-ingress-controller -o jsonpath='{.spec.template.spec.nodeSelector}'

map[ingress/role:loadbalancer]
источник

MF

Maxim Filatov in K8Spb
например
источник

AS

Alex Savchenko in K8Spb
Конечно умеют, никто не спорит.
источник

MF

Maxim Filatov in K8Spb
я к тому, что если цель - разнести поды строго на все нужные ноды, то демонсеты всё ещё удобнее :)
источник

MF

Maxim Filatov in K8Spb
и главное - не надо постоянно помнить о том, что при изменении состава "нужных" нод, надо ещё заморачиваться с изменением количества реплик у деплоймента/стейтфулсета
источник

MF

Maxim Filatov in K8Spb
нужный лейбл на ноду добавил/убрал, а дальше шедулер всё сделает сам
источник

AS

Alexey Shatunov in K8Spb
я хочу демонсеты и аффинити
источник

AS

Alexey Shatunov in K8Spb
да, я знаю что хочу странного... но чорт-побери-каналья,  хочу и все тут!
источник

AS

Alexey Shatunov in K8Spb
Maxim Filatov
и главное - не надо постоянно помнить о том, что при изменении состава "нужных" нод, надо ещё заморачиваться с изменением количества реплик у деплоймента/стейтфулсета
не хочу об этом помить, хочу чтобы кубер помнил.. я ему сказал: уважаемый, пожалуйста обеспечте HA деплоймента распределив все равномерно по нодам и направив траффик
источник

AS

Alexey Shatunov in K8Spb
демонсеты штука классная, но ни разу не про балансировку
источник

AS

Alex Savchenko in K8Spb
демонсеты не про HA деплоймент с равномерной балансировкой по нодам, а скорее об запуске одного пода на всех или наборе нод. Например логгер или какой-то мониторинг агент, который надо чтоб ранился на всех нодах. А в данном контексте это должен быть обычный деплоймент даже без каких-то особых ухищрений. Планировщик по умолчанию и так попытается разнести поды по разным нодам, учесть загрузку и тд.  А если уже сильно надо гарантировать что поды будут жить на разных нодах и никак иначе,  то тут нужно podAntiAffinity по topology=hostname:
spec:
     affinity:
       podAntiAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
         - labelSelector:
             matchExpressions:
             - key: app
               operator: In
               values:
               - myapp
           topologyKey: "kubernetes.io/hostname"
...

При чем, если кол-во теоретичски подов будет больше количества нод, то надо requiredDuring заменить на preferredDuring а то часть подов планировщик не сможет заассайнить.
источник

MF

Maxim Filatov in K8Spb
> Планировщик по умолчанию и так попытается разнести поды по разным нодам

спорное утверждение ;)
источник

MF

Maxim Filatov in K8Spb
Планировщик по умолчанию попытается разнести поды туда, где ресурсов свободных больше у кубелета
источник

VO

Vitaliy Okulov in K8Spb
а каких ресурсов? там сложная формула для рассчета?
источник

MF

Maxim Filatov in K8Spb
если нету нодозависимых pvc, то только рама и цпу
источник

MF

Maxim Filatov in K8Spb
ну то есть в реальной жизни обычно бывает так, что если есть вдруг машина, коптящая воздух без нагрузки, то большая часть новоприлетевших реплик приземлится на неё
источник

MF

Maxim Filatov in K8Spb
с этим раньше активно боролись всякие кастомные шедулеры - типа навопса, например - последние полгода-год мы на это всё забили и просто антиаффинити в чартах приложений захерачили везде
источник

A

Andrey Afoninskiy in K8Spb
Что тоже не спасает потому что оно применяется только при скедулинге
источник

MF

Maxim Filatov in K8Spb
ну не, мы же сейчас и не говорим о динамической перебалансировке
источник