Квоты
Quotas
Quotas ‒ это объекты в РОСА Кубис, которые ограничивают потребление ресурсов для каждого пространства имен. Quotas ограничивают:
- количество создаваемых объектов;
- общий объем вычислительных ресурсов;
- общий объем ресурсов хранения, которые могут быть запрошены в данном пространстве имен.
На странице "Quotas" можно создать, отредактировать, удалить или просмотреть ранее созданные квоты на вычислительные ресурсы.
Чтобы удалить элемент, требуется нажать на Удалить в строке элемента.
Создание Quota
Чтобы создать квоту, нужно нажать на кнопку + Создать квоту.
В открывшемся окне (рисунок 358) необходимо задать название квоты, при необходимости указать лейблы и аннотации. Для определения скоупа применения квоты требуется задать совпадающие выражения.

Рисунок 358 ‒ Создание Quota
Параметры квоты, доступные для задания из интерфейса Комплекса, разделены логически на 3 вкладки:
Ресурсы;Хранилище;Количество.
На вкладке "Ресурсы" можно установить квоту (ограничение) на:
- общую сумму запросов памяти/CPU (requests.memory/requests.cpu) подов неймспейса;
- общую сумму лимитов памяти/CPU (limits.memory/limits.cpu) подов неймспейса.
На вкладке "Хранилище" можно ограничить объем ресурсов хранения в неймспейсе:
- Если необходимо ограничить общую сумму запросов на хранилище, указать значение для параметра requests.storage и выбрать единицу измерения.
- При необходимости ограничить количество PVC указать значение для параметра persistentvolumeclaims.
- Если необходимо ограничить общую сумму запросов на эфемерное хранилище, указать значение для параметра requests.ephemeral-storage и выбрать единицу измерения.
- Если необходимо ограничить общую сумму лимитов на эфемерное хранилище, указать значение для параметра limits.ephemeral-storage и выбрать единицу измерения.
- Если требуется ограничить общий объем запросов на хранение в определенном Storage Class, выбрать имя "Storage Class", указать значение суммы и выбрать единицу измерения.
- Если необходимо ограничить количество PVC, связанных с определенным Storage Class, выбрать имя "Storage Class" и указать количество PVC.
Единицы измерения вычислительных ресурсов и хранилища ‒ стандартные для Kubernetes: байт (B), кибибайт (Ki), мебибайт (Mi), гибибайт (Gi). Единицы измерения вычислительных ресурсов отсортированы по уменьшению (от Gi к В).
На вкладке "Количество" можно задать ограничение на общее количество объектов неймспейса по типам ресурсов.
После внесения данных для создания квоты необходимо нажать Сохранить.
Созданные квоты отображаются в виде списка на странице "Quotas" в разделе "Квоты" неймспейса.
Просмотр и редактирование Quota
Для просмотра квоты нужно нажать на название квоты в списке.
При необходимости изменения квоты можно обновить сведения параметров квоты и нажать Сохранить.
Также квоту можно изменить с помощью YAML-манифеста, перейдя на вкладку "Манифест". После внесения изменений в манифест следует выполнить проверку. Результат проверки будет доступен в правой части экрана. Можно раскрыть блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста не пройдена, недоступна проверка манифеста.
Далее необходимо сохранить изменения, внесенные в манифест. Несохраненные данные не будут применены.
Limit Ranges
LimitRanges ‒ это объекты в РОСА Кубис, которые позволяют администраторам установить ограничения на ресурсы, используемые несколькими типами объектов в рамках неймспейса.
Перед началом настройки следует обратить внимание, что:
- установленный limitRange применяется только к новым создаваемым объектам в момент их создания;
- конфигурация LimitRanges предполагает решение установления значений по умолчанию в контейнерах; в Pods и PersistentVolumeClaims доступна только установка только максимальных и минимальных значений.
Антипаттерны в конфигурации limitRange
- Неадекватные значения по умолчанию ‒ Если устанавливаются очень большие или маленькие LimitRanges, то это может привести к серьезным проблемам с ресурсами. Например, установка слишком высокого ограничения может привести к исчерпанию ресурсов, в то время как установка слишком низкого ограничения может мешать работе приложений. Примером неадекватных значений может быть установка ограничений CPU на 1000m для приложения, которому для нормальной работы требуется как минимум 2000m. Приложение не получит достаточно ресурсов для корректной работы и может стать недоступным или работать с серьезными задержками. Наоборот, если установить ограничение на 100000m, то это может привести к исчерпанию ресурсов и большой нагрузке на систему, благодаря чему другие приложения также могут столкнуться с проблемами с производительностью.
- Нет учета реального использования ресурсов ‒ Максимальные и минимальные значения в LimitRanges должны устанавливаться с учетом реального использования ресурсов приложениями. Если это не учитывается, то это может привести к проблемам с производительностью и доступностью. Например, если установлен LimitRange на 1000m CPU и 200Mi для памяти, не учитывая, что приложение в реальности использует около 1500m CPU и 500Mi памяти, то результатом будет недостаточность ресурсов, что негативно скажется на производительности приложения.
- Если значения по умолчанию в LimitRange устанавливается на CPU или память больше, чем размер узла, это может привести к тому, что поды не будут запускаться, так как Комплекс не сможет найти подходящий узел. Если размер узла составляет 1CPU и 2Gi памяти, и устанавливаются значения по умолчанию в LimitRange, равные 2 CPU и 4Gi памяти, Комплекс просто не сможет запустить поды, так как они превышают ресурсы, которыми может управлять узел.
- Если ограничения установлены слишком низкими, поды могут быть в статусе Pending, так как они не могут получить необходимые ресурсы. Если есть под, который требует 1 CPU и 2 Gi памяти для нормальной работы, а установлено максимальное значение 500m для CPU и 1Gi для памяти, под будет в статусе Pending, так как он не сможет получить достаточно ресурсов для запуска.
Создание LimitRanges
Для создания LimitRanges нужно перейти в "Неймспейс → Квоты → LimitRanges", создать новый LimitRange и задать ему название (рисунок 359).

