Installieren und Konfigurieren von Kueue auf Azure Kubernetes Service (AKS)

Kueue bietet Kubernetes-native Auftragswarteschlangen und Ressourcenzulassung für Batch- und KI-Workloads, die auf Azure Kubernetes Service (AKS) ausgeführt werden. In diesem Artikel werden zwei Möglichkeiten zum Installieren von Kueue auf AKS beschrieben:

  • Von AKS verwaltete Kueue-Erweiterung (Vorschau): Verwenden Sie die Azure verwaltete Erweiterungsoberfläche, um Kueue auf Ihrem AKS-Cluster bereitzustellen.
  • Open-Source Kueue mit Helm: Installieren und konfigurieren Sie Kueue direkt aus dem offiziellen Kueue Helm-Chart.

Verwenden Sie nach der Installation Kueue-APIs wie ClusterQueue, LocalQueue und ResourceFlavor, um zu steuern, wie Workloads zu Clusterressourcen zugelassen werden.

Was ist Kueue?

Kueue ist ein open-source Kubernetes-natives Auftragswarteschlangenprojekt, das zum Verwalten von Batchworkloads entwickelt wurde und eine effiziente, faire und richtliniengesteuerte Planung in Kubernetes-Clustern gewährleistet. Kueue ist in das Kubernetes-Planungsökosystem integriert, um die Ressourcenzuordnung, Priorisierung und Kapazitätssteuerung für Workloads zu koordinieren. Kueue steuert, ob Workloads basierend auf konfigurierten Ressourcenkontingenten und Richtlinien zugelassen werden. Nachdem eine Workload zugelassen wurde, platziert der Kubernetes-Scheduler die Pods der Workload auf Knoten.

Kueue ist nützlich für Workloads wie:

  • KI und maschinelles Lernen: Training
  • GPU-intensive Aufgaben
  • Datenverarbeitung
  • Sicherheitslücken-Scans
  • Mediencodierung und Videotranscodierung
  • Berichterstellung und Finanzanalyse
  • Andere Batcharbeitslasten, die warten können, bis genügend Ressourcen verfügbar sind

Modellieren Sie diese Workloads mithilfe eines Kubernetes-Jobs, eines CronJobs oder einer benutzerdefinierten Ressourcendefinition (CRD) wie RayJob oder Kubeflow MPIJob und lassen Sie sie entsprechend von ClusterQueue und LocalQueue zu

Kueue-Warteschlangen verstehen

Bevor Sie Workloads mit Kueue übermitteln, konfigurieren Sie Warteschlangen, die die Zulassung von Workloads steuern.

Kueue verwendet zwei primäre Warteschlangenressourcen:

  • ClusterQueue definiert clusterweite Ressourcenkontingente für freigegebene Ressourcenpools (z. B. CPU, Arbeitsspeicher, GPU-Kontingente) und Richtlinien, die bestimmen, welche Workloads zugelassen werden können.
  • LocalQueue stellt eine Namespace-bezogene Warteschlange bereit, in der Benutzer Workloads übermitteln und auf eine ClusterQueue verweisen.

Der folgende Fluss zeigt, wie Kueue eine Workload auswertet, bevor Kubernetes seine Pods plant: Workload (Pod, Job usw.) → LocalQueue → ClusterQueue → Workload-Zulassung → Kubernetes-Scheduling

Eine LocalQueue identifiziert ClusterQueue, die den Workload auswerten sollte. Dies ClusterQueue bestimmt, ob für den zuzulassenden Workload ein ausreichendes Kontingent verfügbar ist. Plattformadministratoren konfigurieren in der Regel Ressourcen und Richtlinien auf Clusterebene, während Workloadbesitzer Aufträge über eine LocalQueue-Schnittstelle einreichen.

Hinweis

Ein LocalQueue ist immer erforderlich, damit Benutzer Batch-Workloads übermitteln können, und LocalQueue gibt Kueue an, zu welchem ClusterQueue der Auftrag zugewiesen werden soll. Dieses ClusterQueue bestimmt, ob ausreichende Ressourcen verfügbar sind, damit der Auftrag freigegeben und ausgeführt werden kann.

Von Bedeutung

Open-Source-Software wird überall in AKS-Dokumenten und -Beispielen erwähnt. Software, die Sie bereitstellen, ist von AKS-Vereinbarungen zum Servicelevel, der eingeschränkten Garantie und dem Azure-Support ausgeschlossen. Wenn Sie Open-Source-Technologie zusammen mit AKS nutzen, nutzen Sie die Supportoptionen, die von den jeweiligen Communitys und Projektbetreuenden angeboten werden, um einen Plan zu entwickeln.

