apache的Mesos和google的Kubernetes有什么区别

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

为什么要使用Kubernetes在Mesosphere的顶部?

117568 次浏览

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

  • 豆荚 -一种将容器分组的方法
  • 复制控制器 -一种处理容器生命周期的方法
  • 标签 -一种查找和查询容器的方法
  • 服务 -执行公共功能的一组容器。

因此,仅使用Kubernetes,你就会拥有一些简单、易于启动和运行、可移植和可扩展的东西,它将“集群”作为一个名词,以尽可能轻的方式管理。在集群上运行应用程序,不要再担心单个机器。在这种情况下,集群就像虚拟机一样是一种灵活的资源。它是一个逻辑计算单元。打开它,使用它,调整它的大小,把它迅速和容易。

对于Mesos,在基本愿景方面有相当多的重叠,但产品处于生命周期中非常不同的点,具有不同的最佳点。Mesos是一个分布式系统内核,它将许多不同的机器拼接成一个逻辑计算机。它是为一个拥有大量物理资源来创建大型静态计算集群的世界而诞生的。它的优点在于,许多现代可扩展的数据处理应用程序都可以在Mesos上运行得很好(Hadoop、Kafka、Spark),它的好处在于,你可以在相同的基本资源池上运行它们,以及你的新时代容器打包应用程序。它在某种程度上比Kubernetes项目更重,但由于Mesosphere等人的工作,它变得越来越容易管理。

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

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

  1. 如果你是集群世界的新手,Kubernetes是一个很好的开始;这是开始尝试面向集群开发的最快、最简单和最轻的方法。它提供了非常高的可移植性,因为它得到了许多不同提供商的支持(Microsoft、IBM、Red Hat、CoreOs、MesoSphere、VMWare等)。

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

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

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

kubernetes-mesos的Readme

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

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

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

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

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

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

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

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

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

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

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

更多关于马拉松的资源:

< a href = " https://mesosphere.github。io /马拉松noreferrer“rel = > https://mesosphere.github.io/marathon/ < / >

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

我喜欢这个短片Mesos学习材料

对于裸金属集群,你需要生成HDFS、SPARK、MR等堆栈……因此,如果只使用裸金属集群管理启动与这些相关的任务,将会有很多冷启动时间。

使用mesos,您可以将这些服务安装在裸金属之上,并且可以避免这些基础服务的启动时间。这是内消旋体擅长的。并且可以由kubernetes在其之上构建。

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

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

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

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

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

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

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

Kubernetes集群的主要组件有:

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

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处理。