K8s 调度体系分类与主流调度器
分为原生扩展方案(不新增独立调度进程)、**独立第三方专用调度器(单独部署、并行运行)**两大类,Pod 通过 spec.schedulerName 指定使用哪一套调度逻辑。
1. 原生扩展方案(基于默认 kube-scheduler 改造,无需新增独立组件)
1.1. Scheduling Framework 调度框架插件(官方主推,1.19稳定)
不是独立调度器,是默认调度器内置可插拔扩展体系,在预选、打分、绑定等阶段插入自定义逻辑,编译进 kube-scheduler 二进制。
社区开源插件仓库 kubernetes-sigs/scheduler-plugins 提供现成增强能力:
- Coscheduling:Gang 调度,批量任务所有 Pod 同时调度成功才启动(分布式训练、大数据)
- CapacityScheduling:资源预留、超分管控
- NodeResourceFit:基于节点真实实时负载打分(默认只看分配配额,不看真实占用)
- TopologySpread:增强版拓扑均衡调度
- LoadAware:节点负载感知调度
用法:配置多调度 Profile,同一 kube-scheduler 支持多套调度规则,Pod 指定 schedulerName 匹配对应 Profile。
1.2. Scheduler Extender 调度扩展器(老旧兼容方案)
外置 HTTP 服务,默认调度器执行预选/打分时同步调用外部接口做二次过滤、打分。
- 优点:无需重新编译 kube-scheduler,Go/Python 均可开发;
- 缺点:HTTP 网络开销大、无本地缓存、调度性能差,新项目不推荐。
1.3. Device Plugin 设备调度插件(硬件资源调度配套)
不属于完整调度器,负责向 kubelet 上报 GPU、FPGA、RDMA、NPU 等异构硬件资源,配合调度器实现硬件资源筛选分配:
- nvidia-device-plugin:NVIDIA GPU 独占调度;
- koord-device-plugin:支持 GPU 共享、MIG 细粒度切分调度。
2. 独立第三方完整调度器(单独部署,与 default-scheduler 并行运行)
2.1. Volcano(国内主流批处理调度器)
面向离线批量任务、AI训练、大数据、HPC专用调度器,完全独立进程:
- 核心能力:Gang 调度、队列资源配额、在线/离线业务混部、GPU 细粒度调度、任务抢占、多租户隔离;
- 适配:Spark、Flink、TensorFlow、PyTorch 分布式任务;
- 使用:Pod/Job 指定
schedulerName: volcano。
2.2. Apache YuniKorn(通用混合集群调度)
兼容 K8s + Hadoop/YARN 混合集群,企业多租户资源调度:
- 分层资源队列、公平调度、资源抢占、全局容量管控;
- 两种部署形态:独立调度器二进制 / 嵌入 kube-scheduler 作为插件。
2.3. Koordinator(阿里开源混部调度器)
主打在线业务+离线任务混部、异构硬件精细化调度:
- 低延迟在线服务优先保障、离线任务资源超分、GPU 分时共享、节点真实负载调度、带宽/内存精细化隔离;
- 多用于大规模互联网生产集群,平衡资源利用率与业务 SLA。
2.4. Kueue(轻量化作业队列调度)
轻量化任务排队控制器,不替代调度器,仅做作业配额排队,调度仍交由默认调度器执行:
- 分层队列、资源限额、多租户、按需抢占;
- 适合中小规模 AI、批量任务,部署轻量无复杂组件。
2.5. KAI Scheduler(Run:AI,AI 专用)
面向大模型训练 GPU 拓扑调度,感知 NVLink 互联、多卡拓扑,优化分布式训练通信效率,多用于 AI 专属集群。
3. 自定义全量独立调度器
开发者自行基于 client-go 开发完整调度进程,Watch 带自定义 schedulerName 的 Pod,自行实现全套预选、打分、绑定逻辑:
- 优势:完全自主可控,无框架限制;
- 劣势:需要完整实现缓存、抢占、重试、故障容错,维护成本极高,仅大厂深度定制场景使用。
4. 使用区分速记
- 普通微服务:默认 default-scheduler + Scheduling Framework 插件增强;
- 大数据/分布式AI训练:Volcano;
- 在线离线混部、大规模集群:Koordinator;
- Hadoop+K8s 混合机房、多租户队列:YuniKorn;
- 轻量批量任务排队:Kueue;
- GPU 大模型拓扑优化:KAI Scheduler。
5. 高频面试简答
- 调度框架插件和独立调度器区别?
插件复用默认调度器进程,轻量化;独立调度器单独部署,完全自定义调度逻辑,适合批处理、混部复杂场景。 - Gang 调度一般用什么调度器?
Volcano、Scheduler Framework Coscheduling 插件。 - 在线离线业务混部推荐什么调度方案?
Koordinator,支持负载感知、资源超分、在线业务优先级保障。
关联文档
- kube-scheduler 完整工作原理 — 默认调度器原理
- Gang 调度(协同调度)完整详解 — 批量协同调度
- K8s 高阶调度全解 — 亲和与污点调度