Limit Range

Содержание

Понимание Limit Range

Обратитесь к официальной документации Kubernetes: Limit Ranges

Использование Kubernetes LimitRange в качестве admission controller — это ограничение ресурсов на уровне контейнера или Pod. Он устанавливает значения запросов по умолчанию, лимитов и максимальных значений для контейнеров или Pod, созданных после создания или обновления LimitRange, при этом постоянно отслеживает использование ресурсов контейнерами, чтобы гарантировать, что никакие ресурсы не превышают определённые максимальные значения в пространстве имён.

Запрос ресурсов контейнера — это соотношение между лимитами ресурсов и overcommitment кластера. Значения запросов ресурсов служат ориентиром и критерием для scheduler при планировании контейнеров. Scheduler проверяет доступные ресурсы для каждого узла (общие ресурсы минус сумма запросов ресурсов контейнеров в Pod, запланированных на узле). Если суммарные запросы ресурсов нового контейнера Pod превышают оставшиеся доступные ресурсы узла, этот Pod не будет запланирован на данном узле.

LimitRange — это admission controller:

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

Включает следующие настройки

РесурсПоле
CPU
  • Default Request
  • Limit
  • Max
Memory
  • Default Request
  • Limit
  • Max

Создание Limit Range с помощью CLI

Примеры YAML файлов

# example-limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
  namespace: example
spec:
  limits:
    - default:
        cpu: 100m
        memory: 100Mi
      defaultRequest:
        cpu: 50m
        memory: 50Mi
      max:
        cpu: 1000m
        memory: 1000Mi
      type: Container

Создание через YAML файл

kubectl apply -f example-limitrange.yaml

Создание напрямую через командную строку

kubectl create limitrange example-limitrange --namespace=example --default='cpu=100m,memory=100Mi' --default-request='cpu=50m,memory=50Mi' --max='cpu=1000m,memory=1000Mi'