Kubernetes 中基于策略的资源分配

此文是2017年5月6日Kubernetes Meetup 2017 成都站,嘉宾-IBM中国软件架构师马达的主题演讲《Kubernetes 中基于策略的资源分配》。IT大咖说(id:itdakashuo)作为活动的视频合作方,经主办方和嘉宾授权发布。

编辑:IT大咖说

阅读字数:1322,用时: 5分钟

摘要

无论是传统企业还是如今新兴的互联网行业,对于资源管理和调度的需求都是非常大的。IBM中国系统部软件架构师马达以Kuberntes为例,全方位详细解析它基于策略的资源调度。

嘉宾分享视频回顾及PPT:http://suo.im/4ydQGX

User CasesRunmultiple type of workloads in DataCenter

Mesos最主要是对资源的管理和分配。Kuberntes进行对微服务的管理和资源调度。因为Spark没有资源管理这一层,所以我们自己做了Spark SessionScheduler,主要是做资源管理和调度。

我们希望在数据中心里面跑的作业是多种多样的,也希望能跑一些bigdate、HPC、MPI这样的作业。所以对这三块领域有不同的workload的需求。

Kuberntes features & gaps

Kuberntes现在有一些features去解决用户的问题。

Quota

第一个最常用的就是Quota。Quota现在是一个静态的划分,它有一个上限。我更希望它是一个max,用类似云计算的想法去做。

multiple Scheduler

还有一个是multiple Scheduler,这是之前华为提出的功能。这个功能是希望在一个class里有两个Scheduler。但Scheduler还没有解决资源分配的问题,这中间会存在比较多的问题。

no cluster-level Qos

这个最后还是只是Node-level Qos来做,没有全局class的调度。

Re- Scheduling

Kuberntes里面有一个Re- Scheduling。当整个class运行一段时间以后, Re- Scheduling会重新从全局的范围内再去看一下,根据现在的策略调一个更优的解。

Preemption & Eviction是支持杀死一个pod。那个pod其实不会真正的删除,只是把它杀掉了,然后推到Scheduling里重新来做。

现在Kuberntes里有好多object,还有人提不同的需求去添加新的object,所以他们不再添加新的API默认支持的object。而是用ThirdPartyResourcs。

Kuberntes更像是基于元数据,通过修改元数据来驱动彼此间的协作。Kuberntes用自己写的Controller只要修改元数据的值就可以了,不需要修改interface。

ArchitectOverview

BatchJobController会拿到所有的资源,然后根据现在的策略和配置去算一个Queue里应该分得多少资源。

之前在讨论的时候,我们是想建立一个跟space平级的概念也叫Queue,但是后来更倾向于通过namespace来做。所以BatchJobController会基于每一个namespace分配里面区域。

Quota定义了namespace中能利用的最大资源,而BatchJobController算的值则在中间来回浮动。

Pre-emption& Reclam in BatchJobController

开始第一步会重新计算namespace的值。这个时候BatchJobController就要把namespace1里面多余的pod杀掉,杀掉了以后再把namespace2起来。所以在整个集群里面,ns1和ns2彼此之间的资源就可以共享分配。

Resourcs Requipments of BatchJob

我们不仅做了资源的策略,还做了作业的策略。这块大概分为几种case。

第一种case比较常见。起一个executor,里面不停的跑task。这是最简单的一种资源分配,在创建起来的时候就知道作业有多少个资源的需求,可以调度。

第二个executor是根据当前的这个请求进行动态调整,就是可能executor里一次跑多个task,也可能每次只跑一个task,但这个task能多次跑。这样的话可以做到细力度的调度。

第三种和MPI比较像。MPI有一个比较苛刻的要求,它要求所有资源都满足了以后,它才能起来。这整个class彼此之间是fix的。

大概就是这几种不同的部署方式和结构。对我们来说,我们最主要看到的是这个资源的请求方式到底是什么样,以及它的限制。

具体的讨论可以参考: https://github.com/kubernetes/features/issues/269

谢谢大家!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Hadoop v3.1 YARN和Kubernetes v1.9对GPU调度支持的比较 1.0. namespac...
    eddy88阅读 1,350评论 1 1
  • •Kubernetes介绍1.背景介绍云计算飞速发展- IaaS- PaaS- SaaSDocker技术突飞猛进-...
    Zero___阅读 14,882评论 0 21
  • YarnYarn产生背景:Yarn直接来自于MR1.0MR1.0 问题:采用的是master slave结构,ma...
    时待吾阅读 6,133评论 2 23
  • 感谢王雨梅老大的分享辛苦了做任何事都要有一个很好的态度。一个很好的状态!才能把事情做到做好!所以我们在做任何事情,...
    瘦瘦塑身阅读 224评论 0 0
  • 万物皆我魂,我魂皆万物;魂在我中生,魂在我中无。
    初标阅读 305评论 0 0

友情链接更多精彩内容