Apache的Mesos和Google的Kubernetes 有什么不同?
Kubernetes是一个对于虚拟机或者实体机场景具有Google风格集群管理功能的开源项目。它能良好的运行于现代的操作系统环境(比如CoreOS和Red Hat Atomic),并且提供可以被你管控的轻量级的计算节点。它是用Golang开发的,并且具有轻量化、模块化、便携的以及可扩展的特点。我们(Kubernetes开发团队)正在和一些不同的技术公司(包括维护着Mesos项目的MesoSphere)合作来把Kubernetes变成一种与计算集群相互影响的标准化方法。这个想法是为了重新定义这样的一种模式,那就是“人们需要以在Google的经历为基础来搭建集群应用”。这些概念包括如下内容:
- pods:一种将容器组织在一起的方法
- replication controllers(复制控制器):一种控制容器生命周期的方法
- labels(标签):一种找到和查询容器的方法
- services(服务):一个用普通函数表现出来的容器集合
因此,单独使用Kubernetes 你能够拥有有一个简单的、容易搭建并且运行起来的、便携的可扩展的工具,并且允许你把“集群”这个词添加进你所能管理的最轻量级的方法的名词本里。在一个集群上面运行你的程序吧!不用再去担心一个单独的机器了。在这种情况下,集群就像是类似虚拟机一样灵活的资源。它是一个逻辑运算单元。打开它,使用它,调整它的大小,然后关闭它,就是这么快,就是这么简单。
用Mesos的话,将会与基础版本有相当重叠的部分,但是这些产品在其生命周期中有相当多的不同之处的,并且有很多的甜蜜点。Mesos具有分布式系统内核,它可以将不同的机器整合在一个逻辑计算机上面。当你拥有很多物理性的资源来创造一个巨大的静态的计算集群的时候,它诞生的意义才会体现出来。一件很棒的事情是有很多的现代化可扩展性的数据处理应用在Mesos上面都运行的很好(包括Hadoop、Kafka、Spark等),同时它很好的原因是它能够允许你将那些所有的数据处理应用都运行在一个基础的资源池里面,同时给你一个新的容器包应用。它是一个在某种程度上比Kubernete更加重量级的项目,但是得益于它的那些像Mesosphere一样的贡献者,Mesos比Kubernetes变得更加简单同时更加容易去管理。
现在真正有趣的事情是Mesos现在越来越适应并且被添加上了很多Kubernete的概念同时支持了很多Kubernetes的API。因此如果你需要它们的话,它将是对你的Kubernetes应用去获得更多能力的一个便捷方式(比如高可用的主干、更加高级的调度命令、去管控很大数目结点的能力),同时能够很好的适用于产品级工作环境中(毕竟Kubernetes任然还是一个初始版本)。
当被问到区别的时候,我会这样说:
1.如果你是一个集群世界的新手,Kubernetes是一个很棒的起点。它是最快的、最简单的、最轻量级的方法去摆脱束缚,同时开启面向集群开发的实践。它提供了一个高水平的可移植方案,因为它是被一些不同的贡献者所支持的(例如微软、IBM、Red Hat、CoreOs、MesoSphere、VMWare等等)。
2.如果你已经有已经存在的工作任务(Hadoop、Spark、Kafka等等),Mesos给你提供了一个可以让你将不同工作任务相互交错的框架,然后混合进一个包含Kubernetes 应用的新的东西。