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

bin*_*aly 366 cloud cluster-computing mesosphere kubernetes

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

你为什么要在Mesosphere上使用Kubernetes

小智 497

Kubernetes是一个开源项目,为虚拟机世界或"金属"场景带来"谷歌风格"集群管理功能.它适用于现代操作系统环境(如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应用程序在内的一些新工具.

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

  • 总结(为了快速阅读 - 我希望我做对了):kubernetes是容器的集群管理器(仅限?)而mesos是一个分布式系统内核,它将使您的集群看起来像一个巨大的计算机系统到所有支持的框架和构建要在mesos上运行的应用程序.然而kubernetes是可以在mesos上运行的框架之一.因此,将最终组合为无群集的群集和没有要管理的群集的群集管理器.伟大的新世界:-)(J/K你可以从中得到很多好处,因为kub.更多的是clst.phys.sres.) (53认同)
  • 这是Mesosphere在Kubernetes 1.0 Launch活动中正好谈论这个:https://www.youtube.com/watch?v = aXcdHwQ5GgQ&list = PL69nYSiGNLP0Ljwa9J98xUd6UlM604Y-l&sns = em - 免责声明:这是我. (7认同)
  • 很棒的概述.两个简短的想法:1)我相信Kubernetes现在是beta而不是alpha?2)添加有关Marathon的信息? (4认同)

小智 64

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

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

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

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


小智 36

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

来自kubernetes-mesos的自述文件


use*_*943 17

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

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

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

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

  • 我想我看到你得到的东西--Mesos是一个允许调度程序插入的框架.我对于Mesos省略了一些重要的东西("Mesos不提供给你")的措辞感到困惑,当时那是设计.我删除了我的downvote. (6认同)
  • 这个答案是准确的.Mesos专注于资源管理,它通过允许可插入框架来解决调度问题.一个很好的例子是Netflix通过编写调度框架所做的事情:Fenzo http://techblog.netflix.com/2015/08/fenzo-oss-scheduler-for-apache-mesos.html (5认同)
  • 这个答案不准确且令人困惑。在 Kubernetes 上运行 Mesos 并不容易,事实上,这将是架构的倒置。由于 Kubernetes 不像 Mesos 那样受到广泛关注,因此在 Mesos 之上运行它更有意义。 (2认同)
  • @air我很想知道你如何在这里定义调度程序?Mesos本身似乎没有提供任何调度逻辑?这些都是在Chronos/Marathon/etc中处理的?(也许我错过了什么!:)) (2认同)

ini*_*vik 6

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

\n

当你说“Google Kubernetes”时?

\n
\n

Google Kubernetes Engine 提供了一个托管环境,用于使用 Google\n基础设施部署、\n管理和扩展容器化应用程序。

\n
\n

Kubernetes 是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。\xe2\x80\x9d Kubernetes 是由 Google 根据过去十年在生产环境中运行容器的经验构建的。

\n

Kubernetes 集群中的主要组件是:

\n

pod \xe2\x80\x94 一种将容器分组在一起的方法\n复制控制器 \xe2\x80\x94 一种处理容器生命周期的方法\n标签 \xe2\x80\x94 一种查找和查询容器的方法,以及\n服务 \ xe2\x80\x94 一组执行公共功能的容器

\n

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

\n

它最初是作为伯克利的一个研究项目编写的,后来被 Twitter 采用作为对 Google\xe2\x80\x99s Borg(Kubernetes\xe2\x80\x99 前身)的回应。为了对抗其高度复杂性(Mesos 非常复杂且难以管理!),Mesosphere 出现了,试图将 Mesos 打造成普通人可以使用的东西。

\n

Mesosphere 向 Mesos 提供了出色的 Marathon \xe2\x80\x9cplugin\xe2\x80\x9d,它为用户提供了一种通过 Mesos 管理容器编排的简单方法。

\n

2016 年中,推出了由 Mesosphere \xe2\x80\x94 支持的开源项目 DC/OS(数据中心操作系统)\xe2\x80\x94,它进一步简化了 Mesos,并允许您部署自己的 Mesos 集群,与马拉松,只需几分钟。

\n

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

\n

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

\n

Mesos 的诞生是为了一个拥有大量物理资源来创建大型静态计算集群的世界。它的伟大之处在于,许多现代可扩展数据处理应用程序在 Mesos(Hadoop、Kafka、Spark)上运行得很好,这很好,因为您可以在同一个基本资源池上运行它们,以及打包的新时代容器应用。

\n

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

\n

另外,需要注意的一点是,您实际上可以在 DC/OS 之上运行 Kubernetes 并用它来调度容器,而不是使用 Marathon。这意味着所有 \xe2\x80\x94 DC/OS 的最大区别,顾名思义,更类似于操作系统而不是编排框架。您可以在其上运行非容器化、有状态的工作负载。容器调度由 Marathon 处理。

\n


zin*_*ing 5

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

使用裸机集群,您需要生成像 HDFS、SPARK、MR 等堆栈...所以如果您仅使用裸机集群管理启动与这些相关的任务,将会有很多冷启动时间。

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


And*_*alu 5

“据我了解,两者都是服务器集群管理软件。”

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

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