Skip to content

Architecture overview

Lab topology: Argo CD syncs into kueue-lab with Kueue controller, project LocalQueues, shared ClusterQueue, and Auto Mode node pools

Manifests are created under demo/ at the repository root during Deploy and Operate (demo/ is gitignored). Do not create config/ or examples/ at the repo root.

Created on Files under demo/
Cluster (Auto Mode) config/cluster.yaml
Argo CD capability config/argocd-capability.yaml, config/iam/argocd-trust-policy.json
Kueue via GitOps examples/argocd/in-cluster-secret.yaml, examples/argocd/kueue-application.yaml (includes KueueViz)
Queues and flavors examples/kueue/queues.yaml, examples/kueue/batch-nodepool.yaml, examples/workloads/sample-jobs.yaml
KueueViz dashboard Port-forward access (enabled via Helm enableKueueViz)
Verify batch examples/workloads/burst-jobs.sh

See Manifest reference for field-level detail.

project-a / project-b / project-c are Kubernetes namespaces + LocalQueues (simulated tenants). They are unrelated to Argo CD AppProject or Applications — Argo CD only deploys the Kueue controller.

Object Setting
ClusterQueue shared-batch Up to 10 CPU on Spot flavor (adjust via SPOT_CPU_QUOTA)
LocalQueue project-a Maps namespace project-a to shared queue
LocalQueue project-b Maps namespace project-b to shared queue
LocalQueue project-c Maps namespace project-c to shared queue
Sample Job 1 CPU request, label kueue.x-k8s.io/queue-name

When you submit more Jobs than quota allows, Kueue keeps excess work in Queued Workloads instead of creating a large Pending pod backlog.

ResourceFlavor spot / on-demand use Auto Mode labels karpenter.sh/capacity-type: spot and on-demand. If Spot capacity is tight, admitted jobs may still wait for nodes — Kueue quota and EC2 capacity are separate limits.