Получить доступ

Чем requests отличаются от limits в Kubernetes и что такое OOMKilled и троттлинг CPU?

MiddleKubernetes
Ещё спрашивают так:
  • Почему под получает OOMKilled?
  • Нужно ли ставить лимиты по CPU?
Коротко

requests — сколько ресурсов зарезервировать: по ним планировщик выбирает узел. limits — потолок: превышение памяти → контейнер убивают (OOMKilled, код 137), превышение CPU → троттлинг (процесс притормаживают, но не убивают). Requests слишком малы — узлы переполнены и поды мешают друг другу; слишком велики — кластер простаивает.

  • Память: request = limit — предсказуемо, без внезапных OOM соседей
  • CPU-лимит даёт троттлинг и рост задержек даже при свободных ядрах; многие ставят только request
  • QoS-классы: Guaranteed, Burstable, BestEffort — порядок выселения при нехватке памяти на узле

А ещё Для JVM размер кучи задают долей от лимита (MaxRAMPercentage), а не жёстким -Xmx

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Как работает CPU-лимит. Лимит реализован квотой CFS: за период 100 мс контейнер может использовать limit × 100 мс процессорного времени. Многопоточное приложение с лимитом 1 CPU, запустив 8 потоков, исчерпает квоту за 12,5 мс и будет стоять до конца периода — задержки p99 растут. Метрика: container_cpu_cfs_throttled_periods_total.

Память. Превысить лимит нельзя: cgroup вызывает OOM, kubelet перезапускает контейнер. Учитывается вся память процесса: куча, метаспейс, стеки потоков, буферы вне кучи, page cache частично.

QoS:

классусловиевыселяется
Guaranteedrequests = limits для всех ресурсовпоследним
Burstablerequests заданы, меньше limitsв середине
BestEffortничего не заданопервым

Подбор значений: по фактическому потреблению за неделю (p95 + запас), Vertical Pod Autoscaler в режиме рекомендаций, LimitRange и ResourceQuota на namespace.

Что хотят услышать

  • Requests для планирования, limits как потолок.
  • Различие поведения при превышении памяти и CPU.
  • QoS-классы и практика подбора.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем