阅读更多
无数的文章、社交媒体在探讨Docker、Kubernetes、Mesos三者之间孰优孰劣。如果你听信了某些一知半解者的言论,你可能会认为这三个开源项目正在为争夺容器霸权而殊死战斗。同时,你也会相信,在这三者间的选择无异于对其所奉宗教的信仰,而且真正的信徒敢于大胆和异教徒作斗争,并且拥护自己的信仰。

那些都是扯淡。

虽然这三种技术都可以使用容器来部署、管理和扩展应用程序,但实际上它们每个都侧重解决不同的问题,并且扎根非常不同的环境之上。事实上,这三种被广泛采用的工具链彼此完全不同。

与其比较这些快速演进的技术的重叠特性,不如让我们回顾一下每个项目的原始任务、架构以及它们之间如何相互补充和交互。

让我们从Docker开始

今天的Docker公司脱胎于一个平台即服务的初创公司dotCloud。dotCloud团队发现,在许多应用程序和客户之间管理依赖关系和二进制文件需要做大量的工作。因此,他们将Linux cgroups和namespaces的一些功能组合成一个简单易用的包,这样应用程序就可以在任何基础设施上持续运行。这个包就是Docker镜像,它提供以下功能:
  • 将应用程序和库封装在单个包中(Docker镜像),因此应用程序可以跨多环境一致部署;
  • 提供类似于git的语义,例如“dockerpush”,“docker commit”,这样可以让应用程序开发人员可以轻松地采用新技术,并将其融入到现有的workflow中;
  • 将Docker镜像定义为不可变层,启用不可变的基础设施。提交的更改被存储为一个单独的只读层,这让镜像复用和跟踪更改变得更加容易。另外,层还可以通过传输更新而不是整个镜像来节省磁盘空间和网络流量;
  • 通过使用可以临时存储运行时更改的可写层来实例化不可变映像,从而方便快速部署和扩展应用程序的多个实例。
随着Docker的风靡,开发人员开始从笔记本电脑转移到在生产环境中运行。这就需要借助工具来协调这些容器,我们称为容器编排。有趣的是,Apache Mesos的Marathon成为当时(2014年6月)第一个支持Docker镜像的容器编排工具(我们将在下面详细描述它)。就连Docker创始人、首席技术官Solomon Hykes也推荐Mesos为“生产集群的黄金标准”。不久之后,除了Marathon之外,许多容器编排技术出现了,这其中包括:Nomad、Kubernetes、DockerSwarm(现在是Docker引擎的一部分)。

随着Docker开始商业化开源文件格式,该公司也开始引入工具来补充核心Docker文件格式和runtime引擎,包括:
  • Dockerhub
  • Docker registry
  • Docker cloud
  • Dockerdatacenter

​Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中的特性,使其成为软件行业的游戏规则改变者;这有点类似mp3格式帮助重塑了音乐产业。Docker文件格式成为行业标准,并且领导容器技术供应商(包括Docker、Pivotal, Mesosphere以及其他许多)成立CNCF和OCI。今天,CNCF和OCI的目标就是确保跨容器技术的互操作性和标准化接口,并确保使用任何工具构建的Docker容器,都可以在任何runtime或基础设施上运行。

Kubernetes

谷歌很早就认识到Docker镜像的潜力,并试图在谷歌云平台上交付“容器编排即服务”。谷歌在容器方面有丰富的经验(他们在Linux中引入了cgroups),但是现有的内部容器和像Borg这样的分布式计算工具与它们的基础设施直接耦合。因此,谷歌没有使用现有系统中的任何代码,而是从头开始设计了Kubernetes,以编排Docker容器。Kubernetes于2015年2月发布,并提出以下目标和考虑:
  • 为应用程序开发人员提供一个强大的工具,用于Docker容器编排,而不必与底层基础设施交互;
  • 跨云环境下,为一致的应用程序部署经验和APIs 提供标准部署接口和原型;
  • 构建一个模块化的API核心,允许供应商围绕核心Kubernetes技术集成系统。
截至2016年3月,谷歌向CNCF捐赠了Kubernetes,至今谷歌仍是该项目的主要贡献者(其次是Redhat、CoreOS等)。

Kubernetes对应用程序开发人员非常有吸引力,因为它减少了对基础设施和操作团队的依赖。供应商也非常喜欢Kubernetes,因为它提供了一种简单的方式来让他们拥抱容器运动,并为他们运行自己的Kubernetes部署提供一个商业化解决方案。Kubernetes之所以很有吸引力,因为它是CNCF下的开源项目,与Docker集群相比,后者虽然是开源的,但却受到Docker Inc .的严格控制。

Kubernetes的核心优势是为应用程序开发人员提供强大的工具来编排无状态的Docker容器。虽然有多个计划将项目的范围扩展到更多的工作负载(如分析和有状态的数据服务),但这些计划仍然处于非常早期的阶段,还有待观察。

Apache Mesos

Apache Mesos最初是UCBerkeley为创建下一代集群管理器而诞生的项目,并从如谷歌的Borg和Facebook的Tupperware中吸取经验教训。但是Borg和Tupperware是单体架构,并且是和物理基础设施绑定的封源专有技术。Mesos引入了模块化架构,采用开源的方法,且其设计完全独立于底层基础架构。基于这些因素,Mesos很快被Twitter、Apple(Siri)、Yelp、Uber、Netflix以及许多领先的科技公司所采用,以支持他们在微服务、大数据和实时分析到弹性伸缩的一切实践。

作为一个集群管理器,Mesos的架构是为了解决一组非常不同的挑战:
  • 将数据中心资源整合成一个单一的池,以简化资源配置,同时在私有或公共云之间提供一致的应用程序和操作体验;
  • 在相同的基础设施上使用不同的工作负载,比如分析、无状态微服务、分布式数据服务和传统应用程序,以提高利用率,降低成本和空间;
  • 特定应用程序的任务(如部署、自修复、扩展和升级)设置为自动化day-two 操作;提供高可用的容错基础设施;
  • 在不修改集群管理器或现有应用程序的情况下,提供常绿的可扩展性来运行新的应用程序和技术;
  • 将应用程序和底层基础设施弹性扩展到数万个节点。
Mesos的独特之处还在于,可以单独管理各种不同的工作负载——包括传统的应用程序,如Java、无状态Docker微服务、批处理作业、实时分析和有状态的分布式数据服务。Mesos广泛的工作负载覆盖来自于它的两级架构,它支持“应用感知”的调度。应用感知调度是通过将应用程序特定操作逻辑封装到“Mesos框架”(类似于运行中的runbook)来完成的。

Mesos Master资源管理器,提供这些底层基础设施的框架部分,同时保持隔离。这种方法允许每个工作负载有自己专用的应用程序调度器,它了解其对部署、缩放和升级的具体操作需求。应用程序调度程序也独立地被开发、管理和更新,这让Mesos保持高度可扩展性,支持新的工作负载,或者随着时间的推移增加更多的操作能力。

以一个团队如何管理升级为例。无状态应用程序可以从“蓝/绿”部署方法中获益;当旧的应用程序还在使用的时候,另一个完整版本的应用程序已经spun up,当旧的应用程序被销毁时,流量切换到新的应用程序。但是,升级像HDFS或Cassandra这样的数据工作负载需要一次脱机,维护本地数据量以避免数据丢失,执行特定序列的升级,并在升级之前和之后对每个节点类型执行特殊检查和命令。这些步骤中的所有环节针对特定的应用程序或服务,甚至是特定版本进行的。这使得用常规容器编排调度器管理数据服务变得非常困难。

Mesos具备按需管理每个工作负载的能力,使得许多公司将Mesos作为一个统一的平台,并通过其将微服务和数据服务结合运行。运行数据密集型应用程序的一个通用参考架构是“SMACK堆栈”。

清晰时刻

注意:我们在描述Apache Mesos的过程中,没有提及任何关于容器编排的内容。那么,为什么人们总是会将Mesos与容器编排联系起来呢?容器编排是一个可以在Mesos模块化架构上运行的工作负载的例子,它使用的是构建在Mesos上的一个专门的编排“框架”Marathon。Marathon最初是为了在cgroup容器中编排应用程序(如JARs、tarball、ZIP文件)而开发的,并且在2014年成为第一批支持Docker容器的容器编排之一。

因此,当人们拿Docker、Kubernetes和Mesos比较时,他们实际上是在对比Kubernetes、Docker Swarm和Mesos上运行的Marathon。

为什么这很重要?因为Mesos根本不关心上面跑的是什么。Mesos可以为Java应用服务器、Docker容器编排、Jenkins CI Jobs, Apache Spark analytics, Apache Kafka streaming以及更多的共享基础设施提供集群服务。Mesos甚至可以运行Kubernetes或其他容器编排,尽管还没有对外集成。

Mesos的另一个考虑(以及为什么它对许多企业架构师有吸引力)是它在运行任务关键工作负载时的成熟度。Mesos已经在大规模生产环境下运行(数万台服务器)超过7年,这就是为什么它比市场上其他技术更成熟,更可靠的原因。

这一切意味着什么?

总之,这三种技术都与Docker容器有关,并允许您访问容器编排,以获得应用程序的可移植性和伸缩性。那么在这三者间要如何选择呢?这就要视不同的工作环境需求而定,工作需求不同,所适用的工具自然也是各不相同。如果您是一名应用程序开发人员,并且正在寻找一种现代的方法来构建和打包您的应用程序,或者加快微服务项目,那么Docker容器格式和开发工具是你最好的选择。

如果你是一个dev / devops团队,想要构建一个专门的docker容器编排系统,并愿意亲自动手让你的解决方案和底层基础设施集成(或依赖于公共云基础设施如谷歌引擎或Azure容器服务),Kubernetes将是你一个很好的选项。

如果您想构建一个可靠的平台,用以运行多任务关键工作负载,包括Docker容器、遗留应用程序(例如Java)和分布式数据服务(例如Spark、Kafka、Cassandra、Elastic),并希望所有这些都可以在云或数据中心上可移植,那么,Mesos是最适合你的。

无论你作何选择,你所拥抱的一系列工具都将提升你的服务器资源利用率,同时简化应用程序移植,并提高开发人员的敏捷性。你真的值得拥有!

原文链接:Docker vs. Kubernetes vs. Apache Mesos: Why What You Think You Know is Probably Wrong
  • 大小: 201.7 KB
  • 大小: 206.2 KB
  • 大小: 276.1 KB
  • 大小: 106.9 KB
2
0
评论 共 4 条 请登录后发表评论
4 楼 KuangYeYaZi 2017-08-07 16:31
美吱吱的收下了,   
3 楼 KuangYeYaZi 2017-08-07 16:30
666   
2 楼 bqh757983855 2017-08-03 17:38
[align=center][/align]
1 楼 bqh757983855 2017-08-03 17:38
[align=left][/align]

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • kubernetes-mesos:Apache Mesos 的 Kubernetes 框架

    kubernetes-mesos 当遇到 Kubernetes 和 Mesos 是天作之合。...二进制文件对于 Kubernetes-Mesos 框架的仅二进制安装,您可以使用基于 Docker 的构建器。 以下命令将构建生成的二进制文件并将其复制到./bi

  • 如何正确认识Docker Kubernetes 和 Apache Mesos

    参考链接: http://geek.csdn.net/news/detail/229382 转载于:https://www.cnblogs.com/Spider-spiders/p/7283355.html

  • 正确认识Docker、Kubernetes、Apache Mesos

    无数的文章、社交媒体在探讨Docker、Kubernetes、Mesos三者之间孰优孰劣。如果你听信了某些一知半解者的言论,你可能会认为这三个开源项目正在为争夺容器霸权而殊死战斗。同时,你也会相信,在这三者间的选择无异于...

  • Docker vs. Kubernetes vs. Apache Mesos:为什么你认为的可能是错误的

    与Docker,Kubernetes和Mesos相比,有无数的文章,讨论和很多社交喋喋不休。如果您听取部分消息,您会认为这三个开源项目正在为集装箱霸权而战。你也会相信,选择一个在另一个几乎是一个宗教选择; 真正的信徒支持...

  • Kubernetes、Mesos和Swarm:Rancher编排引擎的比较

    Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用。Swarm是Docker公司在2014年12月初新发布的容器管理工具。和...

  • Kubernetes和Mesos的区别和优缺点

    Apache Mesos 和 Kubernetes 都是优秀的开源框架,都支持大规模集群管理(当然开源 Kubernetes 目前还局限于数千,万级节点还需要定制化,而 Apache Mesos 可以轻量级地调度万级节点),在国内都有不少成熟应用。...

  • Kubernetes VS Mesos

    Kubernetes和Mesos作为重要的容器集群管理系统,会使企业和用户在选择时有所犹豫,下面就对这两种系统做简要对比和分析。 一、技术简介 1、Kubernetes Kubernetes(K8s)是Google开源的容器集群管理系统。它构建在...

  • Docker 服务编排 Mesos Swarm Kubernetes 三种模式实践

    提起Docker容器化 不得不提服务编排,众所周知目前Docker常用的服务编排模式有三种, Mesos DockerSwarm Kubernetes,下面将详细介绍这三种服务编排模式的架构和环境搭建。 一.  Mesos 1.Mesos架构图 ...

  • Docker、kubernetes和Mesos及Docker网络基础

    《一》Docker Swarm、mesos与k8s的区别 Docker Swarm与mesos的区别 DockerSwarm 是目前 Docker 社区原生支持的集群工具,它通过扩展 DockerAPI 力图让用户像使用单机 Docker API 一样来驱动整个...而 Mesos 是 Apache

  • 巅峰对决之Swarm、Kubernetes、Mesos

    【编者的话】这篇文章对比了三大主流调度框架:Swarm、Kubernetes和Mesos。文章不仅从理论上讨论了各个框架的优缺点,...这篇文章对比了三大主流调度框架:Docker Swarm、Google Kubernetes和Apache Mesos(基于...

  • 「容器云平台」Mesos 和 Kubernetes的比较

    在此基础上,我们将尝试比较目前使用的两个最流行的容器编排系统Apache Mesos和Kubernetes。2容器业务流程在我们开始比较Mesos和Kubernetes之前,让我们花点时间来理解什么是容器,以及为什么我们需要容器编排。2.1....

  • [文章]Docker、Kubernetes 和 Apache Mesos 对比中的一些误区

    有无数的文章、讨论、以及很多社区喋喋不休地比较 Docker、Kubernetes 和 Mesos。如果你只是听信了只言片语,你可能会认为这三个开源项目正为了称霸容器界而殊死搏斗。你可能还相信从他们中选出一个如宗教信仰般神圣...

  • Docker、Kubernetes、Apache Mesos 之争 | 一个与传说不同的故事

    本文讲的是Docker、Kubernetes、Apache Mesos 之争 | 一个与传说不同的故事【编者的话】有无数的文章、讨论和社交网络上的交流在比较 Docker、Kubernetes 和 Mesos。【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京...

  • Docker 编排工具比较:Kubernetes、Docker Swarm 和 Mesos,选择最适合你的容器编排方案

    本文将重点比较三种主流的 Docker 编排工具:Kubernetes、Docker Swarm 和 Mesos。通过从社区角度、市场角度、领域、层面和技术领域应用等多个角度的分析,帮助读者全面了解这些工具的特点、优势和适用场景,以便...

  • pandas-1.3.5-cp37-cp37m-macosx_10_9_x86_64.zip

    pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。

  • 基于java的大学生兼职信息系统答辩PPT.pptx

    基于java的大学生兼职信息系统答辩PPT.pptx

  • 基于java的乐校园二手书交易管理系统答辩PPT.pptx

    基于java的乐校园二手书交易管理系统答辩PPT.pptx

  • tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl

    tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl

  • Android Studio Ladybug(android-studio-2024.2.1.10-mac.zip.002)

    Android Studio Ladybug 2024.2.1(android-studio-2024.2.1.10-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/89954174 part2: https://download.csdn.net/download/weixin_43800734/89954175

Global site tag (gtag.js) - Google Analytics