Skip to content

对比

Scheduler 主流方案对比

维度 原生 kube-scheduler Volcano YuniKorn
替换默认 n/a(就是默认) 替换(标 schedulerName) 不替换(webhook 协作)
调度单位 Pod Pod(带 PodGroup) Pod(带 queue label)
Gang 语义 ❌ ✅ 原生 ⚠️ TaskGroup 支持
优先级 / 抢占 PriorityClass PriorityClass + Queue Queue 内 + 抢占
队列 ❌ ✅ 平面队列 ✅ 嵌套队列(树状)
多租户公平 ❌ DRF 算法 Fair / Capacity / FIFO
资源预留 Reserve plugin Queue capacity Guaranteed / Max
GPU 拓扑 弱(node label) ✅ NodeOrder + DRA ⚠️ 弱
大数据集成 ❌ Spark Operator Spark / Flink / Hive 原生
AI 训练 弱 强 中
批处理(HPC) ❌ 强 中
性能 最高(in-process) 高 高
自定义扩展 Scheduler Plugin API Scheduler Plugin(继承) 队列策略
生态 K8s 内核 CNCF incubating Apache TLP

一句话定位

  • 原生:默认首选,所有集群都跑
  • Volcano:AI / HPC / Gang 场景
  • YuniKorn:多租户 / 大数据 / 公平调度 场景

决策树

业务类型?
  ├─ 普通服务(web / API / 中间件)→ 原生
  ├─ AI 训练 / 分布式训练 → Volcano
  ├─ HPC / 仿真 / 基因 → Volcano
  ├─ Spark / Flink 大量跑批 → YuniKorn
  ├─ 多团队 / 多业务公平共享 → YuniKorn
  └─ 自定义调度逻辑(业务相关)→ 原生 + Plugin API

共存模式

集群里三套可以并存:

Pod 调度走哪条:
  ├─ schedulerName: 默认 / 空 → 原生
  ├─ schedulerName: volcano → Volcano
  └─ label queue / applicationId → YuniKorn webhook 接管

实际生产:

  • 多数集群只跑原生,简单清晰
  • AI 集群 = 原生(系统服务)+ Volcano(训练 Job)
  • 大数据集群 = 原生(系统服务)+ YuniKorn(Spark / Flink)

Scheduler Framework 自定义 Plugin

// 示例: 自定义 Score 插件
type MyScorePlugin struct{}

func (pl *MyScorePlugin) Name() string { return "MyScorePlugin" }

func (pl *MyScorePlugin) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
    // 自定义打分逻辑
    if isPreferredNode(nodeName) {
        return 100, nil
    }
    return 0, nil
}

func (pl *MyScorePlugin) ScoreExtensions() framework.ScoreExtensions {
    return nil
}

// 注册
var _ framework.ScorePlugin = &MyScorePlugin{}

跟其他 Plugin 一样通过 Scheduler Configuration 装载。

调度关键指标

  • Throughput:scheduler 调度速率(Pod/s)
  • Latency:单个 Pod 从创建到绑定节点的延迟(p50 / p99)
  • Pending pods:长时间没调度的 Pod 数
  • Preemption rate:抢占频率(过高说明资源不够)
# Prometheus 抓 kube-scheduler metrics
scheduler_pending_pods
scheduler_e2e_scheduling_duration_seconds_bucket
scheduler_queue_incoming_pods_total
scheduler_preemption_victims_count

选型建议

业务 推荐
创业 / 中小团队 / 普通业务 原生
AI 公司(训练 + 推理) 原生 + Volcano
大数据公司(Spark / Flink / Hive) 原生 + YuniKorn
大型互联网(多业务线) 原生 + YuniKorn + Volcano(按场景)
金融 / 政企(强合规 + 多部门) 原生 + YuniKorn

一句话选型

默认原生;AI / HPC 加 Volcano;多租户 / 大数据加 YuniKorn;三套可以并存。