Architecture overview
Lab topology
Section titled “Lab topology”What you create in the lab
Section titled “What you create in the lab”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.
Quota model for this lab
Section titled “Quota model for this lab”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.
Spot note
Section titled “Spot note”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.