概览
为什么选择 Kueue?
Kueue 是一个 Kubernetes 原生系统,用于管理配额以及作业如何使用配额。 Kueue 决定作业何时应该等待,何时应该被接纳开始(即可以创建 Pod), 以及何时应该被抢占(即应该删除活跃的 Pod)。
为什么选择 Kueue
你可以在一个普通的 Kubernetes 集群之上安装 Kueue。Kueue 不会替换任何现有的 Kubernetes 组件。Kueue 与云环境兼容,在这些环境中:
- 计算资源是弹性的,可以扩展和缩减。
- 计算资源是异构的(在架构、可用性、价格等方面)。
Kueue API 允许你表达:
- 租户间公平共享的配额和策略。
- 资源可替代性:如果一种资源 Flavor 已被完全利用,Kueue 可以使用不同的 Flavor 接纳作业。
Kueue 的一个核心设计原则是避免重复 Kubernetes 组件和成熟的第三方控制器中的功能。 自动扩缩、Pod 到节点的调度和作业生命周期管理分别是 cluster-autoscaler、kube-scheduler 和 kube-controller-manager 的职责。高级准入控制可以委托给像 Gatekeeper 这样的控制器。
功能概览
- 作业管理: 支持基于优先级的作业排队,
并提供不同的策略:
StrictFIFO
和BestEffortFIFO
。 - 高级资源管理: 包括:资源 Flavor 可替代性(resource flavor fungibility)、 公平共享(Fair Sharing)、 队列组(Cohorts)和抢占(preemption), 并为不同租户提供多种策略。
- 集成: 内置支持流行的作业,例如BatchJob、 Kubeflow 训练作业、RayJob、 RayCluster、JobSet、 AppWrappers、普通 Pod 和 Pod 组。
- 系统洞察: 内置 Prometheus 指标帮助监控系统状态,并提供按需可见性端点用于监控待处理工作负载。
- 准入检查(AdmissionChecks): 一种供内部或外部组件影响工作负载是否可以被接纳的机制。
- 高级自动扩缩支持: 通过准入检查与 cluster-autoscaler 的 provisioningRequest 集成。
- All-or-nothing 与就绪 Pod: 一种基于超时的 All-or-nothing 调度实现。
- 部分接纳(Partial admission)和动态回收(dynamic reclaim): 基于可用配额以减少并行度运行作业, 并在 Pod 完成后释放配额的机制。
- 混合训练和推理: 同时管理批处理工作负载和服务工作负载(例如 Deployments 或 StatefulSets)。
- 多集群作业分发: 称为MultiKueue,允许搜索容量并从主集群卸载工作。
- 拓扑感知调度: 允许通过感知数据中心拓扑的调度来优化 Pod 间的通信吞吐量。
作业集成功能
功能 | Batch Job | JobSet | PaddleJob | PytorchJob | TFJob | XGBoostJob | MPIJob | JAXJob | Pod | RayCluster | RayJob | AppWrapper | Deployment | StatefulSet | LeaderWorkerSet |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
动态回收 | + | + | + | ||||||||||||
MultiKueue | + | + | + | + | + | + | + | + | + | + | + | ||||
MultiKueueBatchJobWithManagedBy | + | ||||||||||||||
部分接纳 | + | ||||||||||||||
工作负载优先级类别 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
Flavor 可替代性 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
ProvisioningACC | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
队列可见性 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
按需可见性 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
队列组内优先级排序 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
借用限制 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
All-or-nothing 与就绪 Pod | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
公平共享 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
拓扑感知调度 | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
Kueue 高级操作
要了解有关 Kueue 概念的更多信息,请参阅概念部分。
要了解不同的 Kueue 用户角色以及如何使用 Kueue,请参阅任务部分。
反馈
这个页面有帮助吗?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.