Kubernetes vs Mesos

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

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

参考链接:

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/

http://techgenix.com/swarm-kubernetes-mesos/

时间: 2024-10-12 07:51:59

Kubernetes vs Mesos的相关文章

kubernetes 和 mesos + marathon的对比

Kubernetes概述 根据Kubernetes网站的说法,“Kubernetes是一个自动化,容器化应用程序部署扩展和管理的开放源代码系统.”Kubernetes由Google根据他们在生产中运行容器的经验使用称为Borg的内部集群管理系统(有时简称Omega). Kubernetes的体系结构依赖于这种经验,如下所示: 从上图可以看出,有一些与Kubernetes集群相关的组件.主节点将容器工作负载放置在工作节点.其他组件包括: etcd:该组件存储配置数据,可以通过简单的HTTP或JSO

利用听云Server和听云Network实测Kubernetes和Mesos在高并发下的网络性能

文章出自:听云博客 随着公司业务的不断增长,我们的应用数量也有了爆发式增长.伴随着应用爆发式的增长,管理的难度也随之加大.如何在业务爆发增长的同时快速完成扩容成了很大的挑战.Docker的横空出世恰巧解决了我们的问题.利用Docker我们可以快速完成扩容缩容,且配置统一,不易出错. 在Docker的集群管理选型上,我们比较纠结,目前比较流行的是Mesos和Kubernetes.从功能来说,我们更倾向于使用Kubernetes,他在容器编排方面的能力强于Meoso,且提供了持久化存储方案,更适合我

Docker VS Kubernetes VS Mesos

如果你是一名开发人员,正需要一种科学的办法来加速你的应用程序开发过程或者微服务的构建,那么我们建议你选择Docker . 如果你是一个团队领导者,想要构建一个专门的docker容器编排系统,并集成你的解决方案和基础设施,那么恭喜你,你可以锁定Kubernetes. 如果你想构建一个可靠的平台,用以运行多任务关键工作负载,并希望实现这些内容再云或数据中心上可移植,那么,Mesos是最适合你的. 文章摘自:https://www.sohu.com/a/162401681_99927640 原文地址:

一线工程师带你深入学习和使用Kubernetes

http://page.factj.com/tor/xoxaHR0cDovL2RvY2tvbmUuaW8vYXJ0aWNsZS8yMzM0 Kubernetes是Google开源的容器集群管理系统,它构建于Docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,利用Kubernetes能方便地管理跨机器运行容器化的应用. DockOne社区联合两位一线讲师设置了一堂针对架构师.开发工程师和运维工程师的体系课程,来帮助Kubernetes爱好者和使用者深入学习K

Docker集群管理工具-Kubernetes部署记录

Kubernetes介绍 Kubernetes是Google开源的容器集群管理系统,是基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件. Kubernetes提供应用部署.维护. 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下: 1) 使用Docker对应用程序包装(package).实例化(instantiate).运行(run). 2) 将多台Docker主机抽象为一个资源,以集群的方式运行.管理跨机器

kubernetes学习资源

参考文章: 1.kubernetes学习资源 1. <Kubernetes与云原生应用>系列之Kubernetes的系统架构与设计理念 2.[docker专业介绍的网站dockerinfo](DockerInfo-Docker容器技术教程,Docker信息传播和服务平台) 3.[docker专业介绍的网站dockone](DockOne.io) 4.[Stuq课程-从理论到生产环境实战:掌握Docker大规模部署和管理](从理论到生产环境实战:掌握Docker大规模部署和管理) 5.[kube

Docker Manager for Kubernetes

一.Kubernetes介绍 Kubernets是Google开源的容器集群系统,是基于Docker构建一个容器的调度服务,提供资源调度,均衡容灾,服务注册,动态伸缩等功能套件: Kubernets提供应用部署,维护,扩展机制等功能,利用Kubernetes能方便地管理跨主机运行容器化的应用,其主要功能如下: 使用Docker对应用程序包装(package),实例化(instantiate),运行(run): 将多台Docker主机抽象为一个资源,以集群的方式运行,管理跨机器的容器,包括任务调度

Docker与Kubernetes,是敌是友?

如果你是一名运维工程师,你就会知道Docker公司的估值已超过10亿美元,而且Docker是最受关注的技术品牌之一.Docker容器被称为容器运行时的事实标准,但是Google公司的Kubernetes正在赢得编排框架市场的胜利.在使用容器技术时,我们经常会遇到这样一个问题,"使用Kubernetes会伤害Docker吗?" 许多人认为容器技术的价值在编排层,这是Kubernetes对Docker容器的直接威胁.然而我不认同这个观点,因为Docker不是一家容器运行时公司,而是一家容器

一篇文章为你图解Kubernetes网络通信原理

本文来自51cto因出现文章被删除提示,为避免丢失将其复制备查 Kubernetes对集群内部的网络进行了重新抽象,以实现整个集群网络扁平化.我们可以理解网络模型时,可以完全抽离物理节点去理解,我们用图说话,先有基本印象. 名词解释 1.网络的命名空间:Linux在网络栈中引入网络命名空间,将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信;docker利用这一特性,实现不容器间的网络隔离. 2.Veth设备对:也叫虚拟网络接口对.Veth设备对的引入是为了实现在不同网络命名空间的通信.