终于搞懂 Kueue:5 个核心对象一次讲透
很多人刚接触 Kueue 时最大的困惑不是 YAML 怎么写而是看着一堆 CRDResourceFlavor、ClusterQueue、LocalQueue、Cohort、Workload不知道它们之间到底是什么关系。本文不会逐个照着 API 文档介绍字段而是把这五个对象放到同一条资源准入链路中一次讲清楚它们各自负责什么、为什么要存在以及它们之间如何协作。上一篇文章中分析了 Kueue 的完整工作流kueue-workflow.png涉及到多个核心对象下面逐个拆开讲。ResourceFlavor资源长什么样Kueue 要管资源第一步得知道集群里有哪些种类的资源。集群里的 CPU、GPU 通常不是同构的价格和可用性 竞价型 vs 按需型虚拟机架构 x86 vs ARM CPU品牌和型号 Nvidia A100 vs T4 GPUResourceFlavor 就是干这个的——给资源分个类贴个标签后面 ClusterQueue 按这个分类来管配额。Kueue 在 Admission 阶段会根据 ClusterQueue 中配置的 Flavor 顺序、Quota 是否满足、Flavor 是否匹配 Pod 等因素选择一个可用的 ResourceFlavor。空 Flavor如果集群资源是同构的或者不需要为不同资源规格分别管理配额那直接创建一个不包含任何标签或污点的空 ResourceFlavor 即可apiVersion: kueue.x-k8s.io/v1beta2kind: ResourceFlavormetadata:name: default-flavor这类 ResourceFlavor 不承担节点筛选或污点控制的职责仅作为统一的资源抽象存在方便后续扩展不同资源类型。只分类不加污点apiVersion: kueue.x-k8s.io/v1beta2kind: ResourceFlavormetadata:name: “gpu”spec:nodeLabels:instance-type: gpu新增参数spec.nodeLabels 通过 label 关联到对应的节点。具体实现上则是通过将 flavor 中 nodeLabels 部分自动注入到 Pod Spec 中的 nodeSelector从而达到只将 Pod 调度到该 flavor 关联的节点上。这类 Flavor 实现了根据 label 将节点进行分类算是名副其实。管理员先给节点打上对应 label 即可实现分类rootlixd-dev-4:~# kubectl label node lixd-dev-4 instance-typegpunode/lixd-dev-4 labeled但也只是简单做了分类不是该 Flavor 中的 Job 也能手动调度到这些 GPU 节点。比较推荐的做法是给节点再打上污点这样就不是随便能调度上去了kubectl taint node xxx nvidia.com/gputrue:NoSchedule节点打上污点后Flavor 中的 Job 也不能调度了。Kueue 提供了两种模式来解决这个问题自动容忍模式 将污点容忍信息写到 ResourceFlavorKueue 自动给使用该 Flavor 的 Pod 加上容忍手动容忍模式 将污点信息写到 ResourceFlavorKueue 做匹配拦截只允许带了对应容忍的 Pod 使用该 Flavor带污点自动污点容忍调度apiVersion: kueue.x-k8s.io/v1beta2kind: ResourceFlavormetadata:name: “spot”spec:nodeLabels:instance-type: spottolerations:key: “spot-taint” # 节点上已有污点的 keyoperator: “Exists”effect: “NoSchedule” # 支持 NoSchedule 和 NoExecute新增参数spec.tolerations 声明该 flavor 关联节点上的污点容忍信息。Kueue 准入时自动注入到 Pod 的 .spec.template.spec.tolerations确保 Pod 能容忍节点污点从而正常调度。手动污点容忍apiVersion: kueue.x-k8s.io/v1beta2kind: ResourceFlavormetadata:name: “spot”spec:nodeLabels:instance-type: spotnodeTaints:effect: NoSchedule # 只支持 NoSchedule 和 NoExecutePreferNoSchedule 会被忽略key: spotvalue: “true”新增参数spec.nodeTaints 在 flavor 上定义准入门槛。Kueue 不会自动注入容忍度Pod 必须自己带对应 toleration 才能通过准入、拿到配额。用户提交 Job 时必须自己带上 toleration否则 Kueue 不批配额spec:template:spec:tolerations:- key: spotoperator: Existseffect: NoSchedule注意 spec.nodeTaints 通常应与节点上的真实污点保持一致。否则可能出现 Pod 过了 Kueue 准入、拿到配额但 K8s 调度器发现节点有真污点而 Pod 没对应 toleration最终调度失败——白白占了配额。本质就是把调度层面的拦截提前到 Kueue 准入层面。两种模式怎么选自动模式spec.tolerations 手动模式spec.nodeTaints谁给 Pod 加 toleration Kueue 自动注入 用户自己写用户需要关心节点污点吗 不需要提交 Job 就行 必须自己写 toleration用在哪 生产默认对用户最友好 保护昂贵资源强制用户显式声明选型建议优先用自动模式只有当你需要强制用户显式声明才能使用某种昂贵资源时才用手动模式。一句话记住ResourceFlavor 定义资源的属性标签、污点、容忍等真正决定资源配额和公平性的仍然是 ClusterQueue。ClusterQueue谁是配额的真正管家如果 ResourceFlavor 是给资源分类那真正决定谁能用、用多少的是谁答案就是 ClusterQueue。它才是 Kueue 配额管理的核心定义了使用上限和公平共享规则。基础用法一个基础的 ClusterQueue 示例如下apiVersion: kueue.x-k8s.io/v1beta2kind: ClusterQueuemetadata:name: “cluster-queue”spec:namespaceSelector: {} # 匹配所有命名空间。resourceGroups:coveredResources: [“cpu”, “memory”, “pods”]flavors:name: “default-flavor”resources:name: “cpu”nominalQuota: 9name: “memory”nominalQuota: 36Giname: “pods”nominalQuota: 5字段解析spec.namespaceSelector 指定该 ClusterQueue 可以在哪些 namespace 被使用。当前 ClusterQueue 可以被任意 Namespace 使用。resourceGroups 资源组定义 ClusterQueue 的资源额度可以有多个每个组都是独立的。coveredResources 管哪些资源同一个 group 里面的资源必须在同一个 flavor 里面分配。flavors 可以有多个分配是按顺序尝试。name 使用名称引用前面创建的 ResourceFlavor。resources 在这个 flavor 下每种资源的配额上限。nominalQuota 保底配额表示该 ClusterQueue 的名义配额优先保障自身使用未使用的部分可以按照 borrowing/lending 规则被其他 Queue 借用。borrowingLimit 你最多能从 Cohort 里借入多少所以你最多能用 nominalQuota borrowingLimit。lendingLimit 你最多允许别人从你这借走多少当你空闲时需要时可通过预抢占收回。以 cpu 为例基于上面三个配额字段你可以使用的范围是 nominalQuota ~ (nominalQuota borrowingLimit)。高级用法在基础配置之上ClusterQueue 还支持以下进阶字段按用途分组调度顺序排队策略spec:queueingStrategy: BestEffortFIFOBestEffortFIFO默认 前面的 Job 拿不到配额后面的能插队先跑资源利用率高。StrictFIFO 前面的 Job 拿不到配额后面的必须等适合有顺序依赖的 Pipeline。资源共享加入 Cohortspec:cohortName: research-cohortcohortName 关联到一个 Cohort同一个 Cohort 里的 ClusterQueue 可以互相共享资源。抢占相关当 ClusterQueue 或其 Cohort 中没有足够的配额时新进入的 Workload 可以触发预抢占挤掉低优先级的 Workload。涉及两个配置项预抢占策略spec:preemption:reclaimWithinCohort: Any # 可抢占 Cohort 中超过名义配额的 WorkloadborrowWithinCohort:policy: LowerPriority # 借用时只抢占低优先级不能与 Fair Sharing 一同使用maxPriorityThreshold: 100 # 且仅抢占优先级 ≤ 100 的 WorkloadwithinClusterQueue: LowerPriority # 同队列内低优先级让路给高优先级withinClusterQueue 同队列内当待处理 Workload 不适合配额时是否可抢占同队列中的活动 Workload。Never默认不抢占LowerPriority 仅抢占低优先级LowerOrNewerEqualPriority 抢占低优先级或同优先级的。reclaimWithinCohort 是否可抢占 Cohort 中使用了超过其名义配额的 Workload。Never默认不抢占LowerPriority 仅抢占低优先级Any 可抢占任意优先级。borrowWithinCohort 当需要借用配额时是否触发抢占。Never默认不触发LowerPriority 仅抢占 Cohort 中低优先级的 Workload需同时启用 reclaimWithinCohort。注意只能配置经典抢占不能与 Fair Sharing 一同使用。优先抢占还是借用当 ClusterQueue 有多个 flavor 时Kueue 按顺序尝试。当当前 flavor 配额用完时你可以影响 Kueue 的行为whenCanBorrow 能从 Cohort 借的时候。MayStopSearch默认借了就停不再试下一个TryNextFlavor不借先试下一个 flavor。whenCanPreempt 能抢占低优先级 Job 的时候。TryNextFlavor默认先试下一个 flavorMayStopSearch不试了直接抢占。spec:flavorFungibility:whenCanBorrow: TryNextFlavorwhenCanPreempt: MayStopSearch运维控制停止策略控制队列的运行状态ClusterQueue 和 LocalQueue 都支持。None默认 正常运行新 Job 正常准入已运行的不受影响。Hold 停止新的准入已准入的不受影响适合维护、配额调整等临时场景。HoldAndDrain 停止新的准入 触发已准入工作负载的驱逐适合紧急情况需要立刻清场。维护完恢复为 None 或直接删掉这个字段即可。这是运维操作不是常态配置。spec:stopPolicy: Hold把上面的都放在一起一个包含所有字段的完整 ClusterQueueapiVersion: kueue.x-k8s.io/v1beta2kind: ClusterQueuemetadata:name: ai-team-cqspec:1. 加入 Cohort允许和其他 ClusterQueue 共享资源cohortName: research-cohort2. 排队策略queueingStrategy: BestEffortFIFO # 默认。StrictFIFO 会阻塞3. 命名空间选择器谁能用这个 ClusterQueuenamespaceSelector:matchLabels:team: ai4. 抢占策略preemption:reclaimWithinCohort: Any # 可抢占 Cohort 中超过名义配额的 WorkloadborrowWithinCohort:policy: LowerPriority # 借用时只抢占低优先级不能与 Fair Sharing 一同使用maxPriorityThreshold: 100 # 且仅抢占优先级 ≤ 100 的 WorkloadwithinClusterQueue: LowerPriority # 同队列内低优先级让路给高优先级5. 配置是优先抢占还是借用flavorFungibility:whenCanBorrow: TryNextFlavorwhenCanPreempt: MayStopSearch6. 停止策略stopPolicy: Hold7. 资源组定义resourceGroups:coveredResources: [“cpu”, “memory”] # 第一组计算资源flavors:name: default-flavorresources:name: cpunominalQuota: 16 # 保底配额borrowingLimit: 8 # 最多能从 Cohort 借多少lendingLimit: 8 # 最多允许别人借多少name: memorynominalQuota: 64GiborrowingLimit: 32GilendingLimit: 32GicoveredResources: [“nvidia.com/gpu”] # 第二组GPU 资源flavors:name: a100resources:name: nvidia.com/gpunominalQuota: 4borrowingLimit: 2name: t4resources:name: nvidia.com/gpunominalQuota: 8一句话记住ClusterQueue 才是真正管配额和公平性的地方。 第一次看会和 LocalQueue 搞混其实记住一句就够了——ClusterQueue 管资源LocalQueue 管用户。LocalQueue用户怎么进队列ClusterQueue 是集群级别的但用户不能直接往里塞 Job。中间还需要一层 LocalQueue——它是一个命名空间对象指向一个 ClusterQueue作为用户提交 Job 的入口。apiVersion: kueue.x-k8s.io/v1beta2kind: LocalQueuemetadata:namespace: team-aname: team-a-queuespec:clusterQueue: cluster-queue