Microsoft übernimmt die Verantwortung für die Erstellung der Open-Source-Pakete, die wir in AKS bereitstellen. Diese Verantwortung beinhaltet die vollständige Übernahme des Build-, Scan-, Signier-, Validierungs- und Hotfix-Prozesses sowie die Kontrolle über die Binärdateien in Container-Images. Weitere Informationen finden Sie unter Sicherheitsrisikomanagement für AKS und AKS-Supportabdeckung.

Wann Sie Kueue verwenden

Batch- und KI-Workloads können Planungs- und Ressourcenverwaltungsanforderungen aufweisen, die sich von langfristig ausgeführten Kubernetes-Diensten unterscheiden. Batchworkloadadministratoren (einschließlich Plattform- oder Clusteradministratoren und DevOps-Technikern) und Batchbenutzer (Data Scientists, Entwickler und ML-Techniker) können von der Bereitstellung von Workloads mit Kueue auf AKS profitieren.

Ein Batchadministrator konzentriert sich auf das Konfigurieren, Verwalten und Sichern der Infrastruktur auf Plattformebene zur Unterstützung von Batchworkloads und hat die folgenden Verantwortlichkeiten:

  • Bereitstellen und Verwalten von AKS-Knotenpools.
  • Definieren Sie Ressourcenkontingente, Cluster-Queues und Richtlinien für die Workload-Isolation.
  • Optimieren Sie die automatische Skalierung und Kosteneffizienz (z. B. Cluster Autoscaler oder Kueue-Kontingente).
  • Überwachen Sie den Zustand von Clustern und Warteschlangen.
  • Erstellen und Verwalten von Vorlagen und wiederverwendbaren Workflows.

Ein Batchbenutzer führt rechenintensive oder parallele Aufträge mithilfe der plattformbasierten Infrastruktur aus, die von einem Batchadministrator konfiguriert wurde, und in der Regel:

  • Übermitteln von Batchaufträgen (z. B. Auftrags-, Workload- oder benutzerdefinierte Controller-CRDs) und Überwachen des Auftragsstatus und der Ausgaben
  • Wählen Sie geeignete Warteschlangen- oder Ressourcentypen für Aufträge aus, basierend auf den Richtlinien der Batch-Systemadministratoren.
  • Optimieren von Auftragsspezifikationen für Ressourcen- und Leistungsanforderungen

Voraussetzungen

Zusätzliche Voraussetzungen hängen von der gewählten Installationsmethode ab.

Wählen Sie, wie Kueue installiert werden soll

AKS unterstützt zwei Installationsansätze für Kueue. Wählen Sie die Option aus, die am besten dazu passt, wie Sie Kueue in Ihrem Cluster installieren und konfigurieren möchten. Die Kueue Kubernetes-APIs und Warteschlangenkonzepte bleiben unabhängig von der Installationsmethode gleich. Der Hauptunterschied besteht darin, wie die Kueue-Komponenten installiert und konfiguriert werden.

Installationspfad Description
Von AKS verwaltete Kueue-Erweiterung (Vorschau) Sie möchten Kueue über die AKS-Clustererweiterung bereitstellen und die Kueue-Version und -Konfiguration verwenden, die von der Erweiterung unterstützt wird.
Open-Source Kueue mit Helm Sie möchten Kueue direkt aus dem Upstream-Projekt installieren und die Kueue-Version, Featuregates, Integrationen und Helm-Konfiguration steuern.

Installieren und Konfigurieren der verwalteten Kueue-Erweiterung auf Azure Kubernetes Service (Vorschau)

Die von AKS verwaltete Kueue-Erweiterung bietet einen Azure systemeigenen Installationspfad für die Bereitstellung von Kueue auf einem AKS-Cluster. Verwenden Sie diese Installationsmethode, wenn Sie Kueue über die AKS-Clustererweiterung bereitstellen möchten, anstatt das upstream-Helm-Chart direkt zu installieren.

Voraussetzungen für verwaltete Erweiterungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Tools verfügen:

  • AKS Version v1.34 oder höher
  • Azure CLI Version 2.56 oder höher
  • kubectl Version 1.21.0 oder höher
  • Azure CLI k8s-Erweiterung Version 1.9.3
  • Berechtigungen zum Erstellen und Löschen: Ressourcengruppen, AKS-Cluster, AKS-Knotenpools und Clustererweiterungen

Einschränkungen

  • Die von AKS verwaltete Kueue-Erweiterung ist derzeit in den folgenden Azure Regionen verfügbar: centralus, westus, westus2 und eastus
  • Die von AKS verwaltete Kueue-Erweiterung unterstützt derzeit nur Cluster Autoscaler, wobei Unterstützung für Node-Autoprovisionierung geplant ist

Installieren der verwalteten Kueue-Erweiterung

Legen Sie Umgebungsvariablen für Ihr Azure-Abonnement, die Ressourcengruppe und den AKS-Cluster fest:

SUBSCRIPTION_ID="<subscription-id>"
RESOURCE_GROUP="<resource-group-name>"
CLUSTER_NAME="<aks-cluster-name>"

