概述
为何选择 Kueue?
Kueue 是一个 Kubernetes 原生系统,用于管理配额以及作业如何消耗配额。Kueue 决定作业何时应该等待,何时应该允许作业开始(如可以创建 Pod),以及何时应该抢占作业(如应该删除活动 Pod)。
为何使用 Kueue
您可以在普通的 Kubernetes 集群上安装 Kueue。Kueue 不会替换任何现有的 Kubernetes 组件。Kueue 与以下云环境兼容:
- 计算资源具有弹性,可以按需扩展。
- 计算资源是异构的(在架构、可用性、价格等方面)。
Kueue API 允许您表达
- 租户之间公平共享的配额和策略。
- 资源可替代性:如果一种资源类型已完全利用,Kueue 可以使用另一种类型来允许作业。
Kueue 的核心设计原则是避免在 Kubernetes 组件和成熟的第三方控制器中复制成熟的功能。自动伸缩、pod 到节点调度和作业生命周期管理分别由 cluster-autoscaler、kube-scheduler 和 kube-controller-manager 负责。高级准入控制可以委托给 gatekeeper 等控制器。
功能概览
- 作业管理:支持基于 优先级的作业队列,并具有不同的 策略:
StrictFIFO
和BestEffortFIFO
。 - 资源管理:支持资源公平共享和 抢占,并在不同租户之间采用各种策略。
- 动态资源回收:一种机制,用于在作业的 pod 完成时 释放配额。
- 资源风味可替代性:在 ClusterQueue 和 Cohort 中配额 借用或抢占。
- 集成:内置支持流行的作业,例如 BatchJob、Kubeflow 训练作业、RayJob、RayCluster、JobSet、普通 Pod。
- 系统洞察:内置 prometheus 指标以帮助监控系统状态以及条件。
- 准入检查:内部或外部组件影响是否可以 准入工作负载的机制。
- 高级自动伸缩支持:通过 admissionChecks 集成 cluster-autoscaler 的 provisioningRequest。
- 带有就绪 Pod 的全有或全无:基于超时的 全有或全无调度实现。
- 部分准入:允许作业在可用的配额的基础上以 较小的并行度运行,如果应用程序支持的话。
高级 Kueue 操作
要详细了解 Kueue 概念,请参阅 概念 部分。
要了解不同的 Kueue 角色以及使用 Kueue 可以做什么,请参阅 任务 部分。