About Kueue
Kueue is a Kubernetes-native system that manages jobs using quotas. Kueue makes job decisions based on resource availability, job priorities, and the quota policies defined in your cluster queues. Kueue determines when a job waits for available resources, when a job starts (Pods created), and when a job is preempted (active Pods deleted). Use Kueue on CKS to prioritize batch, AI, and ML workloads, share GPU capacity fairly across teams, and reduce idle time on expensive accelerators. CKS supports Kueue by default. To simplify getting started, CoreWeave provides a Helm chart for installing Kueue. Thecks-kueue chart also includes a kueue subchart, used to configure Kueue for deployment into your CKS cluster.
When you install Kueue through the CoreWeave Helm chart, Kueue metrics are automatically scraped and ingested into the Kueue Metrics Dashboard in CoreWeave Grafana.
Usage
Install thecks-kueue Helm chart to deploy Kueue into your CKS cluster. The chart installs the Kueue controller and CRDs so you can begin defining queues and submitting workloads.
Add the CoreWeave Helm repo so Helm can locate the cks-kueue chart.
kueue-system namespace and the Kueue CRDs are available for use in your cluster.
Sample Kueue configuration
After installing thecks-kueue chart, use the following sample configuration to set up a basic Kueue environment for CKS. This configuration includes several key Kueue components:
ResourceFlavor: Defines the characteristics of compute resources (CPU, memory, GPUs) available in your cluster.ClusterQueue: Establishes resource quotas and admission policies across your entire cluster.LocalQueue: Creates namespaced queues that reference aClusterQueuefor job submission.WorkloadPriorityClass: Defines priority levels for jobs to determine scheduling order and preemption behavior.
For more information, see Using Kueue with Ray on CKS.
Observability
This section describes how to monitor Kueue activity after the chart is installed. CoreWeave Grafana provides a Kueue Metrics Dashboard which you can use to monitor your Kueue cluster.Topology-aware scheduling
Topology-aware scheduling (TAS) lets Kueue improve scheduling decisions by considering the physical topology of your cluster’s Nodes. This is important for HPC, AI, and ML workloads, where network latency between Nodes can be a performance bottleneck. TAS can co-locate a job’s Pods to minimize communication overhead and maximize performance. TheTopologyAwareScheduling feature in the Kueue controller is enabled by default. However, to use it, you must adjust some of the Kueue resources so that Kueue references the Node labels that describe your cluster’s topology.
After the Helm chart is installed and the Kueue CRDs exist, choose one of the following topologies based on CKS Node labels for Kueue to use:
- The
infinibandtopology is for instance types that are a part of InfiniBand fabrics. See About GPU instances to find InfiniBand connected instances. - The
multinode-nvlink-ibtopology extends theinfinibandtopology to also include instance types with rack-scale NVLink. See About GPU instances to find NVLink connected rack instances. - The
hostnametopology is for instance types without InfiniBand fabrics. It prevents Kueue from admitting workloads when total capacity is sufficient but fragmented across Nodes.
Topology CRs appear in the cluster.
The following example configuration is an adjustment of the preceding one. It demonstrates how to use the Topology resources by referencing them in ResourceFlavor resources, which are then used by ClusterQueue and LocalQueue resources.
Each ResourceFlavor must select a disjoint set of Nodes. Use nodeLabels so that no Node matches more than one flavor. Overlapping selectors cause a Node to belong to multiple flavors, which leads to ambiguous quota accounting and unpredictable scheduling.
Match each topologyName to a Node pool whose hardware actually provides that topology. For example, pair the infiniband topology with an InfiniBand connected pool like B200, the multinode-nvlink-ib topology with a rack-scale NVLink pool like GB200, and the hostname topology with pools that lack InfiniBand.
Example jobs with topology constraints
Kueue provides several annotations for expressing topology constraints on a job. Two of the most common are:kueue.x-k8s.io/podset-required-topologyrequires that all Pods in a job are scheduled within the same topology domain. The job stays pending until a domain can fit it.kueue.x-k8s.io/podset-preferred-topologytreats the topology domain as best effort. Kueue tries to fit all Pods within the same domain, but falls back to spreading across domains if needed.