Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете, как установить и настроить 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 |
Предпосылки
- Существующий кластер AKS. Если у вас нет кластера, создайте его с помощью Azure CLI, Azure PowerShell или портала Azure.
- Azure CLI установлен на вашем локальном компьютере. Чтобы выполнить установку или обновление Azure CLI, ознакомьтесь с этой статьей.
- Установлен Helm версии 3 или более поздней.
Установка 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
Создайте и сохраните
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Установите последнюю версию контроллера 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Подтвердите состояние развертывания с помощью
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
Подтверждение состояния развертывания
Убедитесь, что pod контроллера работают корректно.
kubectl get deploy -n kueue-systemВаш результат должен быть похож на следующий пример результата:
NAME READY UP-TO-DATE AVAILABLE AGE kueue-controller-manager 1/1 1 1 7sПодтвердите установку ресурсов 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 и удалить выделенное пространство имен и ресурсы.
Удалите репозиторий Kueue Helm с помощью
helm uninstallкоманды.helm uninstall kueue --namespace kueue-systemУдалите выделенное пространство имен и ресурсы с помощью
kubectl deleteкоманды.kubectl delete namespace kueue-system