Kubernetes

K8s 调度体系分类与主流调度器

·6 分钟阅读·2232 字
📋 目录

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. 使用区分速记

  1. 普通微服务:默认 default-scheduler + Scheduling Framework 插件增强;
  2. 大数据/分布式AI训练:Volcano;
  3. 在线离线混部、大规模集群:Koordinator;
  4. Hadoop+K8s 混合机房、多租户队列:YuniKorn;
  5. 轻量批量任务排队:Kueue;
  6. GPU 大模型拓扑优化:KAI Scheduler。

5. 高频面试简答

  1. 调度框架插件和独立调度器区别?
    插件复用默认调度器进程,轻量化;独立调度器单独部署,完全自定义调度逻辑,适合批处理、混部复杂场景。
  2. Gang 调度一般用什么调度器?
    Volcano、Scheduler Framework Coscheduling 插件。
  3. 在线离线业务混部推荐什么调度方案?
    Koordinator,支持负载感知、资源超分、在线业务优先级保障。

关联文档