Поделиться через


Установка и настройка Kueue в службе Azure Kubernetes (AKS)

В этой статье вы узнаете, как установить и настроить Kueue для планирования пакетных рабочих нагрузок в кластере Службы Azure Kubernetes (AKS). Вы также изучите различные концепции Kueue, методы установки для включения расширенных функций Kueue, а также узнаете, как проверить ваши развертывания.

Это важно

Программное обеспечение с открытым кодом упоминается во всей документации и примерах AKS. Программное обеспечение, которое вы развертываете, не покрывается соглашениями об уровне обслуживания AKS, ограниченной гарантией и поддержкой Azure. При использовании технологии с открытым исходным кодом вместе с AKS ознакомьтесь с вариантами поддержки, доступными от соответствующих сообществ и обслуживающих проектов для разработки плана.

Корпорация Майкрософт несет ответственность за создание пакетов с открытым кодом, которые мы развертываем в AKS. Эта ответственность включает полное управление процессами сборки, сканирования, подписывания, проверки и исправления ошибок, а также контроль над двоичными файлами в образах контейнеров. Для получения дополнительной информации см. Управление уязвимостями в AKS и Покрытие поддержки AKS.

Что такое пакетные рабочие нагрузки?

Пакетные развертывания обычно являются неинтерактивными рабочими нагрузками, которые могут быть повторяемыми, имеют ограниченное время выполнения и могут столкнуться с пиковым или всплесковым использованием ресурсов. Эти рабочие нагрузки включают в себя, но не ограничиваются следующими:

  • Задания обработки данных.
  • Проверки уязвимостей безопасности.
  • Кодировка мультимедиа или транскодирование видео.
  • Создание отчетов или финансовый анализ.
  • Рабочие нагрузки GPU, требующие доступности всех ресурсов и могут терпеть задержку запуска, но не могут допускать частичное выделение GPU.

Эти рабочие нагрузки часто моделиируются с помощью задания Kubernetes, CronJob или пользовательского определения ресурсов (CRD), например RayJob или Kubeflow MPIJob. Пакетные развертывания представляют следующий набор различных требований от развертываний общего назначения:

  • Логика планирования за пределами выбора первого доступного узла.
  • Справедливость, очередь и осведомленность о ресурсах.
  • Осведомленность о жизненном цикле заданий и модулей pod.

Планировщик AKS по умолчанию удовлетворяет требованиям служб Kubernetes, но предоставляет ограниченную конфигурацию для пакетных рабочих нагрузок, требующих системы очередей заданий.

Что такое Kueue?

Kueue — это проект очереди заданий с открытым исходным кодом Kubernetes, предназначенный для управления пакетными рабочими нагрузками и обеспечения эффективного, справедливого и управляемого политикой планирования в кластерах Kubernetes. Kueue интегрируется с экосистемой диспетчеризации Kubernetes для координации распределения ресурсов, приоритета и управления производительностью для пакетных заданий.

Это важно

Программное обеспечение с открытым кодом упоминается во всей документации и примерах AKS. Программное обеспечение, которое вы развертываете, не покрывается соглашениями об уровне обслуживания AKS, ограниченной гарантией и поддержкой Azure. При использовании технологии с открытым исходным кодом вместе с AKS ознакомьтесь с вариантами поддержки, доступными от соответствующих сообществ и обслуживающих проектов для разработки плана.

Корпорация Майкрософт несет ответственность за создание пакетов с открытым кодом, которые мы развертываем в AKS. Эта ответственность включает полное управление процессами сборки, сканирования, подписывания, проверки и исправления ошибок, а также контроль над двоичными файлами в образах контейнеров. Для получения дополнительной информации см. Управление уязвимостями в AKS и Покрытие поддержки AKS.

Kueue представляет двухуровневую модель очереди:

  • ClusterQueue представляет общие пулы ресурсов (например, квоты ЦП, память, GPU).
  • Очередь LocalQueue представляет собой очередь, ориентированную на арендатора, в пространстве имен (где пользователи могут отправлять свои пакетные задания).

Рабочие нагрузки, отправленные в LocalQueue, соотносятся с ClusterQueue, чтобы определить, могут ли они быть приняты.

Замечание

Всегда требуется LocalQueue для отправки пакетных заданий, и LocalQueue инструктирует Kueue о том, какому ClusterQueue следует назначить задание. Система ClusterQueue определяет, доступны ли достаточные ресурсы для принятия и выполнения задания.

Кто может использовать Kueue?

Администраторы пакетной рабочей нагрузки (включая администраторов платформы или кластера и инженеров DevOps) и пакетные пользователи (специалисты по обработке и анализу данных, разработчики и инженеры машинного обучения) могут воспользоваться развертыванием рабочих нагрузок с помощью Kueue в AKS.

Администратор пакетной службы фокусируется на настройке, управлении и защите инфраструктуры уровня платформы для поддержки пакетных рабочих нагрузок и выполнения следующих обязанностей:

  • Настройка и управление пулами узлов AKS.
  • Определите квоты ресурсов, ClusterQueues, а также политики для изоляции рабочих нагрузок.
  • Настройте автомасштабирование и эффективное использование ресурсов (например, Cluster Autoscaler или квоты Kueue).
  • Мониторинг работоспособности кластера и очереди.
  • Создание и обслуживание шаблонов и повторно используемых рабочих процессов.