Installieren Sie die Kueue-Clustererweiterung:

az k8s-extension create \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name kueue \
--extension-type microsoft.kueue \
--scope cluster \
--release-namespace kueue-system \
--version 0.19.6-aks.0.4.4 \
--auto-upgrade-mode none

Überprüfen der Erweiterungsinstallation

Rufen Sie den Bereitstellungsstatus und die installierte Version der Kueue-Erweiterung ab. Fahren Sie nach Abschluss der Bereitstellung der Erweiterung mit #verify-your-kueue-installation fort.

az k8s-extension show \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name kueue \
--output json

Deinstallieren Sie die verwaltete Kueue-Erweiterung

Wenn Sie verwaltete Kueue entfernen möchten, ohne den AKS-Cluster zu löschen, löschen Sie die Erweiterung:

az k8s-extension delete \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name kueue \
--yes

Kueue mit Helm installieren

Voraussetzungen für Helm

Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Tools verfügen:

  • Helm v3.0.0 oder höher
  • Berechtigungen zum Erstellen und Löschen: Ressourcengruppen, AKS-Cluster, AKS-Knotenpools und Clustererweiterungen

Optionale Kueue-Features konfigurieren

Während die meisten Features und Terminplanungsrichtlinien, die Sie möglicherweise benötigen, standardmäßig aktiviert sind, sind einige nicht wie TopologyAwareScheduling. Konfigurieren Sie bei Bedarf Ihre Kueue-Installation neu, indem Sie die Standardfunktionsgates ändern oder die Kueue-Paramaterwerte in der values.yaml Datei des Helmdiagramms konfigurieren.

Kueue unterstützt mehrere Workload-Frameworks , die Sie explizit aktivieren müssen, um die Planungs- und Ressourcenverwaltungsfunktionen von Kueue beim Ausführen von MPI Operator MPIJobs , KubeRaysRayJob und mehr zu verwenden.

Das folgende Beispiel ermöglicht:

  • LocalQueueMetrics bietet detaillierte Prometheus-Metriken, die für den Status und die Aktivität von LocalQueues spezifisch sind, und ermöglicht eine differenzierte Überwachung der Arbeitsauslastungssteuerung, der Kontingentreservierung und der Ressourcenauslastung.
  • TopologyAwareScheduling ermöglicht die Planung von Pods basierend auf der Topologie von Knoten in einem Pool oder Cluster, um die verfügbare Bandbreite zwischen den Pods zu verbessern.
  • Integrationen für Batch- und KI-Workload-Frameworks, einschließlich Kubeflow, Ray und JobSet.
  1. Erstellen und speichern Sie eine values.yaml Datei, um ihre Kueue-Konfiguration optional anzupassen.

    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
    

Hinweis

Aktualisieren Sie die Version nach Bedarf: kueue/releases

  1. Installieren Sie die neueste Version des Kueue-Controllers und der CRDs in einem dedizierten Namespace mit dem Befehl 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
    
  2. Bestätigen Sie den Bereitstellungsstatus mithilfe des helm list Befehls.

    helm list --namespace kueue-system
    

    Ihre Ausgabe sollte eine Status von deployed und wie folgt aussehen:

    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
    

Deinstallieren von Kueue

Wenn Sie den Kueue-Controller-Manager oder die benutzerdefinierten Kueue-Ressourcen in Ihrem AKS-Cluster nicht mehr benötigen, deinstallieren Sie das Helm-Repository, und entfernen Sie den dedizierten Namespace und die ressourcen.

  1. Deinstallieren Sie das Repository Kueue Helm mithilfe des helm uninstall Befehls.

    helm uninstall kueue --namespace kueue-system  
    
  2. Entfernen Sie den dedizierten Namespace und ressourcen mithilfe des kubectl delete Befehls.

    kubectl delete namespace kueue-system  
    

Bestätigen des Bereitstellungsstatus

Überprüfen Sie unabhängig davon, welche Installationsmethode Sie verwenden, ob die Kueue-Komponenten ausgeführt werden, bevor Sie Warteschlangen konfigurieren oder Workloads übermitteln.

  1. Stellen Sie sicher, dass die Controller-Pods ordnungsgemäß laufen.

    kubectl get deploy -n kueue-system
    

    Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

    NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
    kueue-controller-manager       1/1     1            1           7s
    
  2. Bestätigen Sie die Installation von Kueue-Ressourcen auf Ihrem AKS-Cluster:

    kubectl get crds | grep kueue
    

    Ihre Ausgabe sollte die folgenden Kueue-CRDs (Custom Resource Definitions) enthalten:

    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
    

Die genaue Gruppe von CRDs kann je nach installierter Kueue-Version variieren.

Nachdem Kueue läuft, konfigurieren Sie Warteschlangen, Ressourcenkontingente und Workloadzulassungsrichtlinien, bevor Sie Workloads übermitteln.

Nächste Schritte