Apache的Mesos和谷歌的Kubernetes到底有什么区别? 我知道这两个都是服务器集群管理软件。谁能详细说明一下主要的区别在哪里——什么时候哪个框架是首选的?

为什么要在Mesosphere上使用Kubernetes呢?


当前回答

Mesos和Kubernetes都可以用来管理机器集群,并抽象出硬件。

Mesos在设计上没有提供调度器(用于决定在何处、何时运行进程以及如果进程失败该做什么),您可以使用Marathon或Chronos之类的调度器,也可以编写自己的调度器。

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

超级简单:如果你想控制你的容器如何调度,选择Mesos,否则Kubernetes会很糟糕。

其他回答

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

当你说“谷歌Kubernetes”的时候?

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

Kubernetes是一个用于自动化部署、扩展和管理容器应用程序的开源系统。”Kubernetes是谷歌根据他们过去十年在生产中运行容器的经验构建的。

Kubernetes集群的主要组件有:

豆荚-一种将集装箱组合在一起的方法 复制控制器——一种处理容器生命周期的方法 标签-一种查找和查询容器的方法 服务——一组执行公共功能的容器

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

它最初是作为伯克利的一个研究项目编写的,后来被Twitter采用,作为谷歌的Borg (Kubernetes的前身)的答案。为了应对Mesos的高度复杂性(Mesos超级复杂,很难管理!),Mesosphere开始尝试将Mesos变成普通人类可以使用的东西。

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

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

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

Kubernetes是一个容器的集群管理器,而mesos是一个分布式系统内核,它会让你的集群看起来像一个巨大的计算机系统,所有支持的框架和应用程序都是在mesos上运行的。

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

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

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

Mesos和Kubernetes都可以用来管理机器集群,并抽象出硬件。

Mesos在设计上没有提供调度器(用于决定在何处、何时运行进程以及如果进程失败该做什么),您可以使用Marathon或Chronos之类的调度器,也可以编写自己的调度器。

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

超级简单:如果你想控制你的容器如何调度,选择Mesos,否则Kubernetes会很糟糕。

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

来自kubernetes-mesos的自述

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

This statement isn't entirely true. Kubernetes doesn't manage server clusters, it orchestrates containers such that they work together with minimal hassle and exposure. Kubernetes allows you to define parts of your application as "pods" (one or more containers) that are delivered by "deployments" or "daemon sets" (and a few others) and exposed to the outside world via services. However, Kubernetes doesn't manage the cluster itself (there are tools that can provision, configure and scale clusters for you, but those are not part of Kubernetes itself).

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

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

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

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

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

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

Mesos is a distributed systems kernel, with a full API for programming directly against the datacenter. It abstracts underlying hardware (e.g. bare metal or VMs) away and just exposes the resources. It contains primitives for writing distributed applications (e.g. Spark was originally a Mesos App, Chronos, etc.) such as Message Passing, Task Execution, etc. Thus, entirely new applications are made possible. Apache Spark is one example for a new (in Mesos jargon called) framework that was built originally for Mesos. This enabled really fast development - the developers of Spark didn't have to worry about networking to distribute tasks amongst nodes as this is a core primitive in Mesos.

据我所知,Kubernetes目前还没有在谷歌的生产部署中使用。对于生产,谷歌使用Omega/Borg,这更类似于Mesos/Marathon模型。然而,使用Mesos作为基础的好处是Kubernetes和Marathon都可以在它上面运行。

更多关于马拉松的资源:

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

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