Resource Quota

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

Содержание

Понимание Resource Requests и Limits

Используются для ограничения ресурсов, доступных конкретному namespace. Общее использование ресурсов всеми Pod в namespace (за исключением тех, что находятся в состоянии Terminating) не должно превышать квоту.

Resource Requests: Определяют минимальные ресурсы (например, CPU, память), необходимые контейнеру, помогая Kubernetes Scheduler разместить Pod на узле с достаточной емкостью.

Resource Limits: Определяют максимальные ресурсы, которые контейнер может потреблять, предотвращая исчерпание ресурсов и обеспечивая стабильность кластера.

Квоты

Resource Quotas

Если ресурс помечен как Unlimited, явная квота не применяется, но использование не может превышать доступную емкость кластера.

Resource Quotas отслеживают суммарное потребление ресурсов (например, лимиты контейнеров, новые Pod или PVC) внутри namespace.

Поддерживаемые типы квот

ПолеОписание
Resource RequestsОбщие запрошенные ресурсы для всех Pod в namespace:
  • CPU
  • Память
Resource LimitsОбщие лимиты ресурсов для всех Pod в namespace:
  • CPU
  • Память
Number of PodsМаксимальное количество Pod, разрешенное в namespace.

Примечание:

  • Квоты namespace формируются на основе выделенных проекту ресурсов кластера. Если доступная квота по какому-либо ресурсу равна 0, создание namespace завершится ошибкой. Обратитесь к администратору.
  • Unlimited означает, что namespace может использовать оставшиеся ресурсы проекта для данного типа ресурса.

Пример YAML файла

# example-resourcequota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-resourcequota
  namespace: <example>
spec:
  hard:
    limits.cpu: "20"
    limits.memory: 20Gi
    pods: "500"
    requests.cpu: "2"
    requests.memory: 2Gi

Создание resource quota с помощью CLI

Создать через YAML файл

kubectl apply -f example-resourcequota.yaml

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

kubectl create resourcequota example-resourcequota --namespace=<example> --hard=limits.cpu=20,limits.memory=20Gi,pods=500

Storage Quotas

Типы квот:

  • All: Общая емкость хранилища PVC в namespace.
  • Storage Class: Общая емкость хранилища PVC для конкретного класса хранения.

Примечание: Убедитесь, что класс хранения предварительно назначен проекту, содержащему namespace.

Квоты ресурсов аппаратных ускорителей

При установке Alauda Build of Hami или NVIDIA GPU Device Plugin вы сможете использовать расширенные квоты ресурсов для аппаратных ускорителей.

См. Alauda Build of Hami и Alauda Build of NVIDIA GPU Device Plugin.

Другие квоты

Формат пользовательских имен квот должен соответствовать следующим требованиям:

  • Если имя пользовательской квоты не содержит слеша (/): оно должно начинаться и заканчиваться буквой или цифрой, может содержать буквы, цифры, дефисы (-), подчеркивания (_) или точки (.), образуя квалифицированное имя длиной не более 63 символов.
  • Если имя пользовательской квоты содержит слеш (/): имя делится на две части: префикс и имя, в форме: prefix/name. Префикс должен быть допустимым DNS поддоменом, а имя должно соответствовать правилам квалифицированного имени.
  • DNS поддомен:
    • Метка: должна начинаться и заканчиваться строчными буквами или цифрами, может содержать дефисы (-), но не может состоять исключительно из дефисов, максимальная длина — 63 символа.
    • Поддомен: расширяет правила метки, позволяя нескольким меткам соединяться точками (.) для формирования поддомена, максимальная длина — 253 символа.