随着容器技术的快速发展,目前已形成了“容器生态圈”,如下图所示。
Kubernetes和Mesos作为重要的容器集群管理系统,会使企业和用户在选择时有所犹豫,下面就对这两种系统做简要对比和分析。
一、技术简介
1、Kubernetes
Kubernetes(K8s)是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能。
Kubernetes具有许多优秀特性,包括:
- 强大的容器编排能力:深度集成了Docker,天然适应容器的特点,设计出强大的容器编排能力,比如容器组合、标签选择和服务发现等,可以满足企业级需求。
- 轻量级:遵循微服务架构理论,整个系统划分出各个功能独立的组件,组件之间边界清晰,部署简单,可以轻易地运行在各种系统和环境中。同时,Kubernetes中的许多功能都实现了插件化,可以非常方便地进行扩展和替换。
- 开放开源:吸引了大批开发者和公司参与其中,协同工作共同构建生态圈。同时,Kubernetes同OpenStack、Docker等开源社区积极合作、共同发展。
2、Mesos
Mesos是Apache下的开源分布式资源管理框架,被称为是分布式系统的内核。可以将数据中心中的所有资源CPU、内存和I/O 等,放在一个大的虚拟池进行管理,并对外提供开放。Mesos适用于集群的管理,这意味着它可以隔离不同的任务负载。
Marathon是一个Mesos Framework,能够支持运行长期服务,比如Web应用等。是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如 Tomcat、Play等等。可以进行集群的多进程管理,实现服务的发现,为部署提供REST API服务,SSL与基础认证、配置约束,通过HAProxy、DNS实现服务发现和负载平衡。 Mesos + Marathon是比较成熟的容器集群管理解决方案。
二、技术对比
对于Kubernetes和Mesos,其简要对比如下表所示。
从中可以看出,和Kubernetes相比,Mesos适用规模更大、技术成熟性更高、技术层次更深,但运维成本也更高。
对于任何一种系统,其社区活跃度是决定系统未来发展前景的重要因素。对于Kubernetes和Mesos,其社区活跃度对比如下。从中可以看出,Mesos除了在发布周期方面占有优势之外,在其他方面的活跃度都不及Kubernetes。Kubernetes出现时间较晚,目前正处于蓬勃发展状态,势头十分强劲。
三、Kubernetes VS Mesos
简要来说,Kubernetes和Mesos是“亦敌亦友”的关系。
1、Kubernetes+Mesos
Kubernetes是一个轻量级的容器管理平台,可深度和灵活地进行容器编排。Mesos是分布式系统内核,它可以将不同的机器整合在一个逻辑计算机中,有着非常优秀的资源调度策略,可以认为Mesos和Kubernetes的愿景差不多。
可将Kubernetes整合到Mesos中,即K8SM项目,作为Mesos Framework。K8SM能够将Kubernetes处理并运行在Mesos之上,且可以同任意数量的其他Mesos框架(包括Marathon、Spark、Kafka以及Jenkins等)实现同地协作,从而共享来自同一套集群中的各类资源。
2、按需选择
基于Kubernetes和Mesos的技术特点、使用现状、发展前景等一些因素,对于企业和用户应当选择Kubernetes还是Mesos作为容器集群管理系统,有以下几点建议:
- 如果你是一个集群世界的新手,那Kubernetes是一个很棒的开始。它可以用最快的、最简单的、最轻量级的方式来解决你的问题,并帮助你进行面向集群的开发。它提供了一个高水平的可移植方案,因为很多厂商已经开始支持Kubernetes,例如微软、IBM、Red Hat、CoreOS、MesoSphere、VMWare等。
- 如果你拥有已经存在的工作任务(Hadoop、Spark、Kafka等),那Mesos可以给你提供了一个将不同工作任务相互交错的框架,然后还可以加入一些新的东西,比如Kubernetes应用。
- 如果你想使用的功能Kuberntes还没实现,那Mesos是一个不错的替代品,毕竟它已经成熟。