>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML Beveiliging
Go

Kueue - Orde brengen in Kubernetes-taakwachtrijen

2.626 sterren

Kueue Logo

Stel je dit voor: je Kubernetes-cluster draait op volle capaciteit. Aan de ene kant worden kritieke ML-modellen getraind, aan de andere kant hebben analisten resource-intensieve ETL-processen gestart, en ergens op de achtergrond draaien tientallen CI/CD-taken. Dit alles vereist GPU, CPU, geheugen, en natuurlijk wil iedereen resources "nu meteen". Lijkt dit bekend? Het resultaat is dat sommige taken inactief zijn terwijl andere resources wegnemen van taken met hogere prioriteit, en het cluster inefficiënt werkt. Dit is een hoofdpijn voor iedereen die batch-workloads in Kubernetes beheert.

Dit is precies het probleem dat Kueue oplost — een project van kubernetes-sigs, wat letterlijk "wachtrij" betekent. Het is niet zomaar een andere scheduler, maar een volwaardige wachtrijmanager die diep integreert met Kubernetes en waarmee je de levenscyclus van je taken echt efficiënt kunt beheren.

Wat is Kueue en wie heeft het nodig?

Kueue is een set van API's en een controller die fungeert als een intelligente dispatcher voor je Kubernetes-taken. De hoofdtaak is om te beslissen wanneer een taak kan worden toegelaten voor uitvoering (d.w.z. wanneer pods voor hem kunnen worden aangemaakt) en wanneer het de moeite waard kan zijn om deze te stoppen (actieve pods verwijderen) om resources vrij te maken voor taken met hogere prioriteit.

Wie heeft hier baat bij? Allereerst teams die actief Kubernetes gebruiken voor:

  • Machine learning en dataverwerking: ML-engineers en data scientists starten vaak talloze trainingsjobs die grote hoeveelheden GPU en CPU vereisen. Kueue helpt deze dure resources eerlijk te verdelen.
  • ETL-processen: Data-extractie, -transformatie en -laden kunnen zeer resource-intensief zijn en vereisen zorgvuldige planning.
  • CI/CD-pipelines: Geautomatiseerde builds en tests, vooral in grote projecten, kunnen piekbelastingen op het cluster genereren.
  • Alle andere batch-taken: Als je achtergrondprocessen hebt die periodiek draaien en om resources concurreren, is Kueue je redder in nood.

In wezen stelt Kueue je in staat om een chaotische stroom van taken te transformeren naar een ordelijke, efficiënt beheerde wachtrij waar resources worden verdeeld volgens jouw regels en prioriteiten.

Belangrijkste Kueue-functies die het spel veranderen

Kueue zet taken niet zomaar in een wachtrij — het biedt een heel arsenaal aan tools voor fijnafstelling en optimalisatie. Laten we naar de interessantste kijken.

1. Slimme taak- en prioriteitsbeheer

Vergeet handmatige resource-toewijzing of scripts die proberen een wachtrij te simuleren. Kueue biedt flexibele taakbeheermechanismen:

  • Prioriteiten: Je kunt prioriteiten toewijzen aan verschillende taken. Een taak voor het trainen van een kritiek model kan bijvoorbeeld een hogere prioriteit hebben dan een nachtrapport.
  • Wachtrijstrategieën: Kueue ondersteunt twee hoofdstrategieën:
    • StrictFIFO: Klassieke "wie het eerst komt, het eerst wordt geholpen" wachtrij. Simpel en straightforward.
    • BestEffortFIFO: Een flexibelere aanpak die probeert taken zo vroeg mogelijk te starten, zelfs als ze niet vooraan in de wachtrij staan, mits er gratis resources beschikbaar zijn. Dit voorkomt cluster-inactieve tijd wanneer resources beschikbaar zijn maar het "hoofd" van de wachtrij op iets heel specifieks wacht.

Stel je voor dat je meerdere teams hebt, elk met hun eigen taken. Kueue stelt je in staat om te definiëren wie toegang krijgt tot het cluster en wanneer, op basis van vooraf gedefinieerde regels.

2. Geavanceerd resourcebeheer en eerlijke verdeling

Dit is waarschijnlijk een van de krachtigste aspecten van Kueue. Het gaat verder dan basis Kubernetes-scheduling en biedt:

  • Resource Flavor Fungibility: Stel dat je GPU's van verschillende modellen hebt (bijv. NVIDIA A100 en V100). Kueue kan zo worden geconfigureerd dat een taak die een GPU vereist, elke van hen kan gebruiken als deze gratis is, in plaats van te wachten op een specifiek model. Dit maximaliseert hardwarebenutting.
  • Fair Sharing en Cohorts: Als je meerdere teams of afdelingen hebt die één cluster gebruiken, kan Kueue garanderen dat geen van hen resources monopoliseert. Je kunt wachtrijen combineren tot "cohorts" en quota's instellen zodat resources eerlijk worden verdeeld. Het ML-team krijgt bijvoorbeeld 60% van de resources, en het analyseteam — 40%.
  • Preemption: In kritieke situaties kan Kueue taken met lagere prioriteit preempten (stoppen) om resources vrij te maken voor belangrijkere. Dit is vooral waardevol wanneer urgente taken of herstel van storingen betrokken zijn.

3. Brede integratie met populaire taaktypen

Kueue is niet gebonden aan één enkel taaktype. Het heeft ingebouwde ondersteuning voor veel populaire workloads, waardoor het een veelzijdig tool is:

  • Standaard Kubernetes BatchJob: Natuurlijk kunnen we niet zonder.
  • Kubeflow training jobs: Perfect voor ML-engineers die Kubeflow gebruiken voor modeltraining.
  • RayJob en RayCluster: Ondersteuning voor Ray-gebaseerde gedistribueerde computing.
  • JobSet: Voor het beheren van groepen gerelateerde jobs.
  • Plain Pod en Pod Groups: Zelfs voor eenvoudige pods en hun groepen.
  • Deployments en StatefulSets: Interessant genoeg kan Kueue zelfs serving-workloads beheren, waardoor je training en inferentie kunt mixen en resources dynamisch kunt toewijzen.

