gang scheduler:
翻译应该是,群调度。也就是一个调度单元以一个群(多个pod)为单元,当所有pod同时成功,就是成功的

关于k8s scheduler的功能实现,可以参考知乎专栏https://zhuanlan.zhihu.com/p/101908480,里面是以1.16版本作为参考的,质量比较高。

从pod到multi pod的调度

pod是k8s的最小调度单元,但是,群调度需要在上面做一层封装。一般会设计一层CRD,监听CRD的资源,做相应的逻辑控制。

argo

argo工作流调度工具,就是这种思路,具体架构和文档可以参考github说明。argo支持quick failover,也就是DAG工作流的一个环节failed了,整个任务就failed。

kube-batch

argo是一个比较朴素的工具,对于ML/DL任务,通常是分布式训练,可能会有很多个pod,这个时候Workflow Spec就会变得很复杂。在这种情况下,kube-batch就派上用场了
https://github.com/kubernetes-sigs/kube-batch
在这里插入图片描述
kube-batch提供两个核心功能

  • batch scheduling: 批量调度任务
  • resource shaing between multi-tenant: 多个租户下的资源共享,但是个
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