首页 文章

什么's the difference between Apache' s Mesos和谷歌的Kubernetes

提问于
浏览
320

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

你为什么要使用Kubernetes on top of Mesosphere

5 回答

  • 29

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

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

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

  • 3

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

    • pods - 一种将容器分组在一起的方法

    • 复制控制器 - 一种处理容器生命周期的方法

    • 标签 - 一种查找和查询容器的方法,以及

    • services - 一组执行常用功能的容器 .

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

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

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

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

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

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

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

  • 441

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

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

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

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

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

    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

  • 14

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

    来自readme of kubernetes-mesos

  • 54

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

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

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

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

相关问题