Cloud & Infrastruktur

Volcano v1.16 führt Namespace-Queues und Fair-Share-Scheduling ein

Volcano v1.16 stellt NamespaceQueue für die Mandantenisolation, ein Fairshare-Plugin zur Nachverfolgung der historischen Nutzung sowie Leistungsoptimierungen für große Batch-Workloads vor.

Illustration hierarchischer Queue-Strukturen auf einem Server-Rack
Für diesen Artikel generierte Illustration

Automatisch aus dem englischen Original übersetzt.

Die Cloud Native Computing Foundation hat Volcano v1.16.0 veröffentlicht, ein bedeutendes Update des Kubernetes-nativen Batch-Schedulers. Diese Version führt neue Mechanismen für das Multi-Tenant-Ressourcenmanagement ein, darunter namespace-spezifische Queue-Hierarchien und ein Fair-Share-Scheduling-Plugin. Zudem wird die Topologieerkennung vom Kern-Scheduler entkoppelt, was eine breitere Integration mit anderen Scheduling-Systemen ermöglicht.

Was ist passiert

Volcano v1.16.0 konzentriert sich auf die Verbesserung von Fairness und Skalierbarkeit für Cluster, die schwere Batch- oder AI-Workloads ausführen. Das Release fügt zwei Hauptfunktionen für die Ressourcen-Governance hinzu: NamespaceQueue und das fairshare-Plugin. NamespaceQueue ermöglicht es Mandanten, ihre eigenen hierarchischen Queues und Quotas innerhalb spezifischer Namespaces zu verwalten, anstatt sich ausschließlich auf clusterweite Administratoren zu verlassen. Das fairshare-Plugin integriert den historischen Ressourcenverbrauch in die Scheduling-Entscheidungen und stellt sicher, dass Teams, die gemeinsame Queues nutzen, die Ressourcen im Laufe der Zeit nicht monopolisieren.

Das Update erweitert außerdem das HyperNode-Ökosystem, indem der HyperNode-Controller unabhängig deploybar gemacht wird. Zuvor erforderte die Verwendung von HyperNode für die Topologieerkennung den Betrieb der vollständigen Volcano-Scheduler-Suite. Nun können Plattformen, die unterschiedliche Scheduler verwenden, nur den HyperNode-Controller bereitstellen, um Supernodes und Hierarchien zu verwalten und diese Daten über eine API für externe Nutzer bereitzustellen. Zusätzlich enthält das Release Leistungsverbesserungen wie einen Unschedulable Job Cache, der redundante Scheduling-Prüfungen für Jobs reduziert, die derzeit nicht ausgeführt werden können.

Wie es funktioniert

Die neue Funktion NamespaceQueue richtet das Queue-Management an den Grenzen der Kubernetes-Namespaces aus. Administratoren autorisieren bestimmte Namespaces, ihre Queue-Hierarchien an einer übergeordneten Cluster-Queue anzuhängen. Innerhalb dieser Grenze können Mandanten ihre eigenen Sub-Queues mit Funktionen wie garantierten Ressourcen und rückforderbaren Limits definieren. Diese Trennung ermöglicht es Teams, ihre interne Ressourcenzuweisung zu verwalten, ohne für jede Änderung Privilegien als Cluster-Admin zu benötigen. Das System stellt sicher, dass verschiedene Namespaces identische Queue-Namen ohne Konflikte verwenden können, da die Identität auf den Namespace beschränkt ist.

Fairness über gemeinsame Queues hinweg wird durch das neue fairshare-Plugin gehandhabt, das sich am Fair-Share-Scheduling von Slurm orientiert. Anstatt nur die aktuelle Allokation zu betrachten, verfolgt das Plugin kumulative Resource-Seconds für jeden Namespace. Es wendet einen exponentiellen Zerfall auf diese Historie an, mit einer Standard-Halbwertszeit von vier Stunden. Namespaces mit geringerem kürzlichem Verbrauch werden bei der Konkurrenz um Ressourcen priorisiert. Dies verhindert, dass ein einzelnes Team eine gemeinsame Queue dominiert, indem es kontinuierlich Jobs einreicht, da ihr Gewicht basierend auf der historischen Nutzung steigt und ihre Priorität schließlich senkt, bis ihre Nutzung abgeklungen ist.

Leistungsverbesserungen konzentrieren sich auf den Unschedulable Job Cache. Wenn ein Job aufgrund voller Queues oder fehlender Ressourcen nicht geplant werden kann, evaluierte der Scheduler ihn zuvor in jedem Zyklus neu. Der neue Cache speichert den spezifischen Grund für die Ablehnung und überspringt die Neubewertung, bis ein relevantes Ereignis eintritt, wie z. B. eine Änderung eines Node-Labels oder die Freigabe von Ressourcen. Ein Watchdog-Timer stellt sicher, dass gecachte Jobs periodisch erneut versucht werden, um zu verhindern, dass sie dauerhaft blockiert bleiben, falls Ereignis-Hinweise fehlschlagen. Dies reduziert die CPU-Last in Clustern mit großen ausstehenden Backlogs.

