169 похожих чатов

Всем привет, юзаю eks с NLB(ip target), вижу проблему что

когда поды котнроллера пересоздаются, то ощутимо долго переходят со статуса initial в статус healthy в target group, в какой-то момент попадаю в ситуацию что тупо живых таргетов нет и получаю дайнтайм, на просторах интернета нашел такое решение(https://aws.github.io/aws-eks-best-practices/networking/loadbalancing/loadbalancing/#utilize-pod-readiness-gates), но оно имеет сайдефект - длительность обновления подов, что также приведет к даунтайму если например спот будет отъезжять
как это можно побороть? как я понимаю такой проблемы нет на типе таргетов instance, но не хотелось бы его юзать

30 ответов

59 просмотров

используй RollingUpdateStrategy где максимальне количество недоступных подов = 1 Также можно добавить postStart чтобы он не переходил к следующему поду пока postStart не завершится Можно даже упорототься и в postStart добавить скрипт который проверяет доступен ли таргет в балансировщике

preStop не имеет такого sideffect'а, если pod помеяается на удаление, то он удаляется из endpoints асинхронно, независимо от ого что там происходит в preStop

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
используй RollingUpdateStrategy где максимальне ко...

а не проблема-ли в самом механизме хелсчека target group? а то поды по факту у меня быстро ролятся, но traget group видит их спустя минуты 2-3, дичь

Stefan
а не проблема-ли в самом механизме хелсчека target...

У тебя спустя две минуты таргеты появляются, или спустя две минуты хелсчеки проходят по этим таргетам

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
У тебя спустя две минуты таргеты появляются, или с...

>спустя две минуты хелсчеки проходят по этим таргетам

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
У тебя спустя две минуты таргеты появляются, или с...

в самих таргетах они еще быстро появляются, новые реплики

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
Ты про таргеты лоадюалансера?

ну скорее таргет группы, на которые смотрит NLB

Stefan- Автор вопроса

более умно это как?😄

Dmitry Sergeev 🇺🇦
https://t.me/ru_devops/232823

а как это поможет на стороне балансера то ?

> [...] the AWS Load Balancer controller can set the readiness condition on the pods that constitute your ingress or service backend. The condition status on a pod will be set to True only when the corresponding target in the ALB/NLB target group shows a health state of »Healthy«. This prevents the rolling update of a deployment from terminating old pods until the newly created pods are »Healthy« in the ALB/NLB target group and ready to take traffic. Так там же уже умно он умеет про сайд эффект непонятно, но ваще крутить L7 балансировщик на спотах как по мне ССЗБ

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
https://t.me/ru_devops/232823

https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.5/deploy/pod_readiness_gate/ та я вот читаю статью, это из разряда по умному, но переживаю как оно себя будет вести при отъездах спотов

ну допустим на спотах, не очень понмаю как это влияет, spot отезжает, соотвественно из endpoins выкидываются все адреса которые были на этом споте, соотвественно оно выкидывается из nlb

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
ну допустим на спотах, не очень понмаю как это вли...

ну оно ж всё равно будет пытаться дожидаться новые реплики, пока они не станут healthy то есть условно 3 минуты раздупляется, 2 минуты чтоб таргеты стали хелси перед тем как спот уедет, спот отъезжяет опять пересоздание таргетов и опять ждать и при этом может быть ситуация что вообще не останется здоровых таргетов в моменте

Stefan
ну оно ж всё равно будет пытаться дожидаться новые...

не совсем понимаю, у тебя все споты одновременно отъезжают что-ли? Или у тебя одна реплика ingress контроллера на одном споте?

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
не совсем понимаю, у тебя все споты одновременно о...

ну смотри, 3 тачки сейчас, хоба и амазон внезапно захотел 2 тачки отнять понятно что можно 3 реплики сделать вместо двух, но тем не менее)))

Stefan
ну смотри, 3 тачки сейчас, хоба и амазон внезапно ...

ну если у тебя две тачки забираются одновременно и на этих двух тачках все реплики ingress controller'а, то логично что ты получаешь даунтайм независимо от настроек

Stefan- Автор вопроса
Sebor▂▅▇█▓▒░
Это уже твои проблемы и риски же

ну вот я хотел узнать решает-ли такой кейс эта фича kubectl label namespace readiness elbv2.k8s.aws/pod-readiness-gate-inject=enabled

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
ну если у тебя две тачки забираются одновременно и...

так blue/green же, не должно, если не момент с nlb target group

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
aws забирает споты по blue/green?

высиление подов идет, и реплики в кубе по очереди создаются

Stefan
высиление подов идет, и реплики в кубе по очереди ...

ну у тебя идет выселение подов на двух нодах одноврменно в кейсе

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
ну у тебя идет выселение подов на двух нодах однов...

да но ведь параллельно старая реплика работает до тех пор пока новая не будет готова тут вся боль больше из-за target group, так бы даже не парился

Stefan- Автор вопроса

при drain, deployment разве не начинает создавать новые реплики? шото я может упустил

Stefan
при drain, deployment разве не начинает создавать ...

ну начнинает, но у тебя же одновременно уничтожаются все поды

Stefan- Автор вопроса
Dmitry Sergeev 🇺🇦
ну начнинает, но у тебя же одновременно уничтожают...

так если не проблема traget group с NLB, я ж по идее не заметил бы даже даунтайма то есть при обычном сценарии при drain создаются параллеьно новые екземпляры подов контроллера, параллельно старые работают до тех пор пока новые не станут Running но в случае когда появляется traget group я получаю даунтайм так или иначе, да

Stefan
так если не проблема traget group с NLB, я ж по ид...

при обычном сценарии удаления всех подов: у тебя нет никакой гарантии того что новые экземпляры создадутся раньше удаления подов и их endpoints. Обычный сценарий это роллинг апдейт, вот в нем есть определенные гарантии

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта