当前国内最火的容器集群管理非Kubernetes和Mesos莫属,那么这两种解决方案各自的应用场景和解决的痛点分别是什么呢,这篇内容就来带大家简单的聊一聊他们各自特性,内容来自于网络上各位大咖的总结,就当是一篇随笔记录吧。
Kubernetes简介
Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。它可以完美运行在现代的操作系统环境(比如CoreOS和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。Kubernetes使用Golang开发,具有轻量化、模块化、便携以及可扩展的特点。系统架构如下图:
Kubernetes集群的主要组件是:
- pods : 容器组。Kubernetes以一个容器组为部署和调度的单位进行操作。一个典型的pod一般包含1到5个容器组成一个小型的集群提供服务。
- Flat Networking Space : Kubernetes默认的网络类型为单一的扁平网络。允许所有的pod进行互相访问。在同一个pod中的容器共享同一个IP,容器之间的互相访问使用本地地址加端口的方式。
- Labels:标签是附加到对象的键值对,可用于以单个集合搜索和更新多个对象。
- Services:服务是可以通过名称解决的端点,可以使用标签选择器连接到端口。 该服务将自动轮询pod之间的请求。 Kubernetes将为集群设置一个DNS服务器,用于监视新服务,并允许按名称进行寻址。
- Replication Controllers: 复制控制器是在Kubernetes中实例化pod的方法。 它们控制和监视运行的服务器端口的数量,从而提高容错能力。
因此,只要使用Kubernetes你就能够简单并快速的启动、移植并扩展集群。在这种情况下,集群就像是类似虚拟机一样灵活的资源,它是一个逻辑运算单元。打开它,使用它,调整它的大小,然后关闭它,就是这么快,就是这么简单。
Mesos + Marathon简介
Apache Mesos是一个开源的群集管理器,旨在扩展到数百到数千个主机的大型群集。 Mesos支持多种工作负载,如Hadoop任务,云本地应用程序等.Mesos的架构旨在提供高可用性和弹性。
Mesos集群中的主要组件有:
- Mesos Agent Nodes: 负责运行最终的需求任务。 所有代理将可用资源的列表提交给master。
- Mesos Master : Master负责向代理发送任务。 它保留了可用资源的列表,并将其“提供”给框架,例如Hadoop的。 Master根据分配策略决定提供多少资源。 通常会有备用的Master实例在发生故障时接管。
- Zookeeper: 用于选举和查找现任Master的地址。 运行ZooKeeper的多个实例来确保可用性并处理故障。
- Frameworks: Frameworks与Master进行协调,将任务调度到agent节点上。 Frameworks 由两个部分组件组成:
a. 用于执行程序进程运行在代理程序上,并负责执行任务
b. 用于调度的进程向主机注册,并根据主机的需求选择要使用的资源
Marathon由Mesosphere创建,旨在启动,监控和扩展长服务应用程序,包括云端的应用程序。 客户通过REST API与Marathon交互。 还可以支持健康检查和可用于与负载平衡器集成或用于分析指标的事件流。
Mesos和Kubernetes的愿景差不多,但是它们在不同的生命周期中各有不同的优势。Mesos是分布式系统内核,它可以将不同的机器整合在一个逻辑计算机上面。当你拥有很多的物理资源并想构建一个巨大的静态的计算集群的时候,Mesos就派上用场了。有很多的现代化可扩展性的数据处理应用都可以在Mesos上运行,包括Hadoop、Kafka、Spark等,同时你可以通过容器技术将所有的数据处理应用都运行在一个基础的资源池中。在某个方面来看,Mesos是一个比Kubernetes更加重量级的项目,但是得益于那些像Mesosphere一样的贡献者,Mesos正在变得更加简单并且容易管理。
Mesos正在接受Kubernetes的理念,并已经开始支持Kubernetes API。因此如果你需要它们的话,它将是对你的Kubernetes应用去获得更多能力的一个便捷方式(比如高可用的主干、更加高级的调度命令、去管控很大数目结点的能力),同时能够很好的适用于产品级工作环境中(毕竟Kubernetes仍然还是一个初始版本)。
最后,总结一下Kubernetes的开发者Craig对于两个集群框架的说明:
1、如果你是一个集群世界的新手,那Kubernetes是一个很棒的开始。它可以用最快的、最简单的、最轻量级的方式来解决你的问题,并帮助你进行面向集群的开发。它提供了一个高水平的可移植方案,因为很多厂商已经开始支持Kubernetes,例如微软、IBM、Red Hat、CoreOS、MesoSphere、VMWare等。
2、如果你拥有已经存在的工作任务(Hadoop、Spark、Kafka等),那Mesos可以给你提供了一个将不同工作任务相互交错的框架,然后还可以加入一些新的东西,比如Kubernetes应用。
3、如果你想使用的功能Kuberntes还没实现,那Mesos是一个不错的替代品,毕竟它已经成熟。
Mesos和Kubernetes都是为帮助应用程序在群集环境中运行而创建的,Kubernetes更加专注于运行容器群集,具有更多功能。
如果您同意Google的意见或没有具体的方式来布局集群,Kubernetes是一个很好的选择,可以为您处理许多幕后烦恼。
与此同时,Mesos具有更多的灵活性,更强大的调度功能,并且能够与更多种类的调度器配合使用,并且已经从原始创建中进行了修改,以更好地支持容器。
非Docker和非集成应用程序可以在Mesos上运行,它能够处理将会慢慢转移到容器的非常复杂的工作负载。它还经过数万个节点的测试,证明了强大的可扩展性和基础设施。但是,您需要更加自信地使用此产品,因为您需要自己管理负载平衡和其他高级扩展功能。
在确定您的需求之后,您将能够为您找到完美的容器编排工具。
参考链接:
https://platform9.com/blog/compare-kubernetes-vs-mesos/
http://techgenix.com/swarm-kubernetes-mesos/