TGViewer
KazDevOps KazDevOps @devopskaz · 6.87K subscribers
Post #1903 1.6K
🔥 Kubernetes Bad Practices

Сегодня у нас партнерский пост от DevOps FM. Замечали, что определенные ошибки в настройке подов неизбежно ведут к инцидентам? Собрали для вас подборку плохих практик, которые ни в коем случае нельзя повторять в работе с оркестратором.

⚪️ Не учитывайте тип трафика при балансировке нагрузки для подов

По умолчанию поведение Kubernetes при трафике HTTP/2 отличается от HTTP/1. Без настройки маршрутизации на L7 один под берет на себя всю нагрузку CPU, в то время как другие простаивают.

Good practices:

⁃ При HTTP/2 заранее проверяйте балансировку в кластере (L4 vs L7)
⁃ Проводите нагрузочное тестирование с теми же настройками (connection pooling/keep-alive), что будут в проде
⁃ Отслеживайте распределение connections и latency по pod-ам

⚪️ Kubernetes сам синхронизируется с внешними сервисами

При использовании внешних тулзов и сервисов, таких как Argo CD, возникают проблемы. Используйте скейлинг для обнаружения.

Good practices:

⁃ В GitOps-кластерах не правьте поля, которые управляются контроллерами (HPA, VerticalPodAutoscaler)
⁃ В работе избегайте client-side внедрений и удаляйте реплики из манифестов деплоя при использовании HPA

⚪️ Всегда задавайте лимиты CPU — троттлинг лишним не бывает

В приложении возникают таймауты из-за CFS троттлинга.

Good practices: не задавайте CPU лимиты без необходимости, а при использовании проводите тест нагрузки

⚪️ Не задавайте приоритет нагрузкам

Если приоритет не задан, kubelet избавится от любого пода.

Good practices:

⁃ Всегда задавайте PriorityClass для системных контроллеров
⁃ Отслеживайте приоритет и его использование
⁃ Тестируйте поведение в staging

⚪️ Удаляйте контроллеры до управляемых ресурсов, поды скажут «спасибо»

Смело удаляйте контроллер, если хотите очередей. Поды застревают в «Terminating» из-за финализаторов, в EKS они по-прежнему удерживают IP-шники и исчерпывают пул адресов подсети.

Good practices:

⁃ Никогда не удаляйте контроллер, пока не удалили управляемые им ресурсы
⁃ Относитесь к финализаторам как к «постоянным» до удаления
⁃ Настройте мониторинг и алерты на: число Terminating подов, долю занятых IP в подсети, количество подов в обработке

⚪️ Храните большие логи локально

Если хранить логи на локальном диске ноды, их станет слишком много, диск заполнится, нода уйдет в DiskPressure. Kubelet удалит поды, а новые просто не запустятся.

Good practices:

⁃ Не храните временные логи только на локальном диске. Используйте централизованную систему: Fluentd, Logstash, облако
⁃ Устанавливайте запросы и лимиты для ephemeral-storage у контейнеров, чтобы избежать неограниченного потребления диска
⁃ Включите ротацию логов и ограничение размера
⁃ Настройте алерты на рост использованного диска в связке с подами — disk usage per pod

Какие худшие практики в работе с Kubernetes встречались вам? Отправляйте свои идеи предложенным постом через бота — если соберем достаточно, опубликуем подборку здесь.


@DevOpsKaz 😛
  • ❤ 5
  • 😎 5
  • 👍 4
  • 👾 3
More from @devopskaz
  1. Sep 25, 2026⚡️ Полезные материалы по итогам доклада Мираса Байгашева «Правильный FinOps в современных…
  2. Sep 24, 2026⚡️ Как выстроить быстрорастущую AI-инфраструктуру для ритейла в облаке: опыт 4SELL Летом 4…
  3. Sep 24, 2026🔥 Спикер №10 DevOpsDays Almaty'26 — Тамерлан Бимжанов, DevOps Engineer, BCC-HUB Тамерлан…
  4. Sep 24, 2026🔥 Миграция микросервисов из одного namespace в другой без простоя Ключевой процесс — сохр…
  5. Sep 23, 2026⚡️ KazHackStan 2026: главная киберконференция региона 29-30 сентября Главная идея cамой ма…
  6. Sep 23, 2026🔥 Свежая подборка инструментов DevOps ⚪️ k8s-mechanic Kubernetes-контроллер, который отсл…
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 →