Пакетный пользователь выполняет вычислительные или параллельные задания с помощью инфраструктуры уровня платформы, настроенной администратором пакетной службы, и обычно:

  • Отправка пакетных заданий (например, заданий, рабочей нагрузки или пользовательских контроллеров CRD) и мониторинг состояния задания и выходных данных
  • Выберите соответствующую очередь или конфигурацию ресурсов для заданий (на основе рекомендаций от администраторов пакетов)
  • Оптимизация спецификаций заданий для потребностей в ресурсах и производительности
Тип очереди Scope Создано автором Область использования
ClusterQueue На уровне кластера Администратор платформы Определение общей вычислительной емкости и управления квотами
LocalQueue Namespace Владелец пространства имен Разрешить отправку рабочей нагрузки, сопоставленной с ClusterQueue

Предпосылки

Установка Kueue с Helm

Хотя большинство функций и политик планирования, которые могут потребоваться, включены по умолчанию, некоторые из них не включены по умолчанию, такие как TopologyAwareScheduling. При необходимости перенастройте установку Kueue, изменив функциональные шлюзы по умолчанию или настроив значения параметров Kueue в values.yaml файле шаблона Helm.

Kueue поддерживает несколько фреймворков рабочих нагрузок, которые необходимо явно включить для использования возможностей планирования и управления ресурсами Kueue при запуске MPI Operator MPIJobs, KubeRay'sRayJob и других.

В этом руководстве Kueue настроен для включения LocalQueueMetrics и Topology Aware Scheduling фреймворков из Kubeflow, Ray и JobSet.

  • LocalQueueMetrics предоставляет подробные метрики Prometheus, относящиеся к состоянию и активности LocalQueues, что позволяет точно отслеживать прием рабочих нагрузок, резервирование квот и использование ресурсов.
  • TopologyAwareScheduling позволяет распределять поды, основываясь на топологии узлов в пуле или кластере, чтобы улучшить доступную пропускную способность между подами.

Замечание

Обновление версии по мере необходимости: kueue/releases

  1. Создайте и сохраните values.yaml файл, чтобы при необходимости настроить конфигурацию Kueue.

    cat <<EOF > values.yaml
    controllerManager:
      featureGates:
        - name: TopologyAwareScheduling
          enabled: true
        - name: LocalQueueMetrics
          enabled: true
      managerConfig:
        controllerManagerConfigYaml: |
          apiVersion: config.kueue.x-k8s.io/v1beta1
          kind: Configuration
          integrations:
            frameworks:
              - batch/job
              - kubeflow.org/mpijob
              - ray.io/rayjob
              - ray.io/raycluster
              - jobset.x-k8s.io/jobset
              - kubeflow.org/paddlejob
              - kubeflow.org/pytorchjob
              - kubeflow.org/tfjob
              - kubeflow.org/xgboostjob
              - kubeflow.org/jaxjob
    EOF
    
  2. Установите последнюю версию контроллера Kueue и CRD в выделенном пространстве имен с помощью команды helm install.

    LATEST_VERSION=$(curl -s https://api.github.com/repos/kubernetes-sigs/kueue/releases/latest | grep tag_name | cut -d '"' -f 4 | sed 's/^v//')
    
    helm install kueue oci://registry.k8s.io/kueue/charts/kueue \
     --version=${LATEST_VERSION} \
    --create-namespace --namespace=kueue-system \
    --values values.yaml
    
  3. Подтвердите состояние развертывания с помощью helm list команды.

    helm list --namespace kueue-system
    

    Выходные данные должны включать Status из deployed и выглядеть следующим образом:

    Pulled: registry.k8s.io/kueue/charts/kueue:0.13.4
    Digest: -
    NAME: kueue
    LAST DEPLOYED: -
    NAMESPACE: kueue-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    

Подтверждение состояния развертывания

  1. Убедитесь, что pod контроллера работают корректно.

    kubectl get deploy -n kueue-system
    

    Ваш результат должен быть похож на следующий пример результата:

    NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
    kueue-controller-manager       1/1     1            1           7s
    
  2. Подтвердите установку ресурсов Kueue в кластере AKS:

    kubectl get crds | grep kueue
    

    Выходные данные должны содержать следующие CRD Kueue:

    admissionchecks.kueue.x-k8s.io                   2025-09-11T18:20:48Z
    clusterqueues.kueue.x-k8s.io                     2025-09-11T18:20:48Z
    cohorts.kueue.x-k8s.io                           2025-09-11T18:20:48Z
    localqueues.kueue.x-k8s.io                       2025-09-11T18:20:48Z
    multikueueclusters.kueue.x-k8s.io                2025-09-11T18:20:48Z
    multikueueconfigs.kueue.x-k8s.io                 2025-09-11T18:20:48Z
    provisioningrequestconfigs.kueue.x-k8s.io        2025-09-11T18:20:48Z
    resourceflavors.kueue.x-k8s.io                   2025-09-11T18:20:48Z
    topologies.kueue.x-k8s.io                        2025-09-11T18:20:48Z
    workloadpriorityclasses.kueue.x-k8s.io           2025-09-11T18:20:48Z
    workloads.kueue.x-k8s.io                         2025-09-11T18:20:48Z
    

Удалить Kueue

Если вам больше не нужно использовать диспетчер контроллеров Kueue или настраиваемые ресурсы Kueue в кластере AKS, вы можете удалить репозиторий Helm и удалить выделенное пространство имен и ресурсы.

  1. Удалите репозиторий Kueue Helm с помощью helm uninstall команды.

    helm uninstall kueue --namespace kueue-system  
    
  2. Удалите выделенное пространство имен и ресурсы с помощью kubectl delete команды.

    kubectl delete namespace kueue-system  
    

Дальнейшие шаги