• Русский
  • Управление квотами проекта

    В этом руководстве объясняется, как ACP расширяет Kubernetes ResourceQuota с помощью агрегированной квоты на уровне проекта (ProjectQuota). ProjectQuota позволяет ограничить сумму ResourceQuota по всем namespace в проекте, что позволяет планировать и управлять ресурсами на уровне проекта, при этом делегируя лимиты отдельным namespace.

    Что такое ProjectQuota?

    • ResourceQuota (встроенный в Kubernetes) ограничивает ресурсы на уровне namespace (CPU, память, количество объектов и т.д.). Для понятий, ключей и использования см.:
    • ProjectQuota задаёт верхний предел для всего проекта: сумма всех ResourceQuota по namespace в проекте не должна превышать жёсткие лимиты проекта по тем же ключам.

    Проще говоря: ResourceQuota ограничивает один namespace; ProjectQuota ограничивает сумму по всем namespace в проекте.

    Как это работает

    • Порядок работы: сначала определите или скорректируйте ProjectQuota, затем распределяйте ResourceQuota по namespace в рамках бюджета проекта.
    • Область действия: ProjectQuota применяется к платформенному проекту и управляет всеми namespace, которые к нему принадлежат.
    • Агрегированное применение при приёме запроса:
      • При создании или обновлении ResourceQuota namespace платформа вычисляет сумму по тем же ключам (например, limits.cpu, requests.memory, pods) по всем namespace проекта, включая вносимое изменение.
      • Запрос разрешается только если новая сумма остаётся меньше или равна соответствующим жёстким лимитам ProjectQuota. В противном случае изменение отклоняется с объяснением ошибки.
    • Модель исполнения:
      • ProjectQuota ограничивает то, что можно выделить через ResourceQuota namespace (предварительное выделение), а не текущее использование ресурсов. Фактическое потребление регулируется ResourceQuota каждого namespace и планировщиком.

    Когда использовать ProjectQuota

    • Управление бюджетом/ёмкостью по проекту: выделить фиксированный бюджет CPU/памяти/объектов и затем распределить его по namespace.
    • Много командные или много средовые проекты (например, dev/staging/prod), которые используют общий верхний предел.
    • Предотвращение «дрейфа» квот: поддерживать один «большой контейнер» на уровне проекта, чтобы квоты namespace не увеличивались незаметно со временем.

    Ключи квот и единицы измерения

    ProjectQuota поддерживает те же распространённые ключи, что и ResourceQuota (неполный список):

    • Вычислительные ресурсы и память: limits.cpu, limits.memory, requests.cpu, requests.memory
    • Количество рабочих нагрузок/объектов: pods, services, configmaps, secrets, pvc и другие

    Единицы и правила подсчёта:

    • CPU измеряется в ядрах (например, 2, 500m)
    • Память измеряется в байтах (например, 8Gi)
    • Ключи, связанные с объектами, считаются целыми числами

    Если сумма соответствующих ключей по всем namespace приближается или превышает жёсткий лимит ProjectQuota, ACP блокирует создание или расширение ResourceQuota для этого ключа.

    Советы по стратегии распределения

    • Сначала определите «большой контейнер» проекта (ProjectQuota), затем разделите его на ResourceQuota по namespace для команд/сред.
    • Оставляйте запас 10% - 30% для пиков и эластичного масштабирования.
    • Регулярно проверяйте: возвращайте неиспользуемые квоты и перераспределяйте; увеличивайте квоты для постоянно ограниченных namespace и корректируйте общий лимит проекта.

    Лучшие практики и часто задаваемые вопросы

    • В: При увеличении limits.memory в namespace возникает ошибка о превышении квоты проекта. Почему?
      • О: Жёсткий лимит ProjectQuota по этому ключу будет превышен запрашиваемым изменением. Уменьшите квоты в других namespace или сначала увеличьте лимит проекта, затем повторите изменение namespace.
    • В: Я увеличил ProjectQuota, но рабочие нагрузки всё равно не запускаются.
      • О: Убедитесь, что ResourceQuota каждого namespace также увеличена соответствующим образом, и проверьте доступную ёмкость кластера/узлов.
    • Рекомендация: Управляйте ProjectQuota в рамках обычного процесса контроля изменений, согласованного с планированием ёмкости (узлы/хранилище) и управлением бюджетом.