Artem
yaml умеешь?
чуть-чуть
Solyar
чуть-чуть
Нужно еще чуть-чуть и будет круто
Artem
видимо надо как-то иначе афинити прописывать?
Artem
Ребят, помогите с этим афинити разобраться, пожалуйста)
Vladimir
Подскажите, а как накатывать миграции в кубе? Через init контейеру или job? cronjob?
Just a baka
Подскажите, а как накатывать миграции в кубе? Через init контейеру или job? cronjob?
а не лучше ли это делать в процессе деплоя в CI/CD, чтобы понять, что все сломалось до того, как поды начнут затуплять?
Vladimir
то есть сначало накатываем миграцию, потом образ выкатываем?
Just a baka
Да, как вариант. Но тут добавляется бОльший временной лаг и простой сервиса будет чуть больше (он бы и так был, впрочем). Надо городить блю-грин какой-нибудь, если хочется без простоя
Alexander
Чисто логически миграции - это Job
Solyar
Кто-нибудь использовал для наката миграций liquibase в k8s ?
Grigorii
spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: service-k8s-node operator: In values: - "true" topologyKey: "kubernetes.io/hostname"
topologyKey указывается для inter-pod anti-affinity это значит что в твоем примере он не будет скедулить поды на ноду с таким же значеним ключа kubernetes.io/hostname поды с лейблом service-k8s-node=true
Grigorii
если нужен обычный Node affinity, просто убери topologyKey
Artem
если нужен обычный Node affinity, просто убери topologyKey
error validating data: ValidationError(Deployment.spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[0]): missing required field "topologyKey" in io.k8s.api.core.v1.PodAffinityTerm; if you choose to ignore these errors, turn validation off with --validate=false
Grigorii
вместо podAntiAffinity nodeAfinity
Grigorii
и вместо in — not in
Artem
error: error validating "deployment.yaml": error validating data: ValidationError(Deployment.spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution): invalid type for io.k8s.api.core.v1.NodeSel ector: got "array", expected "map"; if you choose to ignore these errors, turn validation off with --validate=false
Artem
spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: tw-k8s-node operator: NotIn values: - "true"
Grigorii
блин, да посмотри и скопируй уже отсюда)) https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#node-affinity-beta-feature
Artem
там для пода описывается всё, а у меня деплоймент
Grigorii
а какая разница деплоймент это просто темплейт пода
Artem
Сделал вот так
Artem
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: tw-k8s-node operator: NotIn values: - "true"
Grigorii
ну да, так должно работать
🎄у
подскажите в какую сторону погуглить - хочу на одной ноде крутить один под, и чтобы на эту ноду другие поды не скедулились
🎄у
как заскедулить под на эту ноду понятно, но как запретить остальным подам?
Grigorii
taint поставь на нее
Grigorii
а у этого пода сделай toleration
🎄у
спасибо, похоже то что нужно
Andrei
Ребят, накиньте, плиз, можно как-то проставить разные лимиты на ресурсы для отдельных инстансов в statefulset? Профиль нагрузки неравномерный, хочется иметь разный resources.requests.cpu
Vadim
"инстансов" == "подов"? Никак
Alexander
Ребят, накиньте, плиз, можно как-то проставить разные лимиты на ресурсы для отдельных инстансов в statefulset? Профиль нагрузки неравномерный, хочется иметь разный resources.requests.cpu
А как такое может быть? Наверное это не Statefulset. В Statefulset инстансы одного кластера и что-то распределяет(пытается) нагрузку равномерно
Alexander
Или много ресурсов на мастер и мало ресурсов на слейвы?
Andrei
Шарды тарантула. 0 - обычно мастер и на него только запись, а чтение только с реплик
Alexander
Тогда делать два. В Эластике вроде так... Один для мастер, другой для дата
Andrei
Не, это хрень. Проще железом добить
Alexander
Или вообще держать эти ноды вне кубера )
Andrei
Плохая идея. Слишком уж хорошо и удобно он тут живет)
Solyar
Как раз возникла необходимость в таком
Alexander
Плохая идея. Слишком уж хорошо и удобно он тут живет)
А кстати вопрос по Тарантулу. А нормально его использовать c движком Vinyl как Redis для сессий, чтоб память экономить и не терять из-за переполнения? Соотношение память-диск 1:10 вроде Осипов говорил норм
Alexander
Или место подскажешь где такие албанские вопросы задают. Может они в тлг есть?
Andrei
А кстати вопрос по Тарантулу. А нормально его использовать c движком Vinyl как Redis для сессий, чтоб память экономить и не терять из-за переполнения? Соотношение память-диск 1:10 вроде Осипов говорил норм
За винил особо не подскажу: на момент как мы начали использовать тарантул он был unstable, у нас memtx. Сейчас вроде как даже vshard поддерживает его (надо уточнить). Основное с чем Вы столкнетесь, то что нужно будет юзать exparationd модуль чтобы чистить сессии, ибо ttl как в redis там нет.
Alexander
Спасибо
Solyar
Товарищи а вы Sensitive Data в деплойменты как передаете?
Solyar
Jenkins ? Может что-то еще?
Andrei
vault, https://github.com/banzaicloud/banzai-charts/tree/master/vault
Andrei
Единственное что, я бы научил приложения ходить в vault самим, ибо у них есть вебхук (mutating admission webhook) при отвале которого в кластере не запускается ровным счетом ничего
Andrei
Собственно, тот вебхук его и инжектит, но это костыль. Точнее не его, a vault-env
G72K
Что это за инструмент?
В следующем сообщении :)
Solyar
hashicorp vault
Спасибо
inqfen
Уважаемые знатоки
inqfen
Метрики с nginx ingress с порта 10254 это метрики конкретного пода или со всех сразу?
inqfen
Ты не совсем понял
inqfen
Я про под, но уже посмотрел, что таки по отдельности
inqfen
То есть если к меня n ингрессов, то нужно как-то придумать как сделать сервисы на них разные
inqfen
У меня не пром оператор в кластере, а отдаю на внешний
Stefan
Ты не совсем понял
в смысле? ингресс контроллер поднят двумя репликами а этого я уже не понял "То есть если к меня n ингрессов, то нужно как-то придумать как сделать сервисы на них разны"
inqfen
ингресс контроллер поднят двумя подами, с каждого из них нужно на внешку отдавать :10254/metrics
Stefan
аа, вот ты о чем
inqfen
Потому что у каждого пода свои метрики
Stefan
ингресс контроллер поднят двумя подами, с каждого из них нужно на внешку отдавать :10254/metrics
ну а если собирать удаленно метрики с апи кубера? при этом указав в деплойменте эти аннотации не собирал удаленно с кубера метрики, точно не подскажу template: metadata: labels: k8s-app: ingress-nginx annotations: prometheus.io/port: "10254" prometheus.io/scrape: "true"
Алексей
Коллеги, у кого то есть описание воркэраунда по замене протухших сертификатов на нодах кластера? (Кубелет на инстансах не поднимается тк протух сертификат)
inqfen
А как разворачивал?
inqfen
а ingress нет
inqfen
Stefan
inqfen
Не ты, а тот счастливец с протухшими сертами
Stefan
а)