Apache的Mesos和谷歌的Kubernetes到底有什么区别? 我知道这两个都是服务器集群管理软件。谁能详细说明一下主要的区别在哪里——什么时候哪个框架是首选的?
为什么要在Mesosphere上使用Kubernetes呢?
Apache的Mesos和谷歌的Kubernetes到底有什么区别? 我知道这两个都是服务器集群管理软件。谁能详细说明一下主要的区别在哪里——什么时候哪个框架是首选的?
为什么要在Mesosphere上使用Kubernetes呢?
当前回答
我喜欢这个短视频在这里mesos学习材料
对于裸金属集群,你需要生成HDFS、SPARK、MR等堆栈……因此,如果只使用裸金属集群管理启动与这些相关的任务,将会有很多冷启动时间。
使用mesos,您可以将这些服务安装在裸金属之上,并且可以避免这些基础服务的启动时间。这是内消旋体擅长的。并且可以由kubernetes在其之上构建。
其他回答
Mesos和Kubernetes都可以用来管理机器集群,并抽象出硬件。
Mesos在设计上没有提供调度器(用于决定在何处、何时运行进程以及如果进程失败该做什么),您可以使用Marathon或Chronos之类的调度器,也可以编写自己的调度器。
Kubernetes可以为你做开箱即用的调度,也可以用作Mesos的调度程序(如果我错了,请纠正我!),在这里你可以一起使用它们。Mesos可以有多个调度程序共享同一个集群,所以理论上你可以在同一个硬件上同时运行kubernetes和chronos。
超级简单:如果你想控制你的容器如何调度,选择Mesos,否则Kubernetes会很糟糕。
Mesos和Kubernetes都是容器编排工具。
当你说“谷歌Kubernetes”的时候?
谷歌Kubernetes Engine提供了一个托管环境,用于部署, 使用谷歌管理和扩展容器化应用程序 基础设施。
Kubernetes是一个用于自动化部署、扩展和管理容器应用程序的开源系统。”Kubernetes是谷歌根据他们过去十年在生产中运行容器的经验构建的。
Kubernetes集群的主要组件有:
豆荚-一种将集装箱组合在一起的方法 复制控制器——一种处理容器生命周期的方法 标签-一种查找和查询容器的方法 服务——一组执行公共功能的容器
Mesos是Apache开发的一个开源集群管理项目,旨在扩展到非常大的集群,从数百到数千台主机。Mesos支持各种工作负载,如Hadoop任务,云原生应用程序等。它使您能够以分布式方式运行容器化和非容器化工作负载。
它最初是作为伯克利的一个研究项目编写的,后来被Twitter采用,作为谷歌的Borg (Kubernetes的前身)的答案。为了应对Mesos的高度复杂性(Mesos超级复杂,很难管理!),Mesosphere开始尝试将Mesos变成普通人类可以使用的东西。
Mesosphere为Mesos提供了出色的Marathon“插件”,它为用户提供了一种简单的方法来管理Mesos上的容器编排。
2016年年中,推出了DC/OS(数据中心操作系统)——一个由Mesosphere支持的开源项目,它进一步简化了Mesos,并允许您在几分钟内使用Marathon部署自己的Mesos集群。
现在,如果我们比较kubernetes和Mesos(DC/OS)
Kubernetes是一个容器的集群管理器,而mesos是一个分布式系统内核,它会让你的集群看起来像一个巨大的计算机系统,所有支持的框架和应用程序都是在mesos上运行的。
Mesos是为一个拥有大量物理资源来创建大型静态计算集群的世界而诞生的。它的优点是,许多现代可扩展的数据处理应用程序在Mesos上运行得非常好(Hadoop, Kafka, Spark),它的好处在于,你可以在相同的基本资源池上运行它们,以及你的新时代容器打包应用程序。
Mesos集群也与马拉松集群一起运行。Marathon由Mesosphere创建,旨在启动、监控和扩展长期运行的应用程序,包括云原生应用程序。客户机通过REST API与Marathon交互。
另外,需要注意的一点是,您实际上可以在DC/OS之上运行Kubernetes,并使用它来调度容器,而不是使用Marathon。这意味着最大的不同- DC/OS,顾名思义,更类似于操作系统而不是编排框架。您可以在其上运行非容器的、有状态的工作负载。容器调度由Marathon处理。
“我知道这两种软件都是服务器集群管理软件。”
This statement isn't entirely true. Kubernetes doesn't manage server clusters, it orchestrates containers such that they work together with minimal hassle and exposure. Kubernetes allows you to define parts of your application as "pods" (one or more containers) that are delivered by "deployments" or "daemon sets" (and a few others) and exposed to the outside world via services. However, Kubernetes doesn't manage the cluster itself (there are tools that can provision, configure and scale clusters for you, but those are not part of Kubernetes itself).
另一方面,Mesos更接近于“集群管理”,因为它可以控制在哪里运行什么,但不仅仅是调度容器。Mesos还管理运行在集群服务器上的独立软件。尽管Mesos主要用作Kubernetes的替代品,但Mesos可以轻松地与Kubernetes一起工作,因为虽然在许多领域中功能重叠,但Mesos可以做更多的工作(但在重叠的部分,Kubernetes往往更好)。
Kubernetes和Mesos是天作之合。Kubernetes支持Pod(共定位容器组)抽象,以及用于服务发现、负载平衡和复制控制的Pod标签。Mesos为集群中的节点之间的pod提供了细粒度的资源分配,并且可以使Kubernetes与运行在相同集群资源上的其他框架很好地合作。
来自kubernetes-mesos的自述
我喜欢这个短视频在这里mesos学习材料
对于裸金属集群,你需要生成HDFS、SPARK、MR等堆栈……因此,如果只使用裸金属集群管理启动与这些相关的任务,将会有很多冷启动时间。
使用mesos,您可以将这些服务安装在裸金属之上,并且可以避免这些基础服务的启动时间。这是内消旋体擅长的。并且可以由kubernetes在其之上构建。