Рисунок 359 ‒ Создание LimitRange
Чтобы установить значения по умолчанию для контейнеров, на вкладке "Container" следует прописать значения параметров:
- CPU Default Request (limits.defaultRequest.cpu);
- CPU Default Limit (limits.default.cpu);
- Memory Default Request (limits.defaultRequest.memory);
- Memory Default Limit (limits.default.memory).
Единицы измерения параметров Memory ‒ стандартные для Комплекса: байт (B), кибибайт (Ki), мебибайт (Mi), гибибайт (Gi). Единицы измерения параметров отсортированы по уменьшению (от Gi к В).
Эти параметры будет назначены контейнеру, если при создании контейнера значения limits и requests не заданы.
Например, если задать для контейнера параметры:
Memory Default Limit: 512Mi CPU Default Limit: "1" Memory Default Request: 256Mi CPU Default Request: "0.5"
то для контейнеров устанавливаются следующие ограничения:
- Если контейнер не указывает запрос на память, ему будет предоставлено 256Mi.
- Если контейнер не указывает ограничение на память, ему будет предоставлено 512Mi.
- Если контейнер не указывает запрос на CPU, ему будет предоставлено 0.5 CPU.
- Если контейнер не указывает ограничение на CPU, ему будет предоставлено 1 СPU.
Можно ограничить возможность создания слишком малых или, наоборот, слишком ресурсоемких контейнеров. Для этого следует задать максимальные и минимальные значения, с которыми могут быть созданы контейнере в этом неймспейсе:
- CPU Минимальное значение (limits.min.cpu) означает, что на выбранных подах контейнер с CPU ниже указанного минимального значения параметра не будет запущен.
- CPU Максимальное значение (limits.max.cpu) означает, что на выбранных подах контейнер с CPU выше указанного максимального значения параметра не будет запущен.
- Memory Минимальное значение (limits.min.memory) означает, что на выбранных подах контейнер с Memory ниже указанного минимального значения параметра не будет запущен.
- Memory Максимальное значение (limits.max.memory) означает, что на выбранных подах контейнер с Memory выше указанного максимального значения параметра не будет запущен.
Аналогичное ограничение можно наложить на весь под. Для этого в настройке LimitRange нужно перейти на вкладку Pod и установить верхние и нижние пределы параметров:
- CPU Минимальное значение (limits.min.cpu) означает, что в этом неймспейсе поды с общим CPU ниже указанного минимального значения параметра не будут запущены.
- CPU Максимальное значение (limits.max.cpu) означает, что в этом неймспейсе поды с общим CPU выше указанного максимального значения параметра не будут запущены.
- Memory Минимальное значение (limits.min.memory) означает, что в этом неймспейсе поды с общим Memory ниже указанного минимального значения параметра не будут запущены.
- Memory Максимальное значение (limits.max.memory) означает, что в этом неймспейсе поды с общим Memory выше указанного максимального значения параметра не будут запущены.
Для установки верхних и нижних пределов для PersistentVolumeClaims нужно перейти в конфигурации LimitRange на вкладку "PersistentVolumeClaims":
- Запрос ресурсов (Request) в PVC должен быть больше или равен минимальному ограничению для PVC, указанному в LimitRange.
- Запрос ресурсов (Request) в PVC должен быть меньше или равен максимальному ограничению для PVC, указанному в LimitRange.
Если в одном неймспейсе существуют несколько объектов LimitRange с разными применяемыми значениями по умолчанию, при создании подов применяется значение самого последнего созданного объекта LimitRange.
Созданные Limit Ranges отображаются в виде списка на странице "Limit Ranges" в разделе "Квоты" неймспейса.
Просмотр и редактирование Limit Range
Для просмотра Limit Range нужно нажать на название в списке.
При необходимости изменения Limit Range требуется обновить сведения параметров квоты и нажать Сохранить.
Также Limit Range можно изменить с помощью YAML-манифеста, перейдя на вкладку "Манифест" и обновив данные. После внесения изменений в манифест требуется выполнить проверку. Результат проверки будет доступен в правой части экрана. Можно раскрыть блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста Limit Range не пройдена, недоступна проверка манифеста.
Далее необходимо сохранить изменения, внесенные в манифест. Несохраненные данные не будут применены.