本文最后更新于:2020年7月6日 晚上
2019.12.20 本周五在组内做了一次技术分享,内容关于kube-batch,也在其中阐述了些自我思考。本文记录下分享的主要内容,PPT就不贴上来了。
kube-batch 主要概念
调度器实际上解决的是最优解问题,在 kube-batch 中这个问题就是每一个 Action,原生支持
- allocate(分配)
- backfill(回填)
- reclaim(回收)
- preempt(抢占)
如何得到某个问题的最优解呢?需要通过多个维度进行打分,最终综合计算进行判断,在 kube-batch 中每一个维度就对应一个 plugin 具体的求解。针对 job 原生支持
drf(主导资源均衡算法)
gang(批调度)
predicates(谓词)
priority(job 优先级)
nodeorder(node 优先级)
conformance(驱逐时判断维度)
对 queue 原生支持 proportion(队列之间的资源权重)
session:每一次调度周期都拥有唯一的 session,session 中包含本轮调度时集群中某些资源的SnapShot,包括
Ready Node 信息
Queue 信息
指定了 podgroup 和 queue 的 job
同时也包含注册成功的 plugin,不同的 plugin 可以拥有不同维度的调度计算函数
queue 和 podgroup 是 kube-batch 中的 CRD
- queue 中包含多个 job (可以为 tf-job、spark job 和 batch job,通过 podgroup 进行映射
- 一个 job 中可能包含多个 task,映射为 pod
- 通过使用 podgroup minMember 保证 job 中最少要调度的 task 个数,即 minMember 用来保证 gang plugin vaild 判断,当job 中所包含的 task 个数少于 minMember 时,将不对此 job 进行批调度
basic concept
- Queue
- Job
- Task
- Podgroup
framework
- One-time scheduling process
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!