相关新闻

ThinkingCap-Qwen3.6-27B-mlx-6Bit模型深度解析:6位量化如何实现高效AI推理

ThinkingCap-Qwen3.6-27B-mlx-6Bit模型深度解析:6位量化如何实现高效AI推理

ThinkingCap-Qwen3.6-27B-mlx-6Bit模型深度解析:6位量化如何实现高效AI推理 【免费下载链接】ThinkingCap-Qwen3.6-27B-mlx-6Bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/ThinkingCap-Qwen3.6-27B-mlx-6Bit ThinkingCap-Qwen3.6-27B-ml…

2026/7/19 23:47:01阅读更多 →
ExusData:机器人触觉感知数据集完全指南

ExusData:机器人触觉感知数据集完全指南

ExusData:机器人触觉感知数据集完全指南 【免费下载链接】ExusData 项目地址: https://ai.gitcode.com/psibot-ai/ExusData ExusData是psibot-ai项目下的机器人触觉感知数据集,专为机器人触觉相关研究和开发提供高质量数据支持。它包含了丰富的触…

2026/7/19 23:47:01阅读更多 →
衡量AI时代真实价值:OpenAI “每美元有效智能“ 评分框架深度解读

衡量AI时代真实价值:OpenAI “每美元有效智能“ 评分框架深度解读

