问题描述
Apache的Mesos和Google的Kubernetes有什么区别?我知道两者都是服务器集群管理软件。有没有人可以详细说明主要区别在哪里? - 什么时候会优先采用哪种框架?
高票回答
Kubernetes是一个开源项目,为虚拟机或“裸金属”场景带来“谷歌风格”的集群管理功能。它适用于现代操作系统环境(如CoreOS或Red Hat Atomic),可管理轻量级计算“节点”。它是用Golang编写的,具有轻量级,模块化,可移植性和可扩展性。我们(Kubernetes团队)正在与许多不同的技术公司(包括策划Mesos开源项目的Mesosphere)合作,将Kubernetes建立为与计算集群交互的标准方式。我们的想法是根据我们在Google的经验,重现我们看到人们需要构建群集应用程序的模式。其中一些概念包括:
- pods - 将容器组合在一起的方法
- replication controllers - 一种处理容器生命周期的方法
- labels - 查找和查询容器的方法
- services - 一组执行共同功能的容器。
因此,仅使用Kubernetes,您就会拥有一些简单,易于启动,可移植和可扩展的功能。在群集上运行应用程序,而无需担心单个计算机。在这种情况下,群集就像VM一样是一种灵活的资源。它是一个逻辑计算单元,可以快速轻松地开启,使用,调整大小,关闭。
使用Mesos,在基本视觉方面存在相当多的重叠,但产品在其生命周期中处于完全不同的点并且具有不同的优点。Mesos是一个分布式系统内核,它将许多不同的机器拼接成逻辑计算机。它诞生于一个拥有大量物理资源来创建大型静态计算集群的世界。最棒的是,许多现代可扩展的数据处理应用程序在Mesos(Hadoop,Kafka,Spark)上运行良好,这很好,因为您可以在同一个基本资源池上运行它们,以及新的容器打包应用程序。它比Kubernetes项目更重,但由于像Mesosphere这样的人的工作,它变得更容易和更容易管理。
现在真正有趣的是,Mesos目前正在适配添加大量Kubernetes概念并支持Kubernetes API。因此,它将成为获取Kubernetes应用程序更多功能的门户(高可用性主,更高级的调度语义,扩展到大量节点的能力),如果您需要它们,并且非常适合运行生产工作负载(Kubernetes仍处于alpha状态)。
当被问到时,我倾向于说:
- 如果您不熟悉集群的世界,Kubernetes是一个很好的起点;它是最快,最简单,最轻松的方式来启动并开始尝试面向集群的开发。它提供了非常高的可移植性,因为它得到了许多不同提供商(Microsoft,IBM,Red Hat,CoreOs,MesoSphere,VMWare等)的支持。
- 如果您有现有的工作负载(Hadoop,Spark,Kafka等),Mesos会为您提供一个框架,让您可以将这些工作负载相互交错,并混合使用包括Kubernetes应用程序在内的一些新工具。
- 如果您需要Kubernetes框架中社区尚未实现的功能,Mesos会为您提供一个类似方案。
原文链接
What’s the difference between Apache’s Mesos and Google’s Kubernetes