TGViewer
Библиотека девопса | DevOps, SRE, Sysadmin Библиотека девопса | DevOps, SRE, Sysadmin @devopsslib · 10.4K subscribers
Post #3245 1.92K
Как предотвратить OOMKiiled в k8s?

В мире Kubernetes ошибки «OOMKilled» (Out of Memory Killed) возникают, когда приложение превышает выделенные ему ресурсы памяти, что приводит к его завершению системой. Для предотвращения таких ситуаций Kubernetes использует механизм классов качества обслуживания (QoS), который помогает эффективно управлять ресурсами и обеспечивать стабильную работу приложений.

🛠Классы QoS в Kubernetes:

➖Guaranteed (Гарантированный): Присваивается подам, у которых для всех контейнеров установлены одинаковые значения запросов и лимитов ресурсов.
➖Burstable (С переменной нагрузкой): Присваивается подам, у которых запросы ресурсов меньше установленных лимитов.
➖Best-Effort (По остаточному принципу): Присваивается подам без указанных запросов и лимитов ресурсов.
Эти классы позволяют Kubernetes приоритизировать рабочие нагрузки при дефиците ресурсов, обеспечивая критически важным приложениям необходимые ресурсы.

⚡️Причины возникновения ошибок OOMKilled:
➖Неопределенные лимиты ресурсов: контейнеры потребляют больше ресурсов, чем предполагалось.
➖Переизбыток ресурсов: несколько подов конкурируют за ограниченные ресурсы.
➖Утечки памяти: неэффективная разработка приложений, приводящая к постепенному увеличению потребления памяти.
Без правильной настройки QoS повышается риск исчерпания ресурсов и возникновения ошибок OOMKilled.

❓Как QoS предотвращает ошибки OOMKilled:
➖Приоритизация подов: подам с классом Guaranteed присваивается наивысший приоритет, за ними следуют Burstable и Best-Effort.
➖Предотвращение переизбытка ресурсов: QoS гарантирует, что запросы ресурсов соответствуют доступной емкости, снижая риск перегрузки.
➖Гибкое управление ресурсами: при нехватке памяти сначала выселяются поды с более низким приоритетом, защищая критически важные приложения.

💡Рекомендации по настройке QoS для предотвращения ошибок OOMKilled:
➖Установите запросы и лимиты ресурсов: всегда указывайте запросы и лимиты ресурсов в конфигурации подов.
➖Проверяйте класс QoS подов: после развертывания убедитесь в правильности присвоенного класса QoS с помощью команды:
kubectl get pod <имя-пода> -o jsonpath='{.status.qosClass}'


➖Тестируйте распределение ресурсов: симулируйте высоконагруженные сценарии, чтобы наблюдать поведение подов и убедиться в корректной работе настроек QoS.
  • 👍 4
  • 👏 1
  • 🎉 1
More from @devopsslib
  1. Oct 13, 2026Где развернуть свои сервисы, когда инфраструктура под угрозой? Коллеги, партнеры, друзья!…
  2. Oct 12, 2026👀 Как вы смотрите видео? Разбираете урок, слушаете интервью фоном или начинаете на телефо…
  3. Oct 10, 2026Showboat и Rodney помогают показать работу ИИ-агента Саймон Уиллисон собирает демонстрации…
  4. Oct 10, 2026Post #5047
  5. Sep 29, 2026Для тех, кто работает с Kubernetes и облачной инфраструктурой, в октябре намечается отличн…
  6. Sep 25, 2026🤖 ИИ-агенту теперь можно поставить задачу прямо в GitLab — и не расписывать каждый следую…
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 →