Apache的Mesos和Google的Kubernetes有什么区别

时间:2014-11-02 22:28:55

标签: cloud cluster-computing mesosphere kubernetes

Apache的Mesos和Google的Kubernetes有什么区别? 我知道两者都是服务器集群管理软件。任何人都可以详细说明主要区别在哪里 - 什么时候会选择哪个框架?

为什么要使用Kubernetes on top of Mesosphere

7 个答案:

答案 0 :(得分:471)

Kubernetes是一个开源项目,它为虚拟机或“金属”场景带来了“Google风格”集群管理功能。它适用于现代操作系统环境(如CoreOS或Red Hat Atomic),可提供为您管理的轻量级计算“节点”。它是用Golang编写的,具有轻量级,模块化,可移植性和可扩展性。我们(Kubernetes团队)正在与许多不同的技术公司(包括策划Mesos开源项目的Mesosphere)合作,将Kubernetes建立为与计算集群交互的标准方式。我们的想法是根据我们在Google的经验,重现我们看到人们需要构建群集应用程序的模式。其中一些概念包括:

  • pods - 一种将容器分组在一起的方法
  • 复制控制器 - 一种处理容器生命周期的方法
  • 标签 - 查找和查询容器的方法,
  • services - 执行常用功能的一组容器。

因此,仅凭Kubernetes,您就会拥有一些简单,易于上手,易于移植和可扩展的内容,可以将“群集”作为名词添加到您以最轻的方式管理的内容中。在群集上运行应用程序,并停止担心单个计算机。在这种情况下,群集就像VM一样是一种灵活的资源。它是一个逻辑计算单元。将其调高,使用,调整大小,快速轻松地将其调低。

使用Mesos,在基本愿景方面存在相当多的重叠,但产品在其生命周期中处于完全不同的点,并且具有不同的甜点。 Mesos是一个分布式系统内核,它将许多不同的机器拼接成逻辑计算机。它诞生于一个拥有大量物理资源来创建大型静态计算集群的世界。最棒的是,许多现代可扩展的数据处理应用程序在Mesos(Hadoop,Kafka,Spark)上运行良好,这很好,因为您可以在同一个基本资源池上运行它们,以及新的容器打包应用程序。它比Kubernetes项目更重,但由于像Mesosphere这样的人的工作,它变得更容易和更容易管理。

现在真正有趣的是,Mesos目前正在适应添加大量Kubernetes概念并支持Kubernetes API。因此,它将成为获取Kubernetes应用程序更多功能的门户(高可用性主,更高级的调度语义,扩展到大量节点的能力),如果您需要它们,并且非常适合运行生产工作负载(Kubernetes)仍然处于阿尔法状态。)

当被问到时,我倾向于说:

  1. 如果您不熟悉聚类世界,Kubernetes是一个很好的起点;它是最快,最简单,最轻松的方式来启动轮胎并开始尝试面向集群的开发。它提供了非常高的可移植性,因为它得到了许多不同提供商(Microsoft,IBM,Red Hat,CoreOs,MesoSphere,VMWare等)的支持。

  2. 如果您有现有的工作负载(Hadoop,Spark,Kafka等),Mesos会为您提供一个框架,让您可以将这些工作负载相互交错,并混合使用包括Kubernetes应用程序在内的一些新工具。 / p>

  3. 如果您需要Kubernetes框架中社区尚未实现的功能,Mesos会为您提供一个逃生阀。

答案 1 :(得分:61)

这两个项目都旨在使其更容易部署和管理数据中心或云中容器内的应用程序。

为了在Mesos上部署应用程序,可以使用Marathon或Kubernetes for Mesos。

Marathon是一个集群范围的init和控制系统,用于在cgroups和Docker容器中运行Linux服务。 Marathon有许多不同的金丝雀部署功能,是一个非常成熟的项目。

Marathon运行在Mesos之上,这是一个高度可扩展,经过实战考验且灵活的资源管理器。事实证明,Marathon可以在许多生产环境中进行扩展和运行。

Mesos和Mesosphere技术堆栈为运行现有Linux工作负载提供了类似云的环境,但它也为构建新的分布式系统提供了本机环境。

Mesos是一个分布式系统内核,具有完整的API,可直接针对数据中心进行编程。它抽象出底层硬件(例如裸机或虚拟机),只是暴露资源。它包含用于编写分布式应用程序的原语(例如Spark最初是Mesos App,Chronos等),例如消息传递,任务执行等。因此,全新的应用程序成为可能。 Apache Spark是最初为Mesos构建的新(在Mesos术语中称为)框架的一个示例。这实现了非常快速的开发--Spark的开发人员不必担心网络在节点之间分配任务,因为这是Mesos中的核心原语。

据我所知,今天在生产部署中,Kubernetes并未在Google内部使用。对于制作,谷歌使用Omega / Borg,它与Mesos / Marathon模型更相似。然而,使用Mesos作为基础的好处是Kubernetes和Marathon都能在它上面运行。

有关Marathon的更多资源:

https://mesosphere.github.io/marathon/

视频: https://www.youtube.com/watch?v=hZNGST2vIds

答案 2 :(得分:34)

  

