Установить квоты в пространствах имен
Квоты ограничивают потребление ресурсов в пространствах имен проекта. Квоты задаются на уровне пространства имен и позволяют контролировать использование CPU, памяти, хранилища и GPU.
Перед началом работы
Убедитесь, что:
- У вас есть роль администратора кластера или администратора проекта.
- Проект и пространство имен уже созданы. Если нет, создайте проект и пространство имен.
Поддерживаемые типы квот
На уровне пространства имен можно установить следующие квоты:
requests.cpu— cуммарный запрос CPU для подов в пространстве имен.requests.memory— суммарный запрос памяти для подов в пространстве имен.limits.cpu— суммарный лимит CPU для подов в пространстве имен.limits.memory— суммарный лимит памяти для подов в пространстве имен.requests.storage— суммарный объем хранилища для всех PVC в пространстве имен.requests.nvidia.com/gpu— суммарное количество GPU для подов в пространстве имен.
Если для некоторого типа ресурса квота не указана, потребление этого ресурса не ограничивается.
Создать квоту
Квоты задаются на уровне пространства имен проекта.
-
В левом меню выберите Проекты.
-
Выберите нужный проект из списка.
-
На боковой панели проекта нажмите Пространства имен.
-
Выберите нужное пространство имен.
-
Перейдите на вкладку Квоты.
-
Нажмите + Добавить квоту.
-
Укажите параметры квоты:
- Имя квоты — уникальное имя квоты в пространстве имен. Обязательное поле.
-
В разделе Ресурсные квоты добавьте ограничения:
- Выберите тип ресурса в выпадающем списке Ресурс (например,
limits.cpu,requests.cpu). - Укажите значение в поле Значение.
- Чтобы добавить ещё одно ограничение, нажмите Добавить.
- Чтобы удалить строку, нажмите значок корзины.
- Выберите тип ресурса в выпадающем списке Ресурс (например,
-
При необходимости раскройте раздел Дополнительно и укажите Scope — YAML-описание селектора области применения квоты (например, для ограничения по классу приоритета подов).
-
Нажмите Сохранить.
Создайте файл манифеста, например quota.yaml:
apiVersion: v1
kind: ResourceQuota
metadata:
name: my-quota
namespace: team-alpha-backend
spec:
hard:
limits.cpu: "20"
requests.cpu: "10"
limits.memory: "64Gi"
requests.memory: "32Gi"
scopeSelector:
matchExpressions:
- scopeName: PriorityClass
operator: In
values:
- middle
Где:
metadata.name— имя квоты. Обязательное поле.metadata.namespace— пространство имен проекта, в котором создается квота. Обязательное поле.spec.hard— словарь ресурсов и их лимитов. Обязательное поле.spec.scopeSelector— селектор области применения квоты. Необязательное поле.
Примените манифест:
kubectl apply -f quota.yaml
Просмотреть текущее использование квот
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Пространства имен.
- Выберите нужное пространство имен.
- Перейдите на вкладку Квоты.
- Нажмите на имя нужной квоты.
На странице квоты отображается:
- Информация о квоте — имя, пространство имен, область применения (Scope), дата создания.
- Квоты — таблица с колонками Ресурс, Requests (использ./лимит), Limits (использ./лимит), Effective.
Чтобы просмотреть список квот в пространстве имен:
kubectl get resourcequota -n team-alpha-backend
Пример ответа:
NAME REQUEST LIMIT AGE
my-quota requests.cpu: 0/2 limits.cpu: 0/4 20m
Чтобы просмотреть детали квоты с текущим использованием:
kubectl describe resourcequota my-quota -n team-alpha-backend
Пример ответа:
Name: my-quota
Namespace: team-alpha-backend
Resource Used Hard
-------- ---- ----
limits.cpu 1 4
requests.cpu 1 2
Изменить квоту
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Пространства имен.
- Выберите нужное пространство имен.
- Перейдите на вкладку Квоты.
- В строке нужной квоты нажмите значок ⋯ и выберите Редактировать.
- Внесите изменения и нажмите Сохранить.
Отредактируйте квоту напрямую:
kubectl edit resourcequota my-quota -n team-alpha-backend
Примечание
Если новое значение квоты ниже текущей утилизации, изменение применится успешно. Однако создание новых ресурсов, превышающих квоту, будет заблокировано до тех пор, пока утилизация не снизится ниже установленного лимита.
Удалить квоту
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Пространства имен.
- Выберите нужное пространство имен.
- Перейдите на вкладку Квоты.
- В строке нужной квоты нажмите значок ⋯ и выберите Удалить.
- Подтвердите удаление.
kubectl delete resourcequota my-quota -n team-alpha-backend
Примеры
Квота для окружения разработки
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-quota
namespace: development-main
spec:
hard:
requests.cpu: "10"
requests.memory: "32Gi"
requests.storage: "200Gi"
limits.cpu: "20"
limits.memory: "64Gi"
Квота для production-пространства имен с GPU
apiVersion: v1
kind: ResourceQuota
metadata:
name: ml-prod-quota
namespace: ml-production-main
spec:
hard:
requests.cpu: "100"
requests.memory: "512Gi"
requests.storage: "5Ti"
limits.cpu: "200"
limits.memory: "1Ti"
requests.nvidia.com/gpu: "8"