Volcano火山:容器与批量计算的碰撞( 三 )
为了平衡同一队列中用户之间的资源使用,需要更细粒度的策略 。 考虑到Kubernetes中的多用户模型,使用名称空间来区分不同的用户,每个命名空间都将配置一个权重,作为控制其资源使用优先级的手段 。
基于时间的公平调度(Fairnessovertime)
对于批处理工作负载,通常不要求在某个时间点公平地分配资源,而是要求在长期内公平地分配资源 。 例如,如果有用户提交大作业,则允许用户(或特定队列)在一定时间内使用整个集群的一半,这是可以接受的,但在下一轮调度(可能是作业完成后数小时)中,应惩罚此用户(或队列)而不是其他用户(或队列) 。 在HTCondor中可以看到如何实现这种行为的好例子 。
面向作业的优先级调度(Job-basedpriority)
Pod优先级/抢占在1.14版本中被中断,它有助于确保高优先级的pod在低优先级的pod之前绑定 。 不过,在job/podgroup级别的优先级上仍有一些工作要做,例如高优先级job/podgroup应该尝试以较低优先级抢占整个job/podgroup,而不是从不同job/podgroup抢占几个pod 。
抢占(PreemptionReclaim)
通过公平分享来支持借贷模型,一些作业/队列在空闲时会过度使用资源 。 但是,如果有任何进一步的资源请求,资源“所有者”将“收回” 。 资源可以在队列或作业之间共享:回收用于队列之间的资源平衡,抢占用于作业之间的资源平衡 。
预留与回填(ReservationBackfill)
当一个请求大量资源的“巨大”作业提交给kubernetes时,当有许多小作业在管道中时,该作业可能会饿死,并最终根据当前的调度策略/算法被杀死 。 为了避免饥饿,应该有条件地为作业保留资源,例如超时 。 当资源被保留时,它们可能会处于空闲和未使用状态 。 为了提高资源利用率,调度程序将有条件地将“较小”作业回填到那些保留资源中 。 保留和回填都是根据插件的反馈触发的:volcano调度器提供了几个回调接口,供开发人员或用户决定哪些作业应该被填充或保留 。
Volcano调度框架
Volcano调度器通过作业级的调度和多种插件机制来支持多种作业;Volcano的插件机制有效的支撑了针对不同场景算法的落地,从早期的gang-scheduling/co-scheduling,到后来各个级别的公平调度 。 下图展示了Volcano调度器的总体架构:
----Volcano火山:容器与批量计算的碰撞//----
Volcano火山:容器与批量计算的碰撞。Cache缓存了集群中Node和Pod信息,并根据PodGroup的信息重新构建Job(PodGroup)和Task(Pod)的关系 。 由于在分布式系统中很难保证信息的同步,因此调度器经常以某一时间点的集群快照进行调度;并保证每个调度周期的决定是一致的 。 在每个调度周期中,Volcano通过以下几个步骤派发作业:
?在每个调度周期都会创建一个Session对象,用来存储当前调度周期的所需的数据,例如,Cache的一个快照 。 当前的调度器中仅创建了一个Session,并由一个调度线程执行;后续将会根据需要创建多个Session,并为每个Session分配一个线程进行调度;并由Cache来解决调度冲突 。
推荐阅读
- 龙之队|解读华为云容器的战略布局,裸金属容器服务会是互联网新趋势吗?
- 环球科学猫7月第2次,日本火山又喷发了,产生8300米灰烬,今年咋了?
- 环球网|火山之巅的“碧玉”——南格拉球山天池
- 央视新闻|日本西之岛火山再次喷发 烟雾升腾至8300米高空
- 经济日报|日本西之岛火山再次喷发
- DNF心情咖啡屋|DNF:增幅14红眼翻车!携带红13斗萝,火山复活币用完都未通关
- DNF心情咖啡屋|火山复活币用完都未通关,DNF:增幅14红眼翻车!携带红13斗萝
- 新华社|日本西之岛火山再次喷发 烟雾升腾至8300米高空
- 日本|日本西之岛火山再次喷发
- 新华网|日本西之岛火山再次喷发