Kubernetes和Mesos是天堂般的比赛。 Kubernetes支持Pod(一组共存容器)抽象,以及用于服务发现,负载平衡和复制控制的Pod标签。 Mesos为群集中节点之间的pod提供了细粒度的资源分配,并且可以使Kubernetes与在相同群集资源上运行的其他框架很好地协作。

来自readme of kubernetes-mesos

答案 3 :(得分:15)

Mesos和Kubernetes都可以用来管理一组机器并抽象出硬件。

根据设计,Mesos不会为您提供调度程序(决定运行进程的位置和时间以及进程失败时该怎么做),您可以使用Marathon或Chronos之类的东西,或者自己编写

Kubernetes将为您安排开箱即用,并且可以用作Mesos的调度程序(如果我在这里错了,请纠正我!)这是您可以一起使用它们的地方。 Mesos可以有多个调度程序共享同一个集群,所以理论上你可以在同一个硬件上一起运行kubernetes和chronos。

超级简单:如果你想控制容器的安排方式,那就选择Mesos,否则Kubernetes会摇滚。

答案 4 :(得分:4)

我喜欢这个简短的视频mesos learning material

使用裸机群,你需要产生像HDFS,SPARK,MR等堆栈......所以如果你只使用裸机集群管理启动与这些相关的任务,那么启动时间就会很冷。

使用mesos,您可以在裸机上安装这些服务,您可以避免这些基本服务的启动时间。这是mesos做得很好的事情。并且可以被建在其上的kubernetes使用。

答案 5 :(得分:2)

Mesos和Kubernetes都是容器编排工具。

您说“ Google Kubernetes”吗?

Google Kubernetes Engine提供了用于部署, 使用Google管理和扩展您的容器化应用程序 基础设施。

Kubernetes是一个开源系统,用于自动化容器化应用程序的部署,扩展和管理。” Kubernetes是Google过去十年在生产中运行容器的经验所建立的。

Kubernetes集群中的主要组件是:

pods-将容器分组在一起的方法 复制控制器-处理容器生命周期的一种方法 标签-查找和查询容器的方法,以及 服务-一组执行共同功能的容器

Mesos是Apache的一个开源集群管理项目,旨在将其扩展到从数百个主机到数千个主机的超大型集群。 Mesos支持各种工作负载,例如Hadoop任务,云本机应用程序等。它使您能够以分布式方式运行容器化和非容器化工作负载。

它最初是作为在伯克利的一个研究项目而编写的,后来被Twitter采纳为对Google的Borg(Kubernetes的前身)的回应。为了解决其高度复杂性(Mesos极其复杂且难以管理!),Mesosphere出现了,试图使Mesos成为普通人类可以使用的东西。

Mesosphere为Mesos提供了出色的Marathon“插件”,这为用户提供了一种简便的方法来管理Mesos上的容器编排。

2016年中,引入了由Mesosphere支持的开源项目DC / OS(数据中心操作系统),它进一步简化了Mesos,并允许您使用Marathon部署自己的Mesos集群。分钟。

现在,如果我们比较kubernetes和Mesos(DC / OS)

kubernetes是容器的群集管理器,而mesos是分布式系统内核,对于所有支持在mesos上运行的受支持的框架和应用程序来说,群集将使您的群集看起来像一个巨型计算机系统。

Mesos诞生于一个拥有大量物理资源来创建大型静态计算集群的世界。这样做的好处是,许多现代可伸缩数据处理应用程序在Mesos(Hadoop,Kafka,Spark)上运行得非常好,这很不错,因为您可以将它们全部都在同一个基本资源池上运行,并且打包了新的容器应用。

Mesos集群也与Marathon集群一起运行。由Mesosphere创建的Marathon旨在启动,监视和扩展长期运行的应用程序,包括云本机应用程序。客户端通过REST API与Marathon进行交互。

此外,需要注意的一点是,您实际上可以在DC / OS上运行Kubernetes并使用它调度容器,而不是使用Marathon。这暗示着最大的区别-顾名思义,DC / OS更类似于操作系统而不是业务流程框架。您可以在其上运行非容器化的有状态工作负载。容器调度由马拉松比赛处理。

答案 6 :(得分:1)

“我知道两者都是服务器群集管理软件。”

这句话并不完全正确。 Kubernetes不管理服务器群集,而是对容器进行编排,以使它们可以以最小的麻烦和暴露度协同工作。 Kubernetes允许您将应用程序的某些部分定义为“荚”(一个或多个容器),这些“荚”由“部署”或“守护程序集”(以及其他一些容器)交付,并通过服务公开给外界。 但是,Kubernetes并不管理集群本身(有一些工具可以为您配置,配置和扩展集群,但它们不是Kubernetes本身的一部分)。

另一方面,Mesos更接近“集群管理”,因为它可以控制在哪里运行的内容,而不仅仅是在调度容器方面。 Mesos还管理在群集服务器上运行的独立软件。尽管Mesos大部分被用作Kubernetes的替代品,但它可以轻松地与Kubernetes一起使用,尽管功能在许多领域都有重叠,但Mesos可以做得更多(但是在重叠的部分Kubernetes往往会更好)。