Nube e infraestructura

Volcano v1.16 añade colas por namespace y programación de reparto justo

Volcano v1.16 introduce NamespaceQueue para el aislamiento de inquilinos, un plugin fairshare para el seguimiento del uso histórico y optimizaciones de rendimiento para cargas de trabajo batch masivas.

Ilustración de estructuras de colas jerárquicas en un rack de servidores
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

La Cloud Native Computing Foundation ha lanzado Volcano v1.16.0, una actualización significativa del planificador batch nativo de Kubernetes. Esta versión introduce nuevos mecanismos para la gestión de recursos multiinquilino, incluyendo jerarquías de colas a nivel de namespace y un plugin de programación de reparto justo (fair-share). También desacopla el descubrimiento de topología del planificador principal, permitiendo una integración más amplia con otros sistemas de planificación.

Qué ha ocurrido

Volcano v1.16.0 se centra en mejorar la equidad y la escalabilidad de los clústeres que ejecutan cargas pesadas de batch o IA. La versión añade dos funciones principales para la gobernanza de recursos: NamespaceQueue y el plugin fairshare. NamespaceQueue permite a los inquilinos gestionar sus propias colas jerárquicas y cuotas dentro de namespaces específicos, en lugar de depender exclusivamente de administradores globales del clúster. El plugin fairshare incorpora el consumo histórico de recursos en las decisiones de planificación, asegurando que los equipos que utilizan colas compartidas no monopolicen los recursos con el tiempo.

La actualización también expande el ecosistema HyperNode al hacer que el controlador HyperNode sea independiente. Anteriormente, usar HyperNode para el descubrimiento de topología requería ejecutar toda la suite del planificador Volcano. Ahora, las plataformas que utilizan diferentes planificadores pueden desplegar solo el controlador HyperNode para gestionar supernodos y jerarquías, exponiendo estos datos mediante una API para su consumo externo. Además, la versión incluye mejoras de rendimiento como la Caché de Jobs No Programables (Unschedulable Job Cache), que reduce las comprobaciones redundantes de planificación para jobs que actualmente no pueden ejecutarse.

Cómo funciona

La nueva función NamespaceQueue alinea la gestión de colas con los límites de namespace de Kubernetes. Los administradores autorizan namespaces específicos para adjuntar sus jerarquías de colas a una cola padre del clúster (Cluster Queue). Dentro de ese límite, los inquilinos pueden definir sus propias subcolas con capacidades como recursos garantizados y límites recuperables. Esta separación permite a los equipos gestionar su distribución interna de recursos sin necesitar privilegios de cluster-admin para cada cambio. El sistema garantiza que diferentes namespaces puedan utilizar nombres de cola idénticos sin conflictos, ya que la identidad está limitada al ámbito del namespace.

La equidad entre colas compartidas es gestionada por el nuevo plugin fairshare, inspirado en la programación de reparto justo de Slurm. En lugar de mirar solo la asignación actual, el plugin rastrea los segundos de recurso acumulados para cada namespace. Aplica una decadencia exponencial a este historial, con una vida media predeterminada de cuatro horas. Los namespaces con menor consumo reciente tienen prioridad cuando compiten por recursos. Esto evita que un único equipo domine una cola compartida enviando jobs continuamente, ya que su peso de uso histórico aumenta y eventualmente baja su prioridad hasta que su uso decae.

Las mejoras de rendimiento se centran en la Caché de Jobs No Programables. Cuando un job falla al programarse debido a colas llenas o falta de recursos, el planificador previamente lo reevaluaba en cada ciclo. La nueva caché registra la razón específica del rechazo y omite la reevaluación hasta que ocurre un evento relevante, como un cambio en la etiqueta de un nodo o la liberación de recursos. Un temporizador de vigilancia (watchdog) asegura que los jobs cacheados sean reintentados periódicamente, evitando que queden bloqueados indefinidamente si fallan las pistas de eventos. Esto reduce la sobrecarga de CPU en clústeres con grandes acumulaciones de jobs pendientes.

