Kubernetes vs Mesos

简介:

当前国内最火的容器集群管理非Kubernetes和Mesos莫属,那么这两种解决方案各自的应用场景和解决的痛点分别是什么呢,这篇内容就来带大家简单的聊一聊他们各自特性,内容来自于网络上各位大咖的总结,就当是一篇随笔记录吧。


Kubernetes简介

Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。它可以完美运行在现代的操作系统环境(比如CoreOS和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。Kubernetes使用Golang开发,具有轻量化、模块化、便携以及可扩展的特点。系统架构如下图:

wKiom1l3AwmjiN7fAABMK2LeUmY517.png

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的架构旨在提供高可用性和弹性。

wKioL1l3LWiQ8AWEAAOALxS_CZY603.png

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上运行,它能够处理将会慢慢转移到容器的非常复杂的工作负载。它还经过数万个节点的测试,证明了强大的可扩展性和基础设施。但是,您需要更加自信地使用此产品,因为您需要自己管理负载平衡和其他高级扩展功能。

在确定您的需求之后,您将能够为您找到完美的容器编排工具。


参考链接:

http://dockone.io/article/147 

https://stackoverflow.com/questions/26705201/whats-the-difference-between-apaches-mesos-and-googles-kubernetes 

https://platform9.com/blog/compare-kubernetes-vs-mesos/ 




 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1951155


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 Kubernetes C++
Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
当今,容器化技术已成为IT领域的热门话题,而容器编排工具是实现容器自动化部署和管理的关键。本文将比较两种主流的容器编排工具Kubernetes和Docker Swarm,并探讨它们的优缺点,以帮助你选择最适合自己的工具。
|
Kubernetes 调度 C++
Kubernetes vs Docker Swarm:容器编排工具的比较与选择
在当今云计算时代,容器技术的应用越来越广泛。而在众多容器编排工具中,Kubernetes和Docker Swarm是两个备受关注的竞争者。本文将深入比较这两个工具的特点、优势和劣势,帮助读者更好地选择适合自己的容器编排解决方案。
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm了解两者特点,助力选取合适容器编排工具
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
524 1
|
存储 Kubernetes 负载均衡
深入探讨Docker生态系统,Docker Compose vs. Docker Swarm vs. Kubernetes:深入比较
Kubernetes适用于大规模、复杂应用程序和多云部署,具有高度可定制的部署配置和广泛的生态系统。 在选择时,还可以考虑将它们组合使用,以满足不同环境和需求。无论选择哪个工具,容器编排都将成为现代应用程序开发和部署的不可或缺的一部分。
2261 0
|
Kubernetes 调度 Apache
Docker 编排工具比较:Kubernetes、Docker Swarm 和 Mesos,选择最适合你的容器编排方案
Docker 编排工具比较:Kubernetes、Docker Swarm 和 Mesos,选择最适合你的容器编排方案
599 0
|
Kubernetes 搜索推荐 Docker
Kubernetes容器运行时:Containerd vs Docke
Kubernetes容器运行时:Containerd vs Docke
2386 5
|
Kubernetes 调度 C++
kubernetes的节点与节点池概念 vs karpenter的去节点池理念 在调度上的思考
kubernetes的节点与节点池概念 vs karpenter的去节点池理念。 k8s在给定的节点资源或集群资源上调度并运行应用,其先决条件是资源某种程度上既定(即资源总量某种程度上是一定的,虽然有弹性扩容,但资源的规格是固定的,并且一旦扩容完成后再在此资源总量上执行调度决策,这仍然可以看做是资源总量固定),然后在该资源范围上做调度决策。调度的碎片化不可避免。 karpenter的逻辑是去节点
1086 136
|
Kubernetes 网络协议 网络架构
「译文」比较开源 k8s LoadBalancer-MetalLB vs PureLB vs OpenELB
「译文」比较开源 k8s LoadBalancer-MetalLB vs PureLB vs OpenELB
|
存储 Kubernetes NoSQL
【K8S系列】第七讲:有状态服务 VS 无状态服务
【K8S系列】第七讲:有状态服务 VS 无状态服务
1468 0
|
存储 Kubernetes Cloud Native
Kubernetes vs OpenShift浅析
古语有云:“知彼知己,百战不殆。不知彼而知己,一胜一负。不知彼,不知己,每战必殆。” 这句话同样也适用于技术体系。无论我们在落地,还是在学习、实践某一项技术,对提供相同功能的体系框架的对比学习,可以使得我们能够快速、全面地去拥抱其生态。
783 0

推荐镜像

更多