Volcano是Kubernetes的批处理调度系统,提供高性能任务调度能力。适用于AI、大数据等高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理场景。
一、Volcano调度器
1.1 核心组件Volcano Scheduler
Volcano Scheduler是负责Pod调度的组件,它由一系列action和plugin组成。
-
Action
-
action定义了调度各环节中需要执行的动作。
-
-
plugin
-
plugin根据不同场景提供了action 中算法的具体实现细节。
-
1.2 Volcano工作流程
-
客户端提交的Job
-
客户端提交的Job被调度器识别到并缓存起来
-
周期性开启会话,一个调度周期开始
-
将没有被调度的Job,发送到会话的待调度队列中
-
遍历所有的待调度Job
-
为每个Job找到一个最合适的节点,将该Job 绑定到这个节点。
-
按照定义的次序依次执行enqueue、allocate、preempt、reclaim、backfill等动作
-
action中执行的具体算法逻辑取决于注册的plugin中各函数的实现。
-
-
关闭本次会话

1.3 Volcano自定义资源
Pod组(PodGroup)
-
PodGroup,代表一组强关联Pod的集合,主要用于批处理工作负载场景
-
比如Tensorflow中的一组ps和worker。
-
队列(Queue)
-
容纳一组PodGroup的队列,也是该组PodGroup获取集群资源的划分依据。
作业(Volcano Job,简称vcjob)
-
Volcano Job,Volcano自定义的Job资源类型。
-
区别于Kubernetes Job,vcjob提供了更多高级功能,如可指定调度器、支持最小运行Pod数、 支持task、支持生命周期管理、支持指定队列、支持优先级调度等。
-
Volcano Job更加适用于机器学习、大数据、科学计算等高性能计算场景。
应用扩缩容优先级策略
-
开启Volcano应用扩缩容优先级策略后,将会在集群中新增两类CRD资源
-
BalancerPolicyTemplate,用来进行优先级策略定义
-
Balancer,用来申明扩缩容优先级的作用范围
-
-
一个Balancer CR资源对应一个BalancerPolicyTemplate CR资源,两者结合共同申明哪些工作负载使用了哪些优先级策略。
二、使用Volcano调度工作负载
Volcano是一个基于Kubernetes的批处理平台,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力。针对计算型应用提供了作业调度、作业管理、队列管理等多项功能。
2.1 Volcano调度工作负载
使用Volcano调度工作负载时,只需要在Pod的spec字段中设置schedulerName参数并指定参数值为volcano
2.1.1 使用yaml创建queue

2822

被折叠的 条评论
为什么被折叠?