衡量AI时代真实价值:OpenAI "每美元有效智能" 评分框架深度解读 原文:A scorecard for the AI age | OpenAI,作者 Sarah Friar,2026年7月17日笔记整理日期:2026年7月 核心观点 OpenAI CFO Sarah Friar 提出…

2026/7/19 23:47:01阅读更多 →
诚信的家用神台工厂

诚信的家用神台工厂

在选择家用神台时,诚信可靠的工厂对于消费者来说至关重要。它能确保产品质量、风格和服务符合预期,让大家买得放心、用得舒心。松登家具就是这样一家值得信赖的诚信工厂,接下来就让我们深入了解一下它。诚信源于深厚底蕴松登家具始于 2001 年…

2026/7/20 15:53:49阅读更多 →
【IDEA】---Idea编辑器 如何显示 mermaid 流程图

【IDEA】---Idea编辑器 如何显示 mermaid 流程图

效果:一、升级idea版本到2026二、idea里不要安装其他markdown 插件, 会影响显示,关闭和卸载markdown插件,保留系统默认的即可三、配置markdown 默认情况下不需要改,有自行调整过的自行对比 配置1配置2配置3

2026/7/20 15:53:49阅读更多 →
为什么你的AI发帖总被判定为Bot?——基于17万条审核日志的特征工程反识别模型(附可复现Python脚本)