Wichtige Details

  • NamespaceQueue: Ermöglicht es Mandanten, hierarchische Queues und Quotas innerhalb autorisierter Namespaces zu verwalten und trennt die Autorisierung des Ressourcenpools vom täglichen Mandanten-Management.
  • Fairshare-Plugin: Verfolgt den historischen Ressourcenverbrauch pro Namespace mit exponentiellem Zerfall (Standard-Halbwertszeit vier Stunden), um die langfristige Fairness in gemeinsamen Queues zu verbessern.
  • Unschedulable Job Cache: Speichert Ablehnungsgründe für ausstehende Jobs und überspringt redundante Prüfungen, bis auslösende Ereignisse eintreten, wodurch die Last des Schedulers reduziert wird.
  • Standalone HyperNode-Controller: Kann unabhängig vom Volcano-Scheduler bereitgestellt werden, sodass andere Scheduling-Systeme Volcanos Topologieerkennung und Supernode-Verwaltung nutzen können.
  • PodGroup-Topologie-Anti-Affinität: Neue Regeln ermöglichen es Inferenz-Replikaten, sich über verschiedene Supernodes zu verteilen, was das Risiko eines gleichzeitigen Ausfalls in einem einzelnen Topologie-Domäne reduziert.
  • Unterstützung für Kubernetes 1.36: Das Release aktualisiert die Kompatibilität auf Kubernetes 1.36 und umfasst Verbesserungen für Dynamic Resource Allocation (DRA) Scoring und die Handhabung von Beschleunigern.

Warum das wichtig ist

Für Engineering-Teams, die gemeinsame Kubernetes-Cluster verwalten, insbesondere für AI-Training oder High-Performance Computing, ist Ressourcenkonkurrenz eine ständige Herausforderung. Die Einführung von NamespaceQueue befähigt Teamleiter, ihre eigenen Ressourcenhierarchien zu verwalten, ohne auf zentrale Plattform-Ingenieure als Engpass angewiesen zu sein. Diese Dezentralisierung beschleunigt operative Workflows, während Guardrails durch administrator-autorisierte übergeordnete Queues erhalten bleiben. Sie überbrückt die Lücke zwischen starren Cluster-Level-Richtlinien und der Flexibilität, die agile Entwicklungsteams benötigen.

Das fairshare-Plugin adressiert einen häufigen Schmerzpunkt in Multi-Tenant-Umgebungen: das "Noisy Neighbor"-Problem. Durch die Berücksichtigung der historischen Nutzung stellt der Scheduler sicher, dass kein einzelnes Team Ressourcen unbegrenzt beanspruchen kann, selbst wenn es eine hohe Anzahl kurzlebiger Jobs hat. Dies führt zu vorhersehbarerem Zugang zu Rechenressourcen für alle Teams. Währenddessen wirkt sich der Unschedulable Job Cache direkt auf die Cluster-Stabilität und Kosteneffizienz aus, indem er den Control-Plane-Overhead im Zusammenhang mit großen ausstehenden Job-Backlogs reduziert und es dem Scheduler ermöglicht, sich auf Jobs zu konzentrieren, die tatsächlich ausgeführt werden können.

Was Sie tun können

  • Aktivieren Sie NamespaceQueue in Ihrem Helm-Chart, indem Sie custom.namespace_queue_enable=true setzen und zulässige Namespaces in Ihren übergeordneten Queue-Specs definieren.
  • Konfigurieren Sie das fairshare-Plugin in Ihrer Scheduler-Konfiguration und platzieren Sie es vor dem DRF-Plugin, um die Reihenfolge ausstehender Jobs basierend auf der historischen Nutzung zu beeinflussen.
  • Aktivieren Sie den Unschedulable Job Cache über das Feature Gate UnschedulableJobCache=true, um die Scheduler-Last in Clustern mit persistenten ausstehenden Jobs zu reduzieren.
  • Stellen Sie den standalone HyperNode-Controller bereit, indem Sie custom.hypernode_controller_mode=standalone verwenden, wenn Sie Volcanos Topologieerkennung mit einem anderen Scheduler nutzen möchten.
  • Aktualisieren Sie Ihre PodGroup-Definitionen, um Topologie-Anti-Affinitätsregeln einzuschließen, wenn Sie Inferenz-Replikate über verschiedene Supernodes verteilen müssen, um die Verfügbarkeit zu erhöhen.
  • Überprüfen Sie Ihre CRDs und RBAC-Berechtigungen vor dem Upgrade, da NamespaceQueue spezifische Updates erfordert, um die neuen namespaced Ressourcen zu unterstützen.
  • #kubernetes
  • #batch scheduling
  • #volcano
  • #resource management
  • #ai infrastructure

Tools aus dem Bytechap-Shop

Weiterlesen

Alle Artikel