Detalles clave

  • NamespaceQueue: Permite a los inquilinos gestionar colas jerárquicas y cuotas dentro de namespaces autorizados, separando la autorización del pool de recursos de la gestión diaria del inquilino.
  • Plugin Fairshare: Rastrea el consumo histórico de recursos por namespace con decadencia exponencial (vida media predeterminada de cuatro horas) para mejorar la equidad a largo plazo en colas compartidas.
  • Caché de Jobs No Programables: Almacena las razones de rechazo para jobs pendientes y omite comprobaciones redundantes hasta que ocurren eventos desencadenantes, reduciendo la carga del planificador.
  • Controlador HyperNode independiente: Puede desplegarse independientemente del planificador Volcano, permitiendo a otros sistemas de planificación utilizar el descubrimiento de topología y la gestión de supernodos de Volcano.
  • Anti-afinidad de topología PodGroup: Nuevas reglas permiten que las réplicas de inferencia se distribuyan entre diferentes supernodos, reduciendo el riesgo de fallo simultáneo en un único dominio de topología.
  • Soporte para Kubernetes 1.36: La versión actualiza la compatibilidad a Kubernetes 1.36 e incluye mejoras para la puntuación de Asignación Dinámica de Recursos (DRA) y el manejo de aceleradores.

Por qué importa

Para los equipos de ingeniería que gestionan clústeres de Kubernetes compartidos, especialmente para entrenamiento de IA o computación de alto rendimiento, la contención de recursos es un desafío constante. La introducción de NamespaceQueue empodera a los líderes de equipo para gestionar sus propias jerarquías de recursos sin crear cuellos de botella en los ingenieros de plataforma central. Esta descentralización acelera los flujos de trabajo operativos mientras mantiene salvaguardas a través de colas padre autorizadas por administradores. Cierra la brecha entre políticas rígidas a nivel de clúster y la flexibilidad necesaria para equipos de desarrollo ágiles.

El plugin fairshare aborda un punto de dolor común en entornos multiinquilino: el problema del "vecino ruidoso". Al tener en cuenta el uso histórico, el planificador asegura que ningún equipo pueda acaparar recursos indefinidamente, incluso si tienen un alto volumen de jobs de corta duración. Esto conduce a un acceso más predecible a los recursos de cómputo para todos los equipos. Mientras tanto, la Caché de Jobs No Programables impacta directamente en la estabilidad del clúster y la eficiencia de costes al reducir la sobrecarga del plano de control asociada con grandes acumulaciones de jobs pendientes, permitiendo al planificador centrarse en los jobs que realmente pueden ejecutarse.

Qué puedes hacer

  • Habilita NamespaceQueue en tu chart de Helm estableciendo custom.namespace_queue_enable=true y definiendo los namespaces permitidos en las especificaciones de tu cola padre (Queue).
  • Configura el plugin fairshare en la configuración de tu planificador, colocándolo antes del plugin DRF para influir en el ordenamiento de jobs pendientes basado en el uso histórico.
  • Activa la Caché de Jobs No Programables mediante la feature gate UnschedulableJobCache=true para reducir la carga del planificador en clústeres con jobs persistentemente pendientes.
  • Despliega el controlador HyperNode independiente usando custom.hypernode_controller_mode=standalone si deseas utilizar el descubrimiento de topología de Volcano con un planificador diferente.
  • Actualiza tus definiciones de PodGroup para incluir reglas de anti-afinidad de topología si necesitas distribuir réplicas de inferencia entre diferentes supernodos para mayor disponibilidad.
  • Revisa tus CRDs y permisos RBAC antes de actualizar, ya que NamespaceQueue requiere actualizaciones específicas para soportar los nuevos recursos namespaced.
  • #kubernetes
  • #batch scheduling
  • #volcano
  • #resource management
  • #ai infrastructure

Herramientas de la Tienda de Bytechap

Seguir leyendo

Todos los artículos