• Русский
  • Настройка квот

    В качестве администратора вы можете использовать Alauda Build of Kueue для настройки квот с целью оптимизации распределения ресурсов и пропускной способности системы для пользовательских рабочих нагрузок. Вы можете настроить квоты для вычислительных ресурсов, таких как CPU, память, pods и GPU.

    Вы можете настроить квоты в Alauda Build of Kueue, выполнив следующие шаги:

    1. Настроить cluster queue.
    2. Настроить resource flavor.
    3. Настроить local queue.
    4. Пользователи смогут отправлять свои рабочие нагрузки в local queue.

    1. Настройка cluster queue

    Cluster queue — это ресурс с областью действия на уровне кластера, представленный объектом ClusterQueue, который управляет пулом ресурсов, таких как GPU, CPU, память и pods. Cluster queue можно использовать для определения лимитов использования, квот для resource flavors, порядка потребления и правил справедливого распределения.

    INFO

    Примечание: cluster queue не готов к использованию, пока не будет настроен объект ResourceFlavor.

    1.1. Предварительные требования

    • Alauda Container Platform Web CLI имеет связь с вашим кластером.
    • У вас есть права администратора кластера или роль kueue-batch-admin-role.

    1.2. Процедура

    1. Создайте объект ClusterQueue в виде YAML-файла:

      apiVersion: kueue.x-k8s.io/v1beta2
      kind: ClusterQueue
      metadata:
        name: cluster-queue
      spec:
        namespaceSelector: {} 
        #matchLabels:
        #  kubernetes.io/metadata.name: team-a
        resourceGroups:
        - coveredResources: ["cpu", "memory", "pods"] 
          flavors:
          - name: "default-flavor"
            resources:
            - name: "cpu"
              nominalQuota: 9
            - name: "memory"
              nominalQuota: 36Gi
            - name: "pods"
              nominalQuota: 5
        - coveredResources: ["nvidia.com/gpualloc", "nvidia.com/total-gpucores", "nvidia.com/total-gpumem"] 
          flavors:
          - name: "t4-flavor"
            resources:
            - name: "nvidia.com/gpualloc"
              nominalQuota: "20"
            - name: "nvidia.com/total-gpucores"
              nominalQuota: "300"
            - name: "nvidia.com/total-gpumem"
              nominalQuota: "20480"
        - coveredResources: ["nvidia.com/gpu"] 
          flavors:
          - name: "a30-flavor"
            resources:
            - name: "nvidia.com/gpu"
              nominalQuota: 100
      1. namespaceSelector: Определяет, какие пространства имён могут использовать ресурсы, управляемые этим cluster queue. Пустой namespaceSelector, как показано в примере, означает, что все пространства имён могут использовать эти ресурсы.
      2. coveredResources для default-flavor: Определяет типы ресурсов, управляемые cluster queue. В этом примере объект ClusterQueue управляет ресурсами CPU, памяти, pods и GPU.
      3. flavors.name для default-flavor: Определяет resource flavor, применяемый к перечисленным типам ресурсов. В этом примере resource flavor default-flavor применяется к ресурсам CPU, памяти, pods и GPU.
      4. resources для default-flavor: Определяет требования к ресурсам для допуска заданий. Этот пример cluster queue допускает задания только при выполнении следующих условий:
        • Суммарный запрос CPU не превышает 9.
        • Суммарный запрос памяти не превышает 36Gi.
        • Общее количество pods не превышает 5.
        • Суммарное количество задач GPU не превышает 20, если используется Alauda Build of Hami (см. callout 5).
        • Суммарное количество запросов на ядра GPU не превышает 300, если используется Alauda Build of Hami.
        • Суммарное количество запросов на память GPU не превышает 20480.
        • Суммарный запрос GPU не превышает 100, если используется Alauda Build of NVIDIA GPU Device Plugin (см. callout 7).
      5. coveredResources для t4-flavor: Определяет требования к ресурсам для Alauda Build of Hami. Если вы не используете Alauda Build of Hami, удалите этот блок.
      6. flavors.name для t4-flavor: Определяет resource flavor, применяемый к перечисленным типам ресурсов. В этом примере resource flavor t4-flavor применяется к видеокартам Nvidia T4. Если вы не хотите настраивать квоты для конкретных типов карт, можно указать default-flavor.
      7. coveredResources для a30-flavor: Определяет требования к ресурсам для Alauda Build of NVIDIA GPU Device Plugin. Если вы не используете этот плагин, удалите этот блок.
      8. flavors.name для a30-flavor: Определяет resource flavor, применяемый к перечисленным типам ресурсов. В этом примере resource flavor a30-flavor применяется к видеокартам Nvidia A30. Если вы не хотите настраивать квоты для конкретных типов карт, можно указать default-flavor.
    2. Примените объект ClusterQueue, выполнив следующую команду:

      kubectl  apply -f <filename>.yaml

    2. Настройка resource flavor

    После настройки объекта ClusterQueue вы можете настроить объект ResourceFlavor.

    Ресурсы в кластере обычно неоднородны. Если ресурсы в вашем кластере однородны, вы можете использовать пустой ResourceFlavor вместо добавления меток к пользовательским resource flavors.

    Вы можете использовать пользовательский объект ResourceFlavor для представления различных вариантов ресурсов, связанных с узлами кластера через метки, taints и tolerations. Затем вы можете связывать рабочие нагрузки с определёнными типами узлов для обеспечения тонкого управления ресурсами.

    2.1. Предварительные требования

    • Alauda Container Platform Web CLI имеет связь с вашим кластером.
    • У вас есть права администратора кластера или роль kueue-batch-admin-role.

    2.2. Процедура

    1. Создайте объект ResourceFlavor в виде YAML-файла:

      Пример пустого объекта ResourceFlavor

      apiVersion: kueue.x-k8s.io/v1beta2
      kind: ResourceFlavor
      metadata:
        name: default-flavor

      Пример пользовательского объекта ResourceFlavor для Nvidia Tesla T4 GPU

      apiVersion: kueue.x-k8s.io/v1beta2
      kind: ResourceFlavor
      metadata:
        name: "t4-flavor"
      spec:
        nodeLabels:
          nvidia.com/gpu.product: Tesla-T4

      Пример пользовательского объекта ResourceFlavor для Nvidia A30 GPU

      apiVersion: kueue.x-k8s.io/v1beta2
      kind: ResourceFlavor
      metadata:
        name: "a30-flavor"
      spec:
        nodeLabels:
          nvidia.com/gpu.product: NVIDIA-A30
    2. Примените объект ResourceFlavor, выполнив следующую команду:

      kubectl apply -f <filename>.yaml

    3. Настройка local queue

    Local queue — это объект с областью действия в пространстве имён, представленный объектом LocalQueue, который группирует тесно связанные рабочие нагрузки, принадлежащие одному пространству имён.

    В качестве администратора вы можете настроить объект LocalQueue, чтобы он ссылался на cluster queue. Это выделяет ресурсы из cluster queue для рабочих нагрузок в пространстве имён, указанном в объекте LocalQueue.

    3.1. Предварительные требования

    • Alauda Container Platform Web CLI имеет связь с вашим кластером.
    • У вас есть права администратора кластера или роль kueue-batch-admin-role.
    • Вы создали объект ClusterQueue.

    3.2. Процедура

    1. Создайте объект LocalQueue в виде YAML-файла:

      Пример базового объекта LocalQueue

      apiVersion: kueue.x-k8s.io/v1beta2
      kind: LocalQueue
      metadata:
        namespace: team-namespace
        name: user-queue
      spec:
        clusterQueue: cluster-queue
    2. Примените объект LocalQueue, выполнив следующую команду:

      kubectl apply -f <filename>.yaml

    4. Настройка локальной очереди по умолчанию

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

    Локальная очередь по умолчанию служит local queue для вновь созданных заданий, у которых отсутствует метка kueue.x-k8s.io/queue-name. После создания локальной очереди по умолчанию любые новые задания, созданные в пространстве имён без метки kueue.x-k8s.io/queue-name, автоматически получают метку kueue.x-k8s.io/queue-name: default.

    4.1. Предварительные требования

    • Alauda Container Platform Web CLI имеет связь с вашим кластером.
    • У вас есть права администратора кластера или роль kueue-batch-admin-role.
    • Вы создали объект ClusterQueue.

    4.2. Процедура

    1. Создайте объект LocalQueue с именем default в виде YAML-файла:

      Пример объекта LocalQueue по умолчанию

      apiVersion: kueue.x-k8s.io/v1beta2
      kind: LocalQueue
      metadata:
        namespace: team-namespace
        name: default
      spec:
        clusterQueue: cluster-queue
    2. Примените объект LocalQueue, выполнив следующую команду:

      kubectl apply -f <filename>.yaml

    4.3. Проверка

    1. Создайте задание в том же пространстве имён, что и локальная очередь по умолчанию.
    2. Убедитесь, что задание обновилось с меткой kueue.x-k8s.io/queue-name: default.