Cloud et infrastructure

Volcano v1.16 ajoute les files d'attente par espace de noms et l'ordonnancement à répartition équitable

Volcano v1.16 introduit NamespaceQueue pour l'isolation des locataires, un plugin fairshare pour le suivi de l'utilisation historique, ainsi que des optimisations de performance pour les charges de travail batch volumineuses.

Illustration de structures de files d'attente hiérarchiques sur une baie de serveurs
Illustration générée pour cet article

Traduit automatiquement depuis l'original anglais.

La Cloud Native Computing Foundation a publié Volcano v1.16.0, une mise à jour majeure du planificateur batch natif Kubernetes. Cette version introduit de nouveaux mécanismes de gestion des ressources multi-locataires, notamment des hiérarchies de files d'attente limitées aux espaces de noms et un plugin d'ordonnancement à répartition équitable. Elle découple également la découverte de topologie du noyau du planificateur, permettant une intégration plus large avec d'autres systèmes d'ordonnancement.

Ce qui s'est passé

Volcano v1.16.0 se concentre sur l'amélioration de l'équité et de la scalabilité pour les clusters exécutant des charges de travail batch ou IA lourdes. La version ajoute deux fonctionnalités majeures pour la gouvernance des ressources : NamespaceQueue et le plugin fairshare. NamespaceQueue permet aux locataires de gérer leurs propres files d'attente hiérarchiques et quotas au sein d'espaces de noms spécifiques, plutôt que de dépendre uniquement des administrateurs à l'échelle du cluster. Le plugin fairshare intègre la consommation historique des ressources dans les décisions d'ordonnancement, garantissant que les équipes utilisant des files d'attente partagées ne monopolisent pas les ressources au fil du temps.

La mise à jour étend également l'écosystème HyperNode en rendant le contrôleur HyperNode déployable indépendamment. Auparavant, l'utilisation d'HyperNode pour la découverte de topologie nécessitait l'exécution de la suite complète du planificateur Volcano. Désormais, les plateformes utilisant différents planificateurs peuvent déployer uniquement le contrôleur HyperNode pour gérer les supernœuds et la hiérarchie, exposant ces données via une API pour une consommation externe. De plus, la version inclut des améliorations de performance telles qu'un cache de tâches non ordonnançables (Unschedulable Job Cache), qui réduit les vérifications d'ordonnancement redondantes pour les tâches qui ne peuvent actuellement pas s'exécuter.

Comment cela fonctionne

La nouvelle fonctionnalité NamespaceQueue aligne la gestion des files d'attente sur les limites des espaces de noms Kubernetes. Les administrateurs autorisent des espaces de noms spécifiques à rattacher leurs hiérarchies de files d'attente à une file d'attente parente du cluster. Au sein de cette limite, les locataires peuvent définir leurs propres sous-files d'attente avec des capacités telles que des ressources garanties et des limites récupérables. Cette séparation permet aux équipes de gérer leur distribution interne des ressources sans avoir besoin de privilèges d'administrateur de cluster pour chaque modification. Le système garantit que différents espaces de noms peuvent utiliser des noms de files d'attente identiques sans conflit, car l'identité est limitée à l'espace de noms.

L'équité entre les files d'attente partagées est gérée par le nouveau plugin fairshare, inspiré de l'ordonnancement à répartition équitable de Slurm. Au lieu de considérer uniquement l'allocation actuelle, le plugin suit les secondes cumulatives de ressources pour chaque espace de noms. Il applique une décroissance exponentielle à cet historique, avec une demi-vie par défaut de quatre heures. Les espaces de noms ayant une consommation récente plus faible sont prioritaires lorsqu'ils rivalisent pour les ressources. Cela empêche une seule équipe de dominer une file d'attente partagée en soumettant continuellement des tâches, car leur poids d'utilisation historique augmente et finit par abaisser leur priorité jusqu'à ce que leur utilisation décroisse.

Les améliorations de performance se concentrent sur le cache de tâches non ordonnançables. Lorsqu'une tâche échoue à être ordonnancée en raison de files d'attente pleines ou de ressources manquantes, le planificateur la réévaluait précédemment à chaque cycle. Le nouveau cache enregistre la raison spécifique du rejet et ignore la réévaluation jusqu'à ce qu'un événement pertinent se produise, tel qu'un changement d'étiquette de nœud ou une libération de ressource. Un minuteur de surveillance garantit que les tâches mises en cache sont réessayées périodiquement, empêchant qu'elles restent bloquées indéfiniment si les indices d'événement échouent. Cela réduit la charge CPU dans les clusters ayant de grands arriérés de tâches en attente.

