本文最后更新于: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
    basic-concept

framework

  • One-time scheduling process
    framework