Контейнеры и оркестрация

Лимит ресурсов Kubernetes

Определение

Лимит ресурсов, или limit, — это верхняя граница потребления CPU или памяти, которую Kubernetes передаёт среде выполнения контейнера. Упёршийся в лимит CPU контейнер ждёт процессорного времени, а при нехватке памяти ядро может завершить процесс; за размещение Pod отвечает request.

Также ищут: Kubernetes limit · лимит ресурса container · CPU memory limit · Resource limit

Зачем это знать

Одинаковое слово limit скрывает разные причины отказа. Узкий лимит CPU способен увеличить задержку, а нехватка памяти — прервать обработку. До покупки более мощного сервера проверьте срабатывание лимитов: установленная квота не вырастет вместе с оборудованием.

Связи из словаря

Карта понятия

Лимит ресурсов Kubernetes
Доказательная часть

Что подтверждено

  1. Kubelet передаёт ограничения среде выполнения. В обычной конфигурации Linux CPU ограничивается квотой времени, а ограничение памяти применяется реактивно и может вызвать завершение из-за нехватки памяти.

    Граница применимости: CPU и память контейнеров Kubernetes в Linux; конкретные механизмы зависят от конфигурации узла.

  2. Limit ограничивает выполнение, request участвует в размещении. Если запрос отсутствует, его иногда получают из лимита по правилам умолчаний; это не делает две величины одним понятием.

    Граница применимости: Запросы, ограничения и умолчания ресурсов Kubernetes.

  3. Достижение лимита CPU обычно заставляет контейнер ждать доступного процессорного времени, а не завершает его. Приложение может медленно отвечать даже при свободных CPU вне его квоты.

    Граница применимости: Обычное ограничение CPU контейнера через периодическую квоту Linux.

  4. Лимит памяти не работает как очередь на CPU: если освобождения памяти недостаточно, ядро может завершить процесс. Последующий перезапуск зависит от политики контейнера и не устраняет причину повторного превышения.

    Граница применимости: Ограничения памяти Kubernetes в Linux и политика перезапуска контейнера.

  5. Ограничение памяти не является обещанием, что измеренное потребление ни на мгновение не превысит число в конфигурации. Принудительное завершение — реакция на давление памяти, а не предварительное резервирование каждого байта.

    Граница применимости: Реактивное применение лимита памяти Kubernetes в Linux.

  6. Сумма лимитов памяти может превышать память узла, потому что размещение учитывает запросы. Одновременный рост нескольких контейнеров способен создать давление памяти; наличие индивидуальных лимитов не доказывает достаточный общий запас.

    Граница применимости: Размещение по requests и применение limits в Kubernetes; суммарный расход проверяется под совместной нагрузкой.

Граница терминов

Не путать

Лимит ресурсов Kubernetes Запрос ресурсов Kubernetes

Limit не заменяет реалистичный request. Увеличение лимита не гарантирует место для нового Pod, а низкая фактическая загрузка не отменяет уже учтённые запросы планировщика.

Лимит ресурсов Kubernetes Группа управления ресурсами

Limit — настройка Kubernetes, cgroup — один из механизмов ядра Linux, который её реализует. Для объяснения задержки или завершения нужны не только числа в конфигурации, но и события на узле.

Перед спецификацией

Что проверить

  1. Проверьте отдельно request и limit каждого ресурса в сохранённой конфигурации.
  2. Сопоставьте ожидание квоты CPU с задержкой пользовательских запросов.
  3. При завершении процесса выясните, было ли событие OOM и какой предел сработал.
  4. Проверьте политику перезапуска и повторяется ли причина отказа.
  5. Испытайте одновременную пиковую нагрузку соседних контейнеров.
  6. Сравните суммарный расход памяти с доступными ресурсами узла, а не только с суммой лимитов.
  7. После смены оборудования повторите испытание с теми же квотами.
Открытые основания

Первоисточники

  • Документация3
  • Официальная документация
    Resource Management for Pods and Containers Kubernetes · Kubernetes current documentation · проверено

    Разделяет запросы и ограничения CPU и памяти: их учёт при размещении, распределение процессорного времени и применение пределов на узле.

    Утверждения: 01 · 02 · 03 · 04 · 05 · 06

  • Официальная документация
    Control Group v2 The Linux Kernel documentation · Linux kernel latest documentation · проверено

    Описывает иерархическое распределение ресурсов, контроллеры, ограничения, учёт потребления и пространство имён cgroup.

    Утверждения: 01 · 03

  • Официальная документация
    Pod Lifecycle Kubernetes · Kubernetes current documentation · проверено

    Описывает назначение узла, состояния Pod и контейнеров, перезапуски контейнеров и создание нового Pod с другим UID взамен прежнего.

    Утверждения: 04

Карта знаний

Связанные понятия

Из знания — в навык

Курсы по теме

Подтвердите действие