Dit betekent dat je het wiel niet opnieuw hoeft uit te vinden voor elk taaktype — Kueue is klaar om met je stack te werken out of the box.

4. Automatisch schalen en multi-clustering

In de moderne wereld zijn clusters zelden statisch en soms beperkt tot één geografische locatie. Kueue houdt rekening met deze realiteiten:

  • Geavanceerde ondersteuning voor automatisch schalen: Kueue kan integreren met Cluster Autoscaler, met provisioningRequest voor slimmer cluster-schaling, waarbij nieuwe nodes alleen worden aangevraagd wanneer dat echt noodzakelijk is voor taken in de wachtrij.
  • MultiKueue voor multi-cluster dispatching: Dit is fantastisch! Als je meerdere clusters hebt (bijv. in verschillende regio's of clouds), stelt MultiKueue je in staat om gratis capaciteit te zoeken en taken ertussen te migreren. Dit biedt ongelooflijke flexibiliteit en veerkracht, waardoor effectief gebruik van globale resources mogelijk wordt.
  • Topology-Aware Scheduling: Communicatiebandbreedte tussen pods optimaliseren door scheduling die rekening houdt met datacenter-topologie. Dit is cruciaal voor high-performance computing.

Technische details: onder de motorkap van Kueue

Kueue is gebouwd als een native Kubernetes-controller, wat diepe integratie met het ecosysteem betekent. Het breidt Kubernetes uit met zijn eigen Custom Resource Definitions (CRD) voor het definiëren van wachtrijen, quota's en workloads. Hierdoor kun je het beheren met standaard kubectl-commando's, wat erg handig is.

Het project wordt actief ontwikkeld onder kubernetes-sigs (Special Interest Group), wat naleving van Kubernetes-standaarden en langetermijnondersteuning garandeert. Momenteel is de API op versie v1beta2, wat zijn volwassenheid en stabiliteit aangeeft. Het team werkt actief aan de overgang naar v1.

Ik was aangenaam verrast door het testniveau van het project: uitgebreide unit-, integratie- en E2E-tests voor verschillende Kubernetes-versies (tot 1.35) en use cases, inclusief MultiKueue en Topology Aware Scheduling. Dit geeft vertrouwen in de betrouwbaarheid van de oplossing.

Bovendien biedt Kueue Prometheus-metrics, waardoor je eenvoudig wachtrij- en resourcestatussen kunt monitoren, en heeft het gedetailleerde documentatie om je snel op weg te helpen.

Praktische toepassing: hoe het er in het echt uitziet

Laten we kijken hoe Kueue je workflow kan veranderen:

  1. ML-platform: Een data scientist dient een modeltrainingstaak in. In plaats van te wachten tot een specifieke GPU gratis wordt, plaatst Kueue de taak in een wachtrij. Wanneer een geschikte GPU beschikbaar komt (mogelijk nadat een taak met lagere prioriteit is voltooid of zelfs na preemption), start Kueue de training. Als het cluster overbelast is, kan MultiKueue de taak automatisch omleiden naar een ander, minder belast cluster.
  2. Big data-verwerking: Een nachtelijk ETL-proces start maar ontdekt dat resources beperkt zijn vanwege overdag analytische queries. Kueue plaatst het in een wachtrij, en wanneer resources worden vrijgegeven (of taken met lagere prioriteit worden gepreempt), start het proces. In dit geval kan Kueue garanderen dat geen enkel team alle resources "opeet", wat eerlijke verdeling确保t.
  3. CI/CD voor microservices: Een ontwikkelteam commit actief code en start tientallen builds en tests. Kueue beheert deze taken en garandeert dat kritieke builds (bijv. voor productie) voorrang krijgen boven test-branches, en dat cluster-resources zo efficiënt mogelijk worden gebruikt, zonder inactieve tijd.

Kueue installeren is vrij eenvoudig en vereist Kubernetes 1.29 of nieuwer. Slechts één kubectl apply-commando:

kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.15.2/manifests.yaml

Daarna kun je wachtrijen configureren en je taken starten met behulp van voorbeelden uit de documentatie.

Is Kueue het proberen waard?

Absoluut ja, als je te maken hebt met batch-taakbeheerproblemen in Kubernetes. Kueue is niet zomaar een tool — het is een hele filosofie van efficiënt resourcegebruik en eerlijke lastverdeling.

Het is vooral geschikt voor:

  • Clusterbeheerders en SRE-engineers: Voor het brengen van orde, optimaliseren van resourcebenutting en waarborgen van stabiliteit.
  • MLOps-engineers en Data Scientists: Voor efficiënt beheren van trainings-, inferentie- en experimentatietaken.
  • Ontwikkelaars die Kubernetes gebruiken voor CI/CD of achtergrondtaken: Voor het versnellen van processen en verlagen van infrastructuurkosten.

Kueue is een volwassen, goed getest en actief ontwikkelend project met een sterke community. Het wordt al door veel bedrijven in productie gebruikt, wat het beste bewijs is van zijn betrouwbaarheid en praktische waarde. Als je het maximale uit je Kubernetes-cluster wilt halen en af wilt van taakchaos, geef Kueue een kans — het zal je niet teleurstellen!

Bekijk de Kueue-documentatie en word lid van de community op Slack om meer te leren en deze krachtige tool vandaag nog te gebruiken.

Gerelateerde projecten