Détails clés

  • NamespaceQueue : Permet aux locataires de gérer des files d'attente hiérarchiques et des quotas au sein d'espaces de noms autorisés, séparant l'autorisation des pools de ressources de la gestion quotidienne des locataires.
  • Plugin Fairshare : Suit la consommation historique des ressources par espace de noms avec une décroissance exponentielle (demi-vie par défaut de quatre heures) pour améliorer l'équité à long terme dans les files d'attente partagées.
  • Cache de tâches non ordonnançables : Met en cache les raisons de rejet pour les tâches en attente et ignore les vérifications redondantes jusqu'à ce que des événements déclencheurs se produisent, réduisant la charge du planificateur.
  • Contrôleur HyperNode autonome : Peut être déployé indépendamment du planificateur Volcano, permettant à d'autres systèmes d'ordonnancement d'utiliser la découverte de topologie et la gestion des supernœuds de Volcano.
  • Anti-affinité de topologie PodGroup : De nouvelles règles permettent aux répliques d'inférence de se répartir sur différents supernœuds, réduisant le risque de défaillance simultanée dans un seul domaine de topologie.
  • Prise en charge de Kubernetes 1.36 : La version met à jour la compatibilité vers Kubernetes 1.36 et inclut des améliorations pour le scoring de l'allocation dynamique de ressources (DRA) et la gestion des accélérateurs.

Pourquoi c'est important

Pour les équipes d'ingénierie gérant des clusters Kubernetes partagés, notamment pour l'entraînement IA ou le calcul haute performance, la contention des ressources est un défi constant. L'introduction de NamespaceQueue donne aux responsables d'équipe les moyens de gérer leurs propres hiérarchies de ressources sans créer de goulot d'étranglement auprès des ingénieurs de plateforme centraux. Cette décentralisation accélère les flux de travail opérationnels tout en maintenant des garde-fous grâce aux files d'attente parentes autorisées par les administrateurs. Elle comble le fossé entre les politiques rigides au niveau du cluster et la flexibilité nécessaire aux équipes de développement agiles.

Le plugin fairshare répond à un point de douleur courant dans les environnements multi-locataires : le problème du « voisin bruyant ». En tenant compte de l'utilisation historique, le planificateur garantit qu'aucune équipe unique ne peut accaparer les ressources indéfiniment, même si elle a un volume élevé de tâches de courte durée. Cela conduit à un accès plus prévisible aux ressources de calcul pour toutes les équipes. Pendant ce temps, le cache de tâches non ordonnançables impacte directement la stabilité du cluster et l'efficacité des coûts en réduisant la surcharge du plan de contrôle associée aux grands arriérés de tâches en attente, permettant au planificateur de se concentrer sur les tâches qui peuvent réellement s'exécuter.

Ce que vous pouvez faire

  • Activez NamespaceQueue dans votre chart Helm en définissant custom.namespace_queue_enable=true et en spécifiant les espaces de noms autorisés dans vos spécifications de file d'attente parente Queue.
  • Configurez le plugin fairshare dans votre configuration de planificateur, en le plaçant avant le plugin DRF pour influencer l'ordre des tâches en attente basé sur l'utilisation historique.
  • Activez le cache de tâches non ordonnançables via la porte de fonctionnalité UnschedulableJobCache=true pour réduire la charge du planificateur dans les clusters ayant des tâches persistantes en attente.
  • Déployez le contrôleur HyperNode autonome en utilisant custom.hypernode_controller_mode=standalone si vous souhaitez utiliser la découverte de topologie de Volcano avec un autre planificateur.
  • Mettez à jour vos définitions PodGroup pour inclure des règles d'anti-affinité de topologie si vous devez répartir les répliques d'inférence sur différents supernœuds pour une disponibilité accrue.
  • Examinez vos CRDs et permissions RBAC avant la mise à niveau, car NamespaceQueue nécessite des mises à jour spécifiques pour prendre en charge les nouvelles ressources nommées.
  • #kubernetes
  • #batch scheduling
  • #volcano
  • #resource management
  • #ai infrastructure

Outils de la Boutique Bytechap

Continuer la lecture

Tous les articles