kubernetes-sigs/kueue
GitHub: kubernetes-sigs/kueue
Kueue 是 Kubernetes 原生的作业排队管理系统,用于优化批处理和 AI 训练工作负载的资源分配与调度。
Stars: 2346 | Forks: 544
# Kueue
[![GoReport Widget]][GoReport Status]
[](https://github.com/kubernetes-sigs/kueue/releases/latest)
Kueue 是一组用于 [job](https://kueue.sigs.k8s.io/docs/concepts/workload) [队列管理](https://kueue.sigs.k8s.io/docs/concepts#queueing) 的 API 和控制器。它是一个作业级管理器,决定何时[准入](https://kueue.sigs.k8s.io/docs/concepts#admission)(admitted)作业以启动(即可以创建 Pod),以及何时应该停止(即应删除活跃 Pod)。
阅读[概述](https://kueue.sigs.k8s.io/docs/overview/)并观看 Kueue 相关的[演讲与演示](https://kueue.sigs.k8s.io/docs/talks_and_presentations/)以了解更多信息。
## 功能概述
- **作业管理:** 支持基于[优先级](https://kueue.sigs.k8s.io/docs/concepts/workload/#priority)的作业排队,并提供不同的[策略](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/#queueing-strategy):`StrictFIFO` 和 `BestEffortFIFO`。
- **高级资源管理:** 包括:[资源风味可替代性](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/#flavorfungibility)(resource flavor fungibility)、[公平共享](https://kueue.sigs.k8s.io/docs/concepts/preemption/#fair-sharing)(Fair Sharing)、[队列组](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/#cohort)(cohorts)以及不同租户之间具有多种策略的[抢占](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/#preemption)(preemption)。
- **集成:** 内置支持流行的作业类型,例如 [BatchJob](https://kueue.sigs.k8s.io/docs/tasks/run/jobs/)、[Kubeflow training jobs](https://kueue.sigs.k8s.io/docs/tasks/run/kubeflow/)、[RayJob](https://kueue.sigs.k8s.io/docs/tasks/run/rayjobs/)、[RayCluster](https://kueue.sigs.k8s.io/docs/tasks/run/rayclusters/)、[JobSet](https://kueue.sigs.k8s.io/docs/tasks/run/jobsets/)、[普通 Pod 和 Pod 组](https://kueue.sigs.k8s.io/docs/tasks/run/plain_pods/)。
- **系统洞察:** 内置 [prometheus 指标](https://kueue.sigs.k8s.io/docs/reference/metrics/)以帮助监控系统状态,以及用于[监控待处理工作负载](https://kueue.sigs.k8s.io/docs/tasks/manage/monitor_pending_workloads/pending_workloads_on_demand/)的按需可见性端点。
- **AdmissionChecks:** 一种允许内部或外部组件影响工作负载是否可以被[准入](https://kueue.sigs.k8s.io/docs/concepts/admission_check/)的机制。
- **高级自动扩缩容支持:** 通过 admissionChecks 与 cluster-autoscaler 的 [provisioningRequest](https://kueue.sigs.k8s.io/docs/concepts/admission_check/provisioning_request/#job-using-a-provisioningrequest) 集成。
- **全有或全无的 就绪 Pod:** 基于[All-or-nothing 调度](https://kueue.sigs.k8s.io/docs/tasks/manage/setup_wait_for_pods_ready/)的超时实现。
- **部分准入与动态回收:** 基于可用配额以[降低的并行度](https://kueue.sigs.k8s.io/docs/tasks/run/jobs/#partial-admission)运行作业,并在 Pod 完成后[释放](https://kueue.sigs.k8s.io/docs/concepts/workload/#dynamic-reclaim)配额的机制。
- **混合训练与推理:** 同时管理批处理工作负载和服务工作负载(例如 [Deployments](https://kueue.sigs.k8s.io/docs/tasks/run/deployment/) 或 [StatefulSets](https://kueue.sigs.k8s.io/docs/tasks/run/statefulset/))。
- **多集群作业调度:** 称为 [MultiKueue](https://kueue.sigs.k8s.io/docs/concepts/multikueue/),允许搜索容量并分担主集群负载。
- **拓扑感知调度:** 通过[感知数据中心拓扑的调度](https://kueue.sigs.k8s.io/docs/concepts/topology_aware_scheduling/)来优化 Pod 间通信吞吐量。
## 生产就绪状态
- ✔️ API 版本:v1beta2,遵守 [Kubernetes 弃用策略](https://kubernetes.io/docs/reference/using-api/deprecation-policy/)
- ✔️ 最新的[文档](https://kueue.sigs.k8s.io/docs)。
- ✔️ 测试覆盖率:
- ✔️ 单元测试 [testgrid](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-unit-main)。
- ✔️ 集成测试 [testgrid](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-integration-main)
- ✔️ MultiKueue 集成测试 [testgrid](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-integration-multikueue-main)
- ✔️ Kubernetes E2E 测试
[1.32](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-e2e-main-1-32),
[1.33](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-e2e-main-1-33),
[1.34](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-e2e-main-1-34),
[1.35](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-e2e-main-1-35),
基于 Kind。
- ✔️ E2E TAS 测试 [testgrid](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-e2e-tas-main)
- ✔️ E2E 自定义配置测试 [testgrid](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-e2e-customconfigs-main)
- ✔️ E2E Cert Manager 测试 [testgrid](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-e2e-certmanager-main)
- ✔️ 性能测试 [testgrid](https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-scheduling-perf-main)
- ✔️ 通过[性能测试](https://github.com/kubernetes-sigs/kueue/tree/main/test/performance)验证可扩展性。
- ✔️ 通过[指标](https://kueue.sigs.k8s.io/docs/reference/metrics)进行监控。
- ✔️ 安全性:基于 RBAC 的访问控制。
- ✔️ 稳定的[发布](RELEASE.md)周期(2-3 个月)。
- ✔️ [采用者](https://kueue.sigs.k8s.io/docs/adopters/)正在生产环境中运行。
_基于社区反馈,我们继续简化和演进 API 以解决新的用例_。
## 安装
**需要 Kubernetes 1.29 或更新版本**。
要在集群中安装最新版本的 Kueue,请运行以下命令:
```
kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.16.2/manifests.yaml
```
控制器运行在 `kueue-system` 命名空间中。
阅读[安装指南](https://kueue.sigs.k8s.io/docs/installation/)以了解更多信息。
## 用法
可以通过运行[示例](site/static/examples)来设置最小配置:
```
kubectl apply -f examples/admin/single-clusterqueue-setup.yaml
```
然后你可以使用以下命令运行作业:
```
kubectl create -f examples/jobs/sample-job.yaml
```
了解更多关于:
- Kueue [概念](https://kueue.sigs.k8s.io/docs/concepts)。
- 常见和高级[任务](https://kueue.sigs.k8s.io/docs/tasks)。
## 路线图
2026 年主要优先事项的高层概览:
- 改善 [MultiKueue](https://kueue.sigs.k8s.io/docs/concepts/multikueue/) - 多集群作业调度的用户体验,特别是:
* 支持 Elastic RayJob [#8712](https://github.com/kubernetes-sigs/kueue/issues/8712)
* 工作负载级准入约束和偏好感知 MultiKueue 调度 [#8729](https://github.com/kubernetes-sigs/kueue/issues/8729)
* 防止在多个 worker 集群中启动抢占 [#8303](https://github.com/kubernetes-sigs/kueue/issues/8303)
* 支持长期运行的服务 [#8526](https://github.com/kubernetes-sigs/kueue/issues/8526)
* 从 worker 集群获取日志 [#3526](https://github.com/kubernetes-sigs/kueue/issues/3526)
- 改善 [拓扑感知调度](https://kueue.sigs.k8s.io/docs/concepts/topology_aware_scheduling/)的用户体验,特别是:
* 支持 ResourceTransformations [#8860](https://github.com/kubernetes-sigs/kueue/issues/8860)
* 支持 [Elastic Workloads](https://kueue.sigs.k8s.io/docs/concepts/elastic_workload/) [#8160](https://github.com/kubernetes-sigs/kueue/issues/8160)
* 驱逐在变为污点的节点上运行的工作负载 [#8838](https://github.com/kubernetes-sigs/kueue/issues/8828)
- 与 k8s 原生 Workload-Aware Scheduler (WAS) 和 Topology-Aware Scheduling 集成 [#8871](https://github.com/kubernetes-sigs/kueue/issues/8871)
- 支持并发工作负载准入 [#8691](https://github.com/kubernetes-sigs/kueue/issues/8691)
- 支持运行 hero workloads [#8826](https://github.com/kubernetes-sigs/kueue/issues/8826)
- 在寻找抢占候选者时考虑抢占成本 [#7990](https://github.com/kubernetes-sigs/kueue/issues/7990)
- 迈向 Dynamic Resource Allocation (DRA) 集成的 Beta 阶段 [#8243](https://github.com/kubernetes-sigs/kueue/issues/8243)
长期愿景目标:
- 服务工作负载的部分抢占 [#3762](https://github.com/kubernetes-sigs/kueue/issues/3762)
- 与工作流框架集成 [#74](https://github.com/kubernetes-sigs/kueue/issues/74)
- 预算支持 [#28](https://github.com/kubernetes-sigs/kueue/issues/28)
- Flavor 分配策略,例如 _最小化成本_ vs _最小化借用_ [#312](https://github.com/kubernetes-sigs/kueue/issues/312)
* 对实现检查点的工作负载的协作抢占支持 [#477](https://github.com/kubernetes-sigs/kueue/issues/477)
* 用于两阶段准入的延迟抢占 [#3758](https://github.com/kubernetes-sigs/kueue/issues/3758)
* 在 Kueue 中支持 Structured Parameters (DRA) [#2941](https://github.com/kubernetes-sigs/kueue/issues/2941)
* 将 API 升级至 v1 [#3476](https://github.com/kubernetes-sigs/kueue/issues/3476)
## 社区、讨论、贡献和支持
了解如何在[社区页面](http://kubernetes.io/community/)和[贡献者指南](CONTRIBUTING.md)上与 Kubernetes 社区互动。
你可以通过以下方式联系本项目的维护者:
- [Slack](https://kubernetes.slack.com/messages/wg-batch)
- [邮件列表](https://groups.google.com/a/kubernetes.io/g/wg-batch)
### 图形资产
- [Kueue](https://github.com/cncf/artwork/tree/main/projects/kubernetes/sub-projects/kueue)
- [KueueViz](https://github.com/cncf/artwork/tree/main/projects/kubernetes/sub-projects/kueueviz)
### 行为准则
Kubernetes 社区的参与受 [Kubernetes 行为准则](code-of-conduct.md)管辖。
标签:AI基础设施, BatchJob, EVTX分析, EVTX分析, Go, Golang, HPC, Job-Queueing, Kubeflow, Kueue, Ray, Ruby工具, Volcano, 任务队列, 优先级调度, 安全编程, 容器编排, 工作负载管理, 批处理, 抢占机制, 提示注入, 日志审计, 自动化运维, 自定义请求头, 资源公平共享, 资源调度, 资源配额, 集群管理, 高性能计算