kueue
by
kubernetes-sigs

Description: Kubernetes-native Job Queueing

View kubernetes-sigs/kueue on GitHub ↗

Summary Information

Updated 1 hour ago
Added to GitGenius on June 17th, 2025
Created on February 16th, 2022
Open Issues/Pull Requests: 412 (+0)
Number of forks: 534
Total Stargazers: 2,329 (+0)
Total Subscribers: 17 (+0)
Detailed Description

Kueue is an open-source Kubernetes scheduler plugin designed to manage and prioritize workloads based on queueing and fair-sharing principles. Unlike the default Kubernetes scheduler which focuses on immediate binding of pods to nodes, Kueue introduces a tiered scheduling approach, first placing pods into queues and then gradually draining those queues based on defined priorities and resource availability. This makes it particularly well-suited for shared cluster environments where multiple teams or applications compete for resources, and for workloads that can tolerate some scheduling delay in exchange for improved resource utilization and fairness.

At its core, Kueue operates by intercepting pod creation requests. Instead of immediately scheduling them, it creates a "Workload" resource representing the pod. These Workloads are then placed into queues, which are configurable and can be assigned different priorities, resource quotas, and scheduling policies. Kueue then periodically checks these queues and attempts to schedule Workloads to nodes, respecting the defined constraints. This decoupling of pod creation and scheduling allows for more sophisticated control over resource allocation and prevents resource contention. A key concept is the "SharedQueue", which allows multiple teams to submit workloads to a common queue, with Kueue ensuring fair access based on configured weights and limits.

Kueue offers several key features that differentiate it from standard Kubernetes scheduling. These include priority-based scheduling, allowing higher-priority workloads to be scheduled before lower-priority ones. It supports fair-sharing, ensuring that different teams or applications receive a proportional share of cluster resources. Resource quotas are enforced at the queue level, preventing any single queue from monopolizing the cluster. Additionally, Kueue provides preemption capabilities, allowing higher-priority workloads to displace lower-priority ones if necessary, and supports workload-level resource requests and limits. It also integrates with Kubernetes' existing mechanisms like PodDisruptionBudgets to minimize disruption during preemption.

The architecture of Kueue involves several components. The `kueue-controller` is the central component, responsible for managing queues, workloads, and scheduling decisions. It watches for Workload resources and interacts with the Kubernetes API server. The `kueue-scheduler-plugin` is a Kubernetes scheduler plugin that intercepts scheduling requests and delegates them to the `kueue-controller`. Finally, the `kueue-api` provides an API for interacting with Kueue, allowing users to manage queues and workloads programmatically. Kueue leverages Kubernetes Custom Resource Definitions (CRDs) to define its core concepts like Workload and Queue.

In essence, Kueue provides a layer of abstraction on top of the Kubernetes scheduler, enabling more granular control over resource allocation and improving cluster utilization. It's a valuable tool for organizations running multi-tenant Kubernetes clusters or managing diverse workloads with varying priority and resource requirements. The project is actively maintained by the Kubernetes SIGs and offers comprehensive documentation and examples to facilitate adoption and customization. It's designed to be extensible, allowing users to define custom scheduling policies and integrate with other Kubernetes ecosystem tools.

kueue
by
kubernetes-sigskubernetes-sigs/kueue

Repository Details

Fetching additional details & charts...