前言:我的问题和这个问题有些关系,但我想更深入地谈一下日程安排的具体方面。
除了kubernetes的调度是集中式的,mesos的调度是分散式的之外,两个项目的调度算法有什么不同?
我已经用了半年的kubernetes了,在实践中我从来没有用过mesos。我理解资源提供的概念,但我无法在mesos和kubernetes调度算法之间建立比较,主要是因为我对这两种工具的实现都没有深入的了解。
前言:我的问题和这个问题有些关系,但我想更深入地谈一下日程安排的具体方面。
除了kubernetes的调度是集中式的,mesos的调度是分散式的之外,两个项目的调度算法有什么不同?
我已经用了半年的kubernetes了,在实践中我从来没有用过mesos。我理解资源提供的概念,但我无法在mesos和kubernetes调度算法之间建立比较,主要是因为我对这两种工具的实现都没有深入的了解。
1条答案
按热度按时间92dk7w1h1#
我不确定这是否具有可比性。kubernetes可以作为mesos框架运行。这里描述了它的调度程序。它基于节点的过滤和排序。
mesos两步调度更依赖于框架算法。
mesos提出了基于drf算法的框架。框架也可以通过使用角色和权重来划分优先级。
框架根据出价决定运行哪个任务。每个框架都可以实现自己的任务匹配算法。这是一个np难问题
附录引用自https://medium.com/@armandgrillet/comparison-of-container-schedulers-c427f4f7421
单片调度
单片调度器是由一个处理所有请求的调度代理组成的,它们通常用于高性能计算。单片调度器通常对所有传入的作业应用单一的算法实现,因此很难根据作业类型运行不同的调度逻辑。apache hadoop yarn[55]是一种流行的hadoop体系结构,它将许多调度功能委托给每个应用程序组件,是一种单片调度器体系结构,因为来自应用程序主程序的资源请求必须发送到资源主程序中的单个全局调度器。
两级调度
两级调度器使用一个中心协调器动态地调整分配给每个调度器的资源,以决定每个子集群可以拥有多少资源,它在mesos[50]中使用,并用于hadoop on demand(现在被yarn取代)。在这种体系结构中,分配器通过一次只向一个框架提供一个给定的资源来避免冲突,并通过选择它提供的资源的顺序和大小来实现主要的资源公平性。一次只有一个框架在检查一个资源,因此并发控制被称为悲观的,与同时向多个框架提供资源的乐观并发控制相比,这种策略不易出错,但速度较慢。
共享状态调度
omega授予每个调度器对整个集群的完全访问权,允许它们以完全免费的方式进行竞争。没有中央资源分配器,因为所有的资源分配决策都发生在调度器中。没有中央策略执行引擎,单个调度程序在两级方案的这种变体中进行决策。通过支持独立的调度器实现并公开调度器的整个分配状态,omega可以扩展到许多调度器,并使用自己的调度策略处理不同的工作负载[54]。