TGViewer
Make. Build. Break. Reflect. Make. Build. Break. Reflect. @makebreakreflect · 1.37K subscribers
Post #351 1.6K
#aws #AWScommunity #kubernetes #eks #troubleshooting #база

Дефолты.


Однажды прилетает алёрт. Чот поломалось. Захожу в слак прочитать.
Сперва поднялся трафик бизнес нагрузки. Затем поднялся лаг на топиках кафки.
Был рост SQS очередей. Какие-то алерты по куберу.

В общем всё выглядело, как "чот сломалось, но совершенно не понятно что".

Полез я в oncall канал, а там уже бурное обсуждение, пока я кушонькал.

Какая была основная гипотеза до меня:
- прилетело большое количество клиентов (спасибо сейлзам, никогда не предупреждают о наплыве х5 новых кастомеров)
- это провоцировало трафик, по графике графаны примерно х4 от вчеращнего в то же время
- кубернетис поды, которые обрабатывают входящий трафик, начали скейлится и упёрлись в максимум 100
- карпентер начал скейлить ноды в нод группах, упёрся в максимум 60 нод на группу (для этих типов пода было так)
- всё пошло по половому органу и начало дальше копиться со всех сторон

Чего же решили коллеги в этот момент траблшутинга?
Конечно же "а давайте заскейлим побольше! Нагрузка просто большая и надо дать больше ресурсов!". Да чо я душню, я так же сделал бы.
Поменяли максимум нод в нод группе до 200, а количество проблемых подов до 250 (вроде бы).

Ну штош, а лучше и не стало.
Сразу же перестал работать интернал сервис, не мог подключится к редису. Потом посыпались алерты, что поды в пендинге, нехватка капасити нод на одной нод группе. Редис коннекшны 5000+.
Потом макс коннекшн в РДС. Потом про нехватку инстансов в us-east-1 регионе.
Потом было что-то ещё, но уже было и не важно.

Нас просто завалило алёртами.
По-моему мы всем сервисом уныло прилегли и прилегли надолго.

Когда я подключился к инциденту, как раз было море алёртов, и я честно не понимал с чего начать. У каждого была своя гипотеза, каждый пытался что-то делать и менять, отчасти неверно.
Например для одного из сервисов меняли макс реплики у HPA, но ресурс управлялся KEDA и ващет надо было менять sclaedobject.
"Алекс, у нас ещё и HPA не работает!" 😢

Куда бы я не тыкнулся - везде были ошибки и везде было плохо.
Спустя полчаса я понял, что проблема в скейлинге - всё стало хуже, когда начали всё скейлить.

Мои коллеги копали в основную гипотезу, что "не хватает капасити, не хватает нод, не хватает подов, потому везде очереди".

Мне же показалось странным, а почему увеличение подов и нод не помогло?
Там же банальная арифметика, как так-то?!

Ну ладно, упало и упало, а чего по логами то у нас?
Коллеги побежали смотреть логи приложений и сказали из нового и необычного:
- таймауты подключения к редису
- таймауты подключения к базе РДС (ну да, положили мы базу несколькими сотнями тысячами подов)
- таймауты подключения к SQS
- таймауты..
стоп, смысле мы не можем к sqs подключится?
Он, в отличии от RDS/Redis не может ругаться на нехватку ресурсов.
А что за ошибки?
Благо сервисы были ок и писали более детальные ошибки.
Быстренько рапарсив десяток микросервисов я понял, что у всех проблема с ресолвом хоста.
Ещё один нырок в гит - там и лайвнесс пробы так же проверяют всякие ElastiCache/RDS/MSK.

Бл, ну значит чот с днс.
Быстро свичусь в kube-system неймспейс, смотрю что по логам в CoreDNS и метрикам в виктории метрикс.
Сука. Нагрузка большая по CPU.
Стоп, погодите-ка, а почему там всего две реплики?!

Быстро делаю скейл реплик до 10 штук (вот так просто, не глядя),прям через kubectl.
Через минуту ошибки ДНС в логах прекращаются.
Ещё через минуту все очереди SQS/MSK начинают разбираться с неимоверной скоростью.
Ещё через минут 5 падают все нагрузки по коннекшнам ко всем эндпойнтам и алёрты стремительно зеленеют.
За 15 минут инцидент был потушен.

Пилю постмортем, таски себе как экшн айтемс:
- поставить алертинг кластервайд и на сам корднс
- поставить гибкий конфиг/скейлинг подов корднс (ну там кеда или чо)

Так а почему же был инцидент?
Всё очень просто:
- прилетело большое количество трафика
- начались ошибки ДНС из-за скейлинга подов и нод (ну типа регулярно было 150 подов, стало 600, цифры из головы)
- корднс не успевал всё обработать
- вместо скейлинга корднс подов мы обосрались и заскейлили бизнес нагрузку, добавив новые реплики и ноды, нагрузив днс ещё больше, поломав флоу теперь уже у всех микросервисов, задев редисы, базы данных, положив все базы макс коннешнами и так далее

Стало интересно, а потому всего 2 реплики?

Оказывается CoreDNS ставился из аддонов (такая внутренняя штука в Амазон ЕКС).
И дефолтное значение мин/макс - 2.🤡

Самое странное (на момент инцидента) - все эти параметры нельзя было изменить.
Сейчас 100% знаю, что можно, но тогда было нельзя.
Аддон ставился терраформом, а тот не позволял изменять ЦПУ/Мемори лимиты/реквесты и количество реплик. Просто тупость.
На память там либо баг терраформа был, либо не позволяла апишка авс.
А может мы просто не разобрались 😬

Пришлось вместо терраформ аддона просто запилить хелм чарт, в котором прописали и автоскейлинг и реплики и реквесты с лимитами.

Формула расчёта была типа
The default proportional scale is to add an additional replica for every 256 cores or 16 nodes in the cluster—​whichever happens first.

Украл сейчас с документации.
Понятно, что при скейлинге плюс +80 новых (в пике) нод, 2 реплики было недостаточно.

Какая же мораль:
- увеличение капасити не всегда есть решение, а иногда и крайне сильное ухудшение, которым можно вообще весь сервис уложить полностью
- ну камон, как можно было работать без node-local-dns
- без алертов ДНС никуда
- дефолты AWS аддонов подходят не всем

Если говорить про то, что мне запомнилось, для себя я вынес мысль
проблема не в скейлинге как таковом, а в том, что скейлили не то узкое место
  • 🔥 25
  • 🥰 2
  • 🤡 2
  • 🌭 2
  • 👍 1
More from @makebreakreflect
  1. Sep 22, 2026#aws #elasticache #redis #kubernetes #troubleshooting #devops #sre #longread Ничего не пре…
  2. Sep 18, 2026Вся эта неделя была очень странной. Опус отупел до уровня 3 модели. Фейбл сжигает токены б…
  3. Sep 16, 2026Post #382
  4. Sep 15, 2026Apple наконец слила beta и release в один продукт и избавились от лишнего шага в релизном…
  5. Sep 14, 2026#мысли #devops #aws Куча людей перешли на искусственный интеллект, так и не освоив собстве…
  6. Sep 4, 2026#aws и немного #всратость Честно говоря я немного разочарован последними UI изменениями, п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →