返回 AI 基础设施 思维导图
中文·English
🖥️ AI 基础设施ID: cluster-scheduling

集群调度 Ray/K8s

Cluster Scheduling Ray/K8s
🎯核心定义
集群调度回答“哪个任务放到哪张 GPU、如何不浪费资源”。K8s 默认调度器(kube-scheduler)是两阶段流水线: ① 过滤(Filtering): 剔除不满足硬约束的节点——资源请求(CPU/内存/GPU 等扩展资源)、NodeSelector 与节点亲和性、污点容忍(Taint/Toleration)、端口与卷冲突;② 打分(Scoring): 对可行节点按策略评分(least-requested 最不拥挤 / most-requested 最紧凑 / 自定义优先级),选最高分执行 Pod 绑定。GPU 调度: GPU 由 device plugin(nvidia)上报为不可整除的扩展资源 nvidia.com/gpunvidia.com/gpu,调度器按整数卡分配、不支持分数卡——显存与 SM 无法安全拆分,只按“卡”不按“MB”;要小粒度时用 MIG(Multi-Instance GPU, A100/H100 硬件切片,一张卡最多 7 个实例,如 1g.5gb1g.5gb7g.80gb7g.80gb),每个实例独享固定 SM 与显存分区,硬件级隔离、无性能抖动,区别于 vGPU 的时间片共享。Ray 是构建在 K8s 之上的应用级调度: Driver(入口脚本)→ Head 节点(全局控制面 GCS + Raylet)→ 每节点一个 Raylet(本地调度器 + Object Store 共享内存对象存储,同节点任务零拷贝传数据)→ Worker(执行 Task/Actor)。弹性扩缩: Ray Autoscaler 按待处理任务队列长度动态增删节点、空闲即回收;K8s 用 HPA/自定义指标(QPS、队列长度、GPU 利用率)伸缩;缩容前 drain 排空在跑任务,spot 实例被回收靠多副本与检查点续训兜底。
💡使用场景
面试常问“K8s 调度器如何挑节点”“GPU 为什么不能按分数卡调度、MIG 是什么”“画出 Ray 架构”“Ray 与 K8s 的分层关系”。
解决的核心痛点
多租户集群里优先级、异构 GPU、显存碎片混在一起,人工排卡低效浪费——过滤 + 打分保证“可行且最优”;整卡分配 + MIG 消灭显存碎片并让小任务不再空耗整卡(一张 A100 可同时承载最多 7 个 MIG 实例);Ray 本地调度 + 对象存储避免数据反复走网络,弹性扩缩把空闲 GPU 及时回收,集群 GPU 利用率显著提升。
🎯5 个高频面试考点 (Exam Points)
1
描述 K8s 调度两阶段: 过滤检查哪些硬约束(资源、NodeSelector、亲和性、污点容忍、端口/卷),打分有哪些策略(least-requested / most-requested)及其取舍,为什么必须先过滤后打分。
2
GPU 为什么是扩展资源、为什么只能整卡调度(显存与 SM 不可安全分片),device plugin 如何上报 nvidia.com/gpunvidia.com/gpu;只剩 20 GB 显存的卡能否容纳需要 30 GB 的任务,为什么。
3
MIG 是什么: A100/H100 硬件切片(最多 7 个实例,如 1g.5gb1g.5gb),每个实例独享 SM 与显存分区;与 vGPU 时间片共享的本质区别(隔离性与性能抖动),什么场景选 MIG。
4
画出 Ray 架构: Driver → Head(GCS 全局控制面 + Raylet)→ 每节点 Raylet(本地调度 + Object Store)→ Worker;对象存储为什么让同节点任务零拷贝共享数据、只有跨节点才走网络。
5
弹性扩缩: Ray Autoscaler 按待处理任务数增删节点、K8s HPA/自定义指标伸缩;缩容与 spot 回收时如何优雅处理在跑任务(drain、多副本、检查点续训)。
📖 关联深度指南:📄 cluster-scheduling-and-ray
更新于 2026-08-12
🎯
检验攻克程度:针对「集群调度 Ray/K8s」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点激活显存估算下一个知识点训练框架与 Profiling

🔗 更多 AI 基础设施 知识点卡片

Agent 运行时(跨模块)弹性伸缩与成本优化检查点与故障恢复集合通信与 NVLink 拓扑