为什么你的AI发帖总被判定为Bot?——基于17万条审核日志的特征工程反识别模型(附可复现Python脚本)

更多请点击: https://kaifayun.com 第一章:为什么你的AI发帖总被判定为Bot?——基于17万条审核日志的特征工程反识别模型(附可复现Python脚本) 平台风控系统对AI生成内容的识别已从早期的关键词匹配,演进为…

2026/7/20 15:53:49阅读更多 →
加密货币钱包安全指南:硬件与热钱包选择

加密货币钱包安全指南:硬件与热钱包选择

1. 加密货币钱包入门:为什么需要专用存储方案?刚接触加密货币的新手常犯的一个错误,就是把交易所账户当作钱包使用。去年我帮一位朋友追查被盗的ETH时发现,他三年来一直把币放在注册交易所的默认地址里,直到平台突然冻…

2026/7/20 15:53:49阅读更多 →
Unity性能优化全攻略:从核心概念到移动端实战调优

Unity性能优化全攻略:从核心概念到移动端实战调优

1. 项目概述:从入门到优化,一个Unity开发者的必经之路刚接触Unity引擎时,我们往往被它强大的可视化编辑器和“一次开发,多平台发布”的愿景所吸引。从导入第一个模型、编写第一行C#脚本控制角色移动开始,我们沉浸在创造…

2026/7/20 15:53:49阅读更多 →
如何快速配置KK_Plugins:3个关键步骤详解

如何快速配置KK_Plugins:3个关键步骤详解

如何快速配置KK_Plugins:3个关键步骤详解 【免费下载链接】KK_Plugins Various plugins for various Illusion games 项目地址: https://gitcode.com/gh_mirrors/kk/KK_Plugins KK_Plugins是为Illusion系列游戏(如Koikatu、Koikatsu Sunshine、E…

2026/7/20 15:51:48阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/20 0:50:54阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/20 0:50:54阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/20 0:50:54阅读更多 →
2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

7月18日智东西消息,在2026 WAIC期间,努比亚联合字节豆包打造的二代“豆包手机”努比亚NaviX Ultra首次亮相,相比一代有诸多升级。智能体手机理念中兴通讯终端事业部总裁、努比亚总裁倪飞表示,智能体手机要从人操作手机变为手机帮人…

2026/7/20 0:01:04阅读更多 →
努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra:外观与功能双升级在2026 WAIC期间,首次亮相的努比亚NaviX Ultra吸引了众多目光。它是努比亚联合字节豆包打造的二代“豆包手机”,与一代努比亚M153相比,外观设计变化较大。其机身背部搭载横向排布的大尺寸影像模…

2026/7/20 0:01:04阅读更多 →
C# 将逗号分割的字符串转换为long,并添加到List<long>

C# 将逗号分割的字符串转换为long,并添加到List<long>

目录 方法1:使用Split和Convert.ToInt64 方法2:使用LINQ的Select和ToList 方法3:使用TryParse进行异常安全转换(推荐) 如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天…

2026/7/20 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/19 22:50:49阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/19 14:50:26阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/19 18:50:36阅读更多 →