Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Kueue proporciona colas de trabajos nativos de Kubernetes y admisión de recursos para cargas de trabajo por lotes e inteligencia artificial que se ejecutan en Azure Kubernetes Service (AKS). En este artículo se describen dos maneras de instalar Kueue en AKS:
- Extensión kueue administrada de AKS (versión preliminar): use la experiencia de extensión administrada Azure para implementar Kueue en el clúster de AKS.
- Kueue de código abierto con Helm: instale y configure Kueue directamente desde el chart de Helm de Kueue original.
Después de la instalación, use las API de Kueue, como ClusterQueue, LocalQueue y ResourceFlavor para controlar cómo se admiten las cargas de trabajo en los recursos del clúster.
¿Qué es Kueue?
Kueue es un proyecto de cola de trabajos nativos de Kubernetes de código abierto diseñado para administrar cargas de trabajo por lotes y garantizar una programación eficaz, justa y controlada por directivas en clústeres de Kubernetes. Kueue se integra con el ecosistema de planificación de Kubernetes para coordinar la asignación de recursos, la priorización y el control de capacidad de las cargas de trabajo. Kueue controla si las cargas de trabajo se admiten en función de las directivas y cuotas de recursos configuradas. Una vez admitida una carga de trabajo, el planificador de Kubernetes coloca los pods de la carga de trabajo en los nodos.
Kueue es útil para cargas de trabajo como:
- Entrenamiento en inteligencia artificial y aprendizaje automático
- tareas intensivas en GPU
- Procesamiento de datos
- Análisis de vulnerabilidades de seguridad
- Codificación multimedia y transcodificación de vídeo
- Generación de informes y análisis financiero
- Otras cargas de trabajo por lotes que pueden esperar a que haya suficientes recursos disponibles
Modele estas cargas de trabajo mediante un trabajo de Kubernetes, CronJob o una definición de recursos personalizados (CRD), como RayJob o Kubeflow MPIJob, y admítalas según sus ClusterQueue y LocalQueue
Comprender las colas de Kueue
Antes de enviar cargas de trabajo con Kueue, configure colas que controlan la admisión de cargas de trabajo.
Kueue usa dos recursos de cola principales:
-
ClusterQueuedefine cuotas de recursos en todo el clúster para los grupos de recursos compartidos (como las cuotas de CPU, memoria y GPU) y las directivas que determinan qué cargas de trabajo pueden admitirse. -
LocalQueueproporciona una cola con ámbito de espacio de nombres donde los usuarios envían cargas de trabajo y hacen referencia a ClusterQueue.
En el flujo siguiente se muestra cómo Kueue evalúa una carga de trabajo antes de que Kubernetes programe sus pods: Carga de trabajo (pod, Job, etc.) → LocalQueue → ClusterQueue → admisión de cargas de trabajo → programación de Kubernetes
Un LocalQueue identifica el ClusterQueue que debe evaluar la carga de trabajo.
ClusterQueue determina si hay suficiente cuota disponible para que se admita la carga de trabajo. Los administradores de la plataforma suelen configurar los recursos y las directivas en el nivel del clúster, mientras que los propietarios de las cargas de trabajo envían los trabajos a través de un LocalQueue.
Nota:
Para enviar una carga de trabajo a Kueue, agregue la etiqueta kueue.x-k8s.io/queue-name: <local-queue-name> a la carga de trabajo. Esta etiqueta asocia la carga de trabajo a LocalQueue, que la enruta a la ClusterQueue adecuada para la admisión.
Importante
El software de código abierto se menciona en toda la documentación y ejemplos de AKS. El software que implemente se excluye de los contratos de nivel de servicio de AKS, la garantía limitada y el soporte técnico de Azure. A medida que usa la tecnología de código abierto junto con AKS, consulte las opciones de soporte técnico disponibles en las comunidades y los mantenedores de proyectos respectivos para desarrollar un plan.
Microsoft asume la responsabilidad de crear los paquetes de código abierto que implementamos en AKS. Esa responsabilidad incluye ser plenamente responsable del proceso de compilación, escaneo, firma, validación y corrección rápida, junto con el control de los binarios en las imágenes de contenedor. Para obtener más información, consulte Administración de vulnerabilidades para AKS y Cobertura del soporte técnico de AKS.
Cuándo usar Kueue
Las cargas de trabajo de Batch e AI pueden tener requisitos de programación y administración de recursos que difieren de los servicios de Kubernetes de ejecución prolongada. Los administradores de cargas de trabajo de Batch (incluidos los administradores de plataformas o clústeres y los ingenieros de DevOps) y los usuarios de Batch (científicos de datos, desarrolladores e ingenieros de aprendizaje automático) pueden beneficiarse de la implementación de cargas de trabajo con Kueue en AKS.
Un administrador por lotes se centra en configurar, administrar y proteger la infraestructura de nivel de plataforma para admitir cargas de trabajo por lotes y tiene las siguientes responsabilidades:
- Aprovisionar y administrar grupos de nodos de AKS.
- Defina cuotas de recursos, ClusterQueues y directivas para el aislamiento de cargas de trabajo.
- Ajuste el escalado automático y la eficiencia de costos (como el escalador automático de clústeres o las cuotas de Kueue).
- Monitorizar el estado del clúster y de la cola.
- Crear y mantener plantillas y flujos de trabajo reutilizables.
Un usuario por lotes ejecuta trabajos de proceso intensivo o paralelo mediante la infraestructura de nivel de plataforma configurada por un administrador de lotes y normalmente:
- Enviar trabajos por lotes (como trabajos, cargas de trabajo o CRD de controlador personalizados) y supervisar el estado y las salidas del trabajo
- Seleccione la cola o el tipo de recurso adecuado para los trabajos (según la orientación de los administradores de lotes)
- Optimización de las especificaciones de trabajo para las necesidades de recursos y rendimiento
Prerrequisitos
- Un clúster de AKS existente Si no dispone de un clúster, cree uno mediante CLI de Azure, Azure PowerShell o el Azure Portal.
- CLI de Azure instalada en el equipo local. Para la instalación o la actualización, consulte Instalación de la CLI de Azure.
- Helm versión 3 o superior instalado.
Los requisitos previos adicionales dependen del método de instalación que elija.
Elección de cómo instalar Kueue
AKS admite dos enfoques de instalación para Kueue. Elija la opción que mejor coincida con cómo desea instalar y configurar Kueue en el clúster. Las API de Kubernetes de Kueue y los conceptos de puesta en cola siguen siendo los mismos independientemente del método de instalación. La principal diferencia es cómo se instalan y configuran los componentes de Kueue.
| Ruta de instalación | Description |
|---|---|
| Extensión Kueue administrada de AKS (versión preliminar) | Quiere implementar Kueue a través de la experiencia de extensión de clúster de AKS y usar la versión y la configuración de Kueue compatibles con la extensión. |
| Kueue de código abierto con Helm | Quiere instalar Kueue directamente desde el proyecto upstream y controlar la versión de Kueue, las feature gates, las integraciones y la configuración de Helm. |
Instalación y configuración de la extensión kueue administrada en Azure Kubernetes Service (versión preliminar)
La extensión Kueue administrada de AKS proporciona una ruta de instalación nativa de Azure para implementar Kueue en un clúster de AKS. Utilice este método de instalación si desea implementar Kueue a través de la experiencia de extensión de clúster de AKS en lugar de instalar directamente el chart de Helm upstream.
Requisitos previos de la extensión administrada
Antes de empezar, asegúrese de que tiene las siguientes herramientas:
- AKS versión 1.34 o posterior
- CLI de Azure versión 2.56 o posterior
- kubectl versión 1.33–1.35
- CLI de Azure k8s-extension versión 1.9.3 o posterior
Limitations
- La extensión de Kueue administrada por AKS actualmente solo admite Cluster Autoscaler, con la compatibilidad con el aprovisionamiento automático de nodos planificada.
- AKS Automatic aún no se admite. El soporte está previsto para una versión futura.
- Primero debe quitar las instalaciones existentes de OSS Kueue. Managed Kueue es un singleton de clúster y la instalación rechaza un controlador Kueue no administrado, incluso en otro espacio de nombres.
- Integraciones de cargas de trabajo admitidas: Kubernetes Job, Pod, Deployment, StatefulSet, JobSet, Ray, MPIJob y Trainer v2 TrainJob.
- Integraciones de cargas de trabajo no admitidas: trabajos heredados de Kubeflow v1, AppWrapper y LeaderWorkerSet.
Instala la extensión Kueue administrada
Establezca variables de entorno para la suscripción de Azure, el grupo de recursos y el clúster de AKS:
RESOURCE_GROUP="<resource-group-name>"
CLUSTER_NAME="<aks-cluster-name>"
Instale la extensión de clúster de Kueue:
az k8s-extension create \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name aks-kueue \
--extension-type microsoft.kueue \
--release-train preview
Verifica la instalación de la extensión
Obtenga el estado de aprovisionamiento y la versión instalada de la extensión Kueue. Compruebe que provisioningState es Succeeded y extensionState es Available. A continuación, pase a Confirmar el estado de la implementación.
az k8s-extension show \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name kueue \
--output json
Desinstala la extensión Kueue administrada
Al desinstalar Managed Kueue, se eliminan todos los recursos personalizados de Kueue del clúster, incluidos LocalQueues creados por el cliente, ClusterQueues, ResourceFlavors y otra configuración de Kueue. También borra los finalizers que bloquean la eliminación. Mantenga la configuración propiedad del cliente en Git o expórtela antes de desinstalar. Vuelva a aplicarlo después de reinstalar Kueue y antes de admitir Jobs en cola. Si usa GitOps, pause la conciliación antes de desinstalar y reanúdela después de que se reinstale Kueue.
Los trabajos de Kubernetes administrados por Kueue y sus pods no se eliminan:
- La ejecución de trabajos y pods continúa sin la administración de Kueue.
- Los trabajos en cola permanecen suspendidos y no crean pods.
- Después de que se reinstale Kueue, crea nuevas cargas de trabajo para los trabajos supervivientes que aún tengan una etiqueta de cola.
Si desea quitar Kueue administrado sin eliminar el clúster de AKS, elimine la extensión:
az k8s-extension delete \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name kueue \
--yes
Instalar Kueue con Helm
Requisitos previos de Helm
Antes de empezar, asegúrese de que tiene las siguientes herramientas:
- Helm v3.0.0 o versiones posteriores
- Permisos para crear y eliminar: grupos de recursos, clústeres de AKS, grupos de nodos de AKS y extensiones de clúster
Configurar funciones opcionales de Kueue
Aunque la mayoría de las características y directivas de programación que puede requerir están habilitadas de forma predeterminada, algunas no son como TopologyAwareScheduling. Si es necesario, vuelva a configurar la instalación de Kueue cambiando las puertas de características predeterminadas o configurando los valores de paramater de Kueue en el archivo values.yaml del gráfico de Helm.
Kueue admite varios marcos de carga de trabajo que necesita habilitar explícitamente para usar las funcionalidades de programación y administración de recursos de Kueue al ejecutar MPI Operator MPIJobs, RayJob de KubeRay y mucho más.
El siguiente ejemplo habilita:
-
LocalQueueMetricsproporciona métricas detalladas de Prometheus específicas del estado y la actividad de LocalQueues, lo que permite la supervisión detallada de la admisión de cargas de trabajo, la reserva de cuota y el uso de recursos. -
TopologyAwareSchedulingpermite programar pods en función de la topología de los nodos de un grupo o clúster para mejorar el ancho de banda disponible entre los pods. - Integraciones para marcos de carga de trabajo por lotes e IA, como Kubeflow, Ray y JobSet.
Cree y guarde un
values.yamlarchivo para personalizar opcionalmente la configuración de 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
Nota:
Actualizar la versión según sea necesario: kueue/releases
Instale la versión más reciente del controlador Kueue y los CRD utilizando el comando
helm installen un espacio de nombres dedicado.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.yamlConfirme el estado de implementación mediante el
helm listcomando .helm list --namespace kueue-systemLa salida debe incluir un
Statusdedeployedy un aspecto similar al siguiente: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
Desinstalar Kueue
Si ya no necesita el administrador de controladores de Kueue o los recursos personalizados de Kueue en el clúster de AKS, desinstale el repositorio de Helm y quite el espacio de nombres y los recursos dedicados.
Desinstale el repositorio de Helm de Kueue mediante el
helm uninstallcomando .helm uninstall kueue --namespace kueue-systemQuite el espacio de nombres dedicado y los recursos mediante el
kubectl deletecomando .kubectl delete namespace kueue-system
Confirmación del estado de la implementación
Independientemente del método de instalación que use, compruebe que los componentes de Kueue se están ejecutando antes de configurar colas o enviar cargas de trabajo.
Compruebe que los pods del controlador se están ejecutando correctamente.
kubectl get deploy -n kueue-systemEl resultado debería ser similar al ejemplo siguiente:
NAME READY UP-TO-DATE AVAILABLE AGE kueue-controller-manager 1/1 1 1 7s
Para la extensión Kueue administrada de AKS, la salida debe incluir tanto kueue-controller-manager como kueue-extension. Compruebe que ambas implementaciones muestran READY y AVAILABLE como 1.
Confirme la instalación de recursos de Kueue en el clúster de AKS:
kubectl get crds | grep kueueLa salida debe incluir los siguientes CRD de 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
El conjunto exacto de CRD puede variar en función de la versión de Kueue instalada.
Una vez que Kueue esté en ejecución, configure colas, cuotas de recursos y directivas de admisión de cargas de trabajo antes de enviar cargas de trabajo.