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

Ребят, накиньте идей. Проблема следующая: В яндекс облаке есть ограничение на одну

вмку - 50 000 коннектов
Поэтому я реализовал следующую схему, для nginx ingress controller использую отдельные группы нод(с автоскейлингом) на них теинт, а на подах nginx ingress controller толерейшон и required anti affinity. Если по простому, то на каждую ноду шедулится по одному ingress controller.

HPA натравлен на метрику network_connections_quota_utilization. А точнее на максимальное ее значение из всех нод, на которых зашедулены поды ingress controller. Делаю именно максимальное, а не среднее, поскольку nlb неравномерно распределяет соединения, и легко может случится такое, что один контроллер почти забит коннектами, а другой свободен.

В целом это работает, HPA увеличивает реплику, автоскейлер поднимает новые ноды, туда шелулятся ingress-controller'ы. Они принимают новые коннекты, и утилизация коннектов падает по всем нодам.

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

И вот я думаю, как с таким справится. По идее хотелось бы убить/перезапустить такой pod (ну или сделать релоад конфигурации, nginx же внутри). Придется писать какую-то автоматизацию, которая смотрит метрики, и если конкретный под контроллера продолжает наращивать коннекты, убивать его или создавать фейковый ingress для перегрузки конфигурации. Это бредовая затея, как думаете? Кто как с таким справляется?

18 ответов

10 просмотров

Не совсем в тему/немного в тему. А ты ведь node-local-dns на всех нодах используешь?

Dmitry-Sergeev 🇺🇦 Автор вопроса

На графике это выглядит так. Дошли до порога в метрике. Спавним новые контроллеры, у старых контроллеров как видите утилизация пошла вниз. Как я и планировал. Но у конкретного одного контроллера остается, поэтому продолжают спавнится новые контроллеры. Утилизация коннектов продолжает падать по всем, кроме одного...

Dmitry-Sergeev 🇺🇦 Автор вопроса
Andrey Klimentyev
Не совсем в тему/немного в тему. А ты ведь node-lo...

ага, правда там iptables мод. Так как calico в яндексе. То есть у меня не в kubelet прописан адрес DNS node-local-dns, а через iptables он там магически подменяется. Ну коннекты все вроде с nginx там # nsenter -n -t 20821 # ss -apnt | grep '10.240.150.4:443' | awk '{ print $5 }' | cut -d: -f1 | sort | uniq | wc -l 31696 # ss -apnt | grep '10.240.150.4:443' -v | awk '{ print $5 }' | cut -d: -f1 | sort | uniq | wc -l 9 # ss -aupn | wc -l 1 То есть почти все коннекты с 443 портом. Да и nginx вряд-ли обильно в DNS ходит (ну это и не видно)

Dmitry-Sergeev 🇺🇦 Автор вопроса
Dmitry Sergeev 🇺🇦
screenshot На графике это выглядит так. Дошли до порога в мет...

Если этот аномальный по коннектам pod ingress-controller'а прибить. То коннекты более или менее распределяются по остальным. Все становится норм, остается столько контроллеров, сколько нужно. То есть hpa скейлит вниз, как и ожидается.

Dmitry-Sergeev 🇺🇦 Автор вопроса

И вот я не вижу путей, кроме как думать как боротся с такими вещами, убивая такие поды автоматически или делая релоад конфигурации

только не на одну вмку ограничение - а на один интерфейс, вот здесь https://t.me/linkmeup_podcast/5490 мне ясно дали понять, что это вообще редкий случай, и это норма я решил пойти следующим спопсобом - убрал нахер их нлб говняный, ставлю алб л4 режиме (правада сюприз, там нет прокси протокола, но для меня это не проблема, так как выше стоит ваф и второй сюприз -между алб и ваф все равно стоит нлб, такая архитектура), и поднял несколько небольших нод ингрессами (в моем случае пока 4х хвататет 2 цпу 4 рам) и таким образом стало более-менее равномерно распределяться количесвто сессий, потому что теперь трафик балансится не только по tuple5 (nlb) но и по RR

Dmitry-Sergeev 🇺🇦 Автор вопроса
Danya
screenshot Господи один график красивее другого

ну до кацусика хокусай этим графикам очень далеко =)

Dmitry-Sergeev 🇺🇦 Автор вопроса
Grigoriy Rochev
только не на одну вмку ограничение - а на один инт...

а у них алб умеет брать tls сертификаты из куба? Или ты деплоешь какой-то их контроллер, который по type: Service alb создает?

Dmitry Sergeev 🇺🇦
а, проглядел

у тебя секьюрити групп есть в кубе?

Dmitry-Sergeev 🇺🇦 Автор вопроса
Grigoriy Rochev
только не на одну вмку ограничение - а на один инт...

Сори за тупой вопрос Но я не понял если у тебя waf => nlb L4=> alb L4 => pod'ы контроллера L7 => поды приложений То по идее у тебя до подов контроллера, все равно будет tuple5, не?

Dmitry-Sergeev 🇺🇦 Автор вопроса
Grigoriy Rochev
waf => nlb L4 (tuple5)=> alb L4 (RR) =>ingress con...

а понял. Потому что alb более умный, поэтому там RR. Но при этом все равно L4

Dmitry-Sergeev 🇺🇦 Автор вопроса
Grigoriy Rochev
waf => nlb L4 (tuple5)=> alb L4 (RR) =>ingress con...

А как ты alb в режим L4 переключил? Там вроде нет такого - https://registry.terraform.io/providers/yandex-cloud/yandex/latest/docs/resources/alb_load_balancer сори за тупые вопросы =)

Dmitry-Sergeev 🇺🇦 Автор вопроса

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
50
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Карта сайта