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


Answers:


514

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

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

因此,仅凭Kubernetes,您将获得简单,易于安装和运行,可移植且可扩展的功能,从而以最轻量的方式在您管理的事物中添加``集群''作为名词。在群集上运行应用程序,而不必担心单个计算机。在这种情况下,群集就像VM一样是一种灵活的资源。它是一个逻辑计算单元。调高,使用,调整大小,快速轻松地调低它。

对于Mesos,在基本构想方面存在很多重叠,但是产品处于生命周期中的完全不同的时刻,并且具有不同的优势。Mesos是一个分布式系统内核,可将许多不同的机器组合在一起构成一台逻辑计算机。它诞生于一个拥有大量物理资源来创建大型静态计算集群的世界。这样做的好处是,许多现代可伸缩数据处理应用程序都可以在Mesos(Hadoop,Kafka,Spark)上很好地运行,这很好,因为您可以将它们全部与相同年龄的容器打包的应用程序一起在同一个基本资源池上运行。它比Kubernetes项目重一些,但是由于像Mesosphere这样的人的工作,它变得越来越容易管理。

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

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

  1. 如果您不熟悉集群世界,那么Kubernetes是一个不错的起点。这是踢轮胎,开始尝试面向集群开发的最快,最简单,最轻便的方法。由于许多不同的提供商(Microsoft,IBM,Red Hat,CoreO,MesoSphere,VMWare等)都支持它,因此它提供了很高的可移植性。

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

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


4
很棒的概述。有两个简短的想法:1)我相信Kubernetes现在是beta而不是alpha?2)添加有关马拉松的信息吗?
knite 2014年

57
概括起来(为了快速阅读,我希望我理解正确):kubernetes是容器的群集管理器(仅?),而mesos是分布式系统内核,它将使您的群集在所有受支持的框架中看起来像一个巨型计算机系统。以及要在mesos上运行的应用。然而,kubernetes是可以在mesos上运行的一个框架(以及其他)。因此,将两者结合在一起最终会得到一个没有集群的集群和一个没有集群可管理的集群管理器。伟大的新世界:-)(J / K有很多好处,因为kub。则比clst。phys。res。多得多)
masi 2015年

7
以下是Mesosphere在Kubernetes 1.0启动事件中正在谈论的话题:youtube.com/…-免责声明:这是我。
航空

67

这两个项目旨在简化在数据中心或云中的容器内部署和管理应用程序的过程。

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

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

Marathon在Mesos之上运行,Mesos是高度可伸缩,经过战斗测试和灵活的资源管理器。马拉松已被证明可以扩展并在许多生产环境中运行。

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

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

据我所知,今天的生产部署中并未在Google内部使用Kubernetes。对于生产,Google使用Omega / Borg,它与Mesos / Marathon模型非常相似。但是,以Mesos为基础的伟大之处在于Kubernetes和Marathon都可以在其之上运行。

有关马拉松的更多资源:

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

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


37

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

来自kubernetes-mesos的自述文件


17

Mesos和Kubernetes都可以用来管理机器集群并提取硬件。

根据设计,Mesos不会为您提供调度程序(以决定何时何地运行进程以及在进程失败时执行操作),您可以使用Marathon或Chronos之类的东西,也可以编写自己的东西。

Kubernetes将为您开箱即用地进行调度,并且可以用作Mesos的调度器(如果我错了,请纠正我!),您可以在其中一起使用它们。Mesos可以有多个调度程序共享同一个集群,因此从理论上讲,您可以在同一硬件上同时运行kubernetes和chronos。

超级简单:如果您想控制容器的调度方式,请选择Mesos,否则请选择Kubernetes。


1
这个答案是不准确和混乱的。在Kubernetes上运行Mesos没有简单的方法-实际上,这将是架构的倒置。由于Kubernetes的关注范围不如Mesos普遍,因此在Mesos之上运行它更有意义。
ssk2 2015年

1
是的,我的意思是kubernetes运行在Mesos之上。
user2851943

2
@air我很想知道您如何在这里定义调度程序?Mesos本身似乎没有提供任何调度逻辑?这些都是在Chronos / Marathon / etc中处理的吗?(也许我错过了什么!:))
user2851943

6
我想我明白了您的意思-Mesos是一个允许调度程序插入的框架。我对措辞感到困惑,因为它暗示Mesos省略了一些重要的内容(“ Mesos不为您提供”)。设计。我删除了我的选票。
航空

5
这个答案是正确的。Mesos专注于资源管理,并通过允许可插拔的框架来使调度脱钩。Netflix通过编写调度框架所做的工作就是一个很好的例子:Fenzotechblog.netflix.com/2015/08/…–
Camilo Crespo,

4

我喜欢这里的短视频mesos学习资料

对于裸机集群,您将需要生成堆栈,例如HDFS,SPARK,MR等。因此,如果仅使用裸机集群管理启动与这些任务相关的任务,则会有很多冷启动时间。

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


2

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.