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 ответов

19 просмотров

используй 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. Обычный сценарий это роллинг апдейт, вот в нем есть определенные гарантии

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта