Marathon和Kubernetes的区别

Mesos

Mesos是分布式资源管理框架,它被称为是分布式系统的内核。Mesos能把集群内机器的资源(cpu,内存,磁盘)抽象成一个资源池,然后按容器的需求将其调度到合适的节点,达到资源利用率最大化的目的。

Mesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理。


Mesos主要由以下几部分组成:

  • Master: 管理各Slave节点
  • Slave: 为集群提供资源
  • Framework: scheduler从Master请求资源,executor在Slave上执行任务
  • Slave节点上的每个executor是一个容器

Mesos主服务器使用Zookeeper进行服务选举和发现。它有一个注册器记录了所有运行任何和从服务器信息,使用MultiPaxos进行日志复制实现一致性。

Mesos有一个从服务器恢复机制,无论什么时候一个从服务器死机了,用户的任务还是能够继续运行,从服务器会将一些关键点信息如任务信息 状态更新持久化到本地磁盘上,重新启动时可以从磁盘上恢复运行这些任务(类似Java中的钝化和唤醒)。

Chronos
Chronos本质上是cron-on-mesos,这是一个用来运行基于容器定时任务的Mesos框架。

ZooKeeper
ZooKeeper用于集群的管理,包括统一配置管理,选举Leader等。

在实际的云计算服务应用中,Mesos处于Iaas层,是分布式系统的内核;Marathon和Kubernetes容器调度编排框架处于PaaS层。

Marathon

Marathon 是Mesos的一个Framework,用来执行需要长时间运行的任务。如果把Mesos比喻成Kernel的话,那么Marathon就是它的守护进程Daemon。
它还具备HA,Health Checks,服务发现等功能。如果某个Docker进程崩溃,Marathon会重新启动同样的进程。

Marathon是一个基于mesos的容器编排框架,用来创建,升级、回滚容器,提供了web界面和Rest API来创建和管理容器。

Mesos可以支持当集群规模非常大,单个Marathon的性能不足以支撑时,可以使用自己的Framework机制,使得不同的租户使用单独的Marathon来解决问题。

Mesosphere DCOS

Mesosphere Enterprise DC / OS 利用 Mesos 分布式系统内核,在容器和大数据管理基础上构建,提供安装,用户界面,管理和监视工具等功能。

Kubernetes

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

Kubernetes 组件

Master 组件

  • kube-apiserver
  • ETCD
  • kube-controller-manager
  • cloud-controller-manager
  • kube-scheduler
  • 插件 addons
    DNS
    用户界面
    容器资源监测
    Cluster-level Logging

节点(Node)组件

  • kubelet
  • kube-proxy
  • docker
  • RKT
  • supervisord
  • fluentd

Marathon和Kubernetes的区别

应用定义
k8s:可以使用 Pod,部署和服务的组合来部署应用程序。一个 pod 是一组位于同一节点的容器,是部署的原子单位。部署可以在多个节点上具有副本。服务是容器工作负载的“外部表现”,并与 DNS 集成配合访问。

marathon:从用户的角度来看,应用程序将作为 Marathon 在节点上调度的任务运行。 对于 Mesos,应用程序是一个框架,可以是 Marathon,Cassandra,Spark 等等。 Marathon 将容器调度为在从节点上执行的任务。marathon 1.4 引入了 pod 的概念( 如同 Kubernetes pod),但这不是 marathon 核心的一部分。 节点可以根据机架,连接的存储类型等进行标记。启动 Docker 容器时可以使用这些约束。

应用的可扩展性
k8s: 每个应用程序层都被定义为一个 pod,并且可以在通过声明性指定的部署进行管理时进行缩放,例如,在 YAML 中。 缩放可以是手动或自动的。

marathon: 可以使用 Mesos CLI 或 UI。 可以使用 JSON 定义来启动 Docker 容器,这些定义指定了存储库,资源,实例数量和要执行的命令。 可以通过使用 Marathon UI 进行扩展,Marathon 调度程序将根据指定的标准将这些容器分布在从节点上。 支持自动缩放。 可以使用应用程序组来部署多层应用程序。

高可用
k8s: pod 可以部署在不同节点上支持高可用。多个 master 节点,node 节点可以以负载均衡的方式对应客户端的访问。etcd 可以以集群方式部署

marathon: 容器可以不受限制的部署在任何节点上。使用 Zookeeper 支持 Mesos 和 Marathon 的高可用性。 Zookeeper 提供 Mesos 和 Marathon 领导者的选举并维护集群状态。

负载均衡
k8s: Pod 是通过服务暴露的,可以在集群内用作负载平衡器。

marathon: 主机端口可以映射到多个容器端口,作为其他应用程序或最终用户的前端。

应用程序自动伸缩
k8s: 使用简单的 pod 目标进行自动缩放是使用部署以声明方式定义的。 还支持使用资源度量的自动缩放。 资源指标范围从 CPU 和内存利用率到请求或每秒数据包甚至自定义指标。

marathon:马拉松持续监视正在运行的 Docker 容器实例的数量。 如果其中一个容器发生故障,Marathon 会将其重新安排在其他从属节点上。 只有通过社区支持的组件才能使用资源指标进行自动扩展。

应用程序滚动升级,回滚
k8s: 在 deployment 中有滚动升级和回滚的策略。可以设置 pod 最大数量。

marathon: 部署支持应用程序的滚动升级。失败的升级可以使用回滚更改的更新部署进行修复。

健康检查
k8s: 健康检查有两种:活跃(即应用程序响应)和准备(应用程序响应,但正在忙着准备,还没有能够服务)。

marathon: 运行状况检查可以指定为针对应用程序的任务运行。健康检查请求可用于许多协议,包括 HTTP,TCP 和其他协议。

存储
k8s: 两个存储 API:第一个提供个人存储后端的抽象(例如 NFS,AWS EBS,Ceph,Flocker)。 第二个提供存储资源请求的抽象,这可以用不同的存储后端来实现。 修改集群节点上 Docker 守护进程使用的存储资源需要暂时从集群中删除该节点。 Kubernetes 提供了几种类型的持续卷,支持块或文件。 例子包括 iSCSI,NFS,FC,亚马逊网络服务,Google 云端平台和微软 Azure。 emptyDir 卷是非持久性的,可以用来读取和写入容器的文件。

mesos/marathon: 本地持久性卷(测试版)支持有状态的应用程序,如 MySQL。 需要时,可以使用相同的卷在同一节点上重新启动任务。 外部存储(如 Amazon EBS)的使用也在测试阶段。 目前,使用外部卷的应用程序只能缩放到一个实例,因为卷一次只能附加到一个任务。

网络
k8s: 网络模型是一个扁平的网络,使所有的 pod 互相通信。 网络策略指定 pod 如何相互通信。 平面网络通常作为 overlay 来实现。 该模型需要两个 CIDR:一个从中获取 IP 地址,另一个用于服务。

mesos/marathon: 网络可以在主机模式或网桥模式下进行配置。 在主机模式下,主机端口由容器使用。 这可能会导致任何给定主机上的端口冲突。 在桥接模式下,容器端口使用端口映射桥接到主机端口。 主机端口可以在部署时动态分配。

服务发现
k8s: 可以使用环境变量或 DNS 来找到服务。 运行 pod 时,Kubelet 会添加一组环境变量。 Kubelet 支持简单的{SVCNAME_SERVICE_HOST}和{SVCNAME_SERVICE_PORT}变量,以及 Docker 链接兼容变量。 DNS 服务器可作为附件使用。 对于每个 Kubernetes 服务,DNS 服务器创建一组 DNS 记录。 在整个群集中启用 DNS 后,pod 将能够使用自动解析的服务名称。

marathon: 服务可以通过“命名 VIP”发现,它们是与 IP 和端口关联的 DNS 记录。 服务由 Mesos-DNS 自动分配 DNS 记录。 可以创建一个可选的命名 VIP; 通过 VIP 的请求是负载平衡的。

性能和节点支持
k8s: Kubernetes 可扩展到 5,000 个节点的集群。可以集群联邦来扩展超出此限制。

mesos/marathon: Mesos 的 2 层体系结构(包括 Marathon)非常具有可扩展性。据 Digital Ocean 介绍,Mesos 和 Marathon 集群已经扩展到 10,000 个节点。

优缺点
k8s: 各种各样的存储选项,包括本地 SAN 和公共云。 基于在 Google 上运行 Linux 容器的丰富经验。 在组织中更频繁地部署。 Kubernetes 也得到来自 Google(GKE)和 RedHat(OpenShift)的企业支持。 容器编排工具中最大的社区。 超过 50,000 个提交者和 1200 个贡献者。

mesos/marathon: Mesos + Marathon 上的外部存储,包括 Amazon EBS 在内。。 Mesos 被 Mesosphere 所利用。 Mesosphere 公司的 DCOS 产品主要由其创建者和唯一的商业发行 Mesosphere 支持。。 较小的社区。 超过 12,000 个提交者和 240 个贡献者。

k8s: 缺乏单一的供应商控制,会使潜在客户的采购决策复杂化。社区包括 Google,Red Hat 和 2000 多位作者。(来源:CNCF)Kubernetes 仅为容器编排而建造。它基于 10 多年在 Google 管理 Linux 容器的经验。Kubernetes 1.6 可以扩展到 5,000 个节点的集群。超过 5,000 个节点的大规模可扩展性需要多个集群。

mesos/marathon: 单一供应商控制可能会考虑错误修复的问责制,以及与功能开发更好的协调。。 2 层架构允许部署其他框架(工作负载)。 例子包括 Spark,Chronos 和 Redis。 一些组织,如苹果,彭博,Netflix 等已经大规模地部署了超过 10,000 个节点的 Mesos。 (来源:Mesosphere 博客)

共同特点
开源项目。任何人都可以贡献,但是 Kubernetes 享有更多,更多元化的社区参与。网络功能,如负载均衡和 DNS。记录和监视。 Kubernetes 的外部工具包括 Elasticsearch / Kibana(ELK),sysdig,cAdvisor,Heapster / Grafana / InfluxDB(参考:Kubernetes 的记录和监测)。对于 Mesos / Marathon,节点提供可以汇总的日志,可以使用外部工具进行监视。 (参考:为 Mesos / Marathon 监控日志记录和调试)可以克服 Docker 和 Docker API 的限制。自动缩放支持本地。使用单独的一套管理工具。 Kubernetes 操作可以通过 kubectl CLI 和 Kubernetes Dashboard 来执行。 Mesos 使用多种界面:Mesos CLI,Mesos UI,Marathon CLI,Marathon UI。对于 Kubernetes 和 Mesos,Marathon,自己动手安装可能会很复杂。 Kubernetes 的部署工具包括 kubeadm,kops,kargo 等。 Kubernetes 部署指南中的更多详细信息。由于采用 Marathon 的 2 层架构,集群管理的 Zookeeper 设置,负载平衡的 HA 代理等,Mesos 的安装过程可能非常复杂。

参考文章:
Docker系列之(二):使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)
kubernetes
kubernetes 对比 mesos + marathon

Marathon和Kubernetes的区别相关推荐

  1. 开发环境和运行环境的区别_生产环境 VS 开发环境,关于Kubernetes的四大认识误区...

    来源:http://t.cn/ExaHoL2 最近我们澄清了一些大家在进行Kubernetes实验的时候所见到的常见的误解.其中最大的一个误解就是:在生产环境中运行Kubernetes和开发测试环境并 ...

  2. 选择 podman 的理由, 以及它和 Kubernetes , Docker 的区别

    一.podman 是什么 官方网站: podman.io 官方自己的介绍: https://podman.io/whatis.html 名称 podman ,官方说明是 Pod Manager , 所 ...

  3. Kubernetes学习前的必知知识点

    Table of Contents DevOps详解 到底该如何理解DevOps 持续集成,持续交付,持续部署(CI/CD)简介 在有关微服务.DevOps.Cloud-native.系统部署等的讨论 ...

  4. 编排管理成容器云关键,Kubernetes和Swarm该选谁

    不论是公有云还是私有云环境,Docker 在新一代技术架构中的重要地位已经毋庸多言,甚至已经有企业在探索完全 Docker 化.在此背景下,如何选择容器技术栈就成为了企业实践的关键.回答这个问题,首先 ...

  5. 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略

    点击关注 InfoQ,置顶公众号 接收程序员的 8 点技术早餐 1 前言 Kubernetes 很火,一大批互联网公司早已领先一步,搭建起专有的 PaaS平台,传统企业们看到的 Kubernetes的 ...

  6. Kubernetes在上汽集团云平台及AI方面的应用

    2019独角兽企业重金招聘Python工程师标准>>> 帆一尚行成立于2015年,是上汽集团的全资子公司,建设有上海.南京.郑州(在建)三个数据中心,拥有超过4000台物理服务器,1 ...

  7. vSphere 7 With Kubernetes系列01:随想

    vSphere 7 With Kubernetes系列01:随想 原创 李严省 虚实之路 7月28日 收录于话题 #vSphere with K8s 9个 大家好,好久不见,公众号停更差不多快有1年的 ...

  8. Kubernetes负载均衡器-traefik ingress安装

    2019独角兽企业重金招聘Python工程师标准>>> Kubernetes安装traefik ingress进行负载均衡 Ingress简介 如果你还不了解,ingress是什么, ...

  9. kubernetes简介

    kubernetes简介 kubernetes简介 Kubernetes的整体架构 其他附加项 分层架构 Label Kubernetes所提供的微服务网格架构 Flannel k8s负载均衡 kub ...

最新文章

  1. RabbitMQ (五)实现类似Dubbo的RPC调用
  2. docker 中删除dead状态的容器
  3. 老大难的 Java ClassLoader,到了该彻底理解它的时候了
  4. 【转】ABP源码分析十二:本地化
  5. Linux(Ubuntu 19.10)下 Qt5 连接 MySQL(QMYSQL driver not loaded)
  6. 2015暑假训练(UVALive 5983 - 5992)线段树离线处理+dp
  7. 15个友好的jQuery 提示框插件
  8. pytorch实战案例-手写数字分类-全链接模型——深度AI科普团队
  9. 小米“小仙女”来了:强大美颜 女性专属的定制手机
  10. Angular Js对象的拷贝复制
  11. python pip install 总是出错的解决方法_pip安装总是失败怎么办? 3个方法帮你解决...
  12. 实时计算在贝壳的实践
  13. c++线程间通信的几种方法_JAVA并发之线程amp;进程
  14. CRM客户关系管理系统HR人事OA系统APP源码
  15. 约4万个外国人名,中英对照
  16. ubuntu22.04LTS 外接hdmi没有声音
  17. 汇编语言学习-DOSBox-MASM-安装及使用教程
  18. 看完《百家讲坛》之后的108个经典“留言”
  19. PDF页眉页脚删除用什么方法
  20. 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然...

热门文章

  1. 阿里云备案服务码怎么申请?
  2. 如何验证下载的Microsoft软件是否为正版??
  3. 「国际科技信息中心SCITIC论坛」探索双碳之路
  4. python中文件保存时,出现OSError:[Errno 22] Invalid argument解决办法
  5. 一读《清晰思考的艺术》-----溺水狗
  6. Python金融风险建模大纲
  7. F12-开发者工具常用操作与使用说明之元素Elements
  8. b站 4天从零玩转jQuery【黑马程序员】部分案例代码_表格添加和删除案例
  9. 2018 LC3 中国在京召开 众人齐聚享开源盛宴
  10. 淘宝阿里妈妈拉新政策解读及淘客基地春节前更新上线预告!