Apache的Mesos和谷歌的Kubernetes到底有什么区别? 我知道这两个都是服务器集群管理软件。谁能详细说明一下主要的区别在哪里——什么时候哪个框架是首选的?

为什么要在Mesosphere上使用Kubernetes呢?


当前回答

我喜欢这个短视频在这里mesos学习材料

对于裸金属集群,你需要生成HDFS、SPARK、MR等堆栈……因此,如果只使用裸金属集群管理启动与这些相关的任务,将会有很多冷启动时间。

使用mesos,您可以将这些服务安装在裸金属之上,并且可以避免这些基础服务的启动时间。这是内消旋体擅长的。并且可以由kubernetes在其之上构建。

其他回答

Kubernetes is an open source project that brings 'Google style' cluster management capabilities to the world of virtual machines, or 'on the metal' scenarios. It works very well with modern operating system environments (like CoreOS or Red Hat Atomic) that offer up lightweight computing 'nodes' that are managed for you. It is written in Golang and is lightweight, modular, portable and extensible. We (the Kubernetes team) are working with a number of different technology companies (including Mesosphere who curate the Mesos open source project) to establish Kubernetes as the standard way to interact with computing clusters. The idea is to reproduce the patterns that we see people needing to build cluster applications based on our experience at Google. Some of these concepts include:

豆荚-一种将集装箱组合在一起的方法 复制控制器——一种处理容器生命周期的方法 标签-一种查找和查询容器的方法 服务——一组执行公共功能的容器。

因此,仅使用Kubernetes,你就会拥有一些简单、易于启动和运行、可移植和可扩展的东西,它将“集群”作为一个名词,以尽可能轻的方式管理。在集群上运行应用程序,不要再担心单个机器。在这种情况下,集群就像虚拟机一样是一种灵活的资源。它是一个逻辑计算单元。打开它,使用它,调整它的大小,把它迅速和容易。

With Mesos, there is a fair amount of overlap in terms of the basic vision, but the products are at quite different points in their lifecycle and have different sweet spots. Mesos is a distributed systems kernel that stitches together a lot of different machines into a logical computer. It was born for a world where you own a lot of physical resources to create a big static computing cluster. The great thing about it is that lots of modern scalable data processing application run well on Mesos (Hadoop, Kafka, Spark) and it is nice because you can run them all on the same basic resource pool, along with your new age container packaged apps. It is somewhat more heavy weight than the Kubernetes project, but is getting easier and easier to manage thanks to the work of folks like Mesosphere.

现在真正有趣的是,Mesos目前正在进行调整,以添加许多Kubernetes概念,并支持Kubernetes API。因此,如果你需要的话,它将为你的Kubernetes应用程序提供更多的功能(高可用性主,更高级的调度语义,扩展到大量节点的能力),并且非常适合运行生产工作负载(Kubernetes仍然处于alpha状态)。

当被问到这个问题时,我倾向于说:

Kubernetes is a great place to start if you are new to the clustering world; it is the quickest, easiest and lightest way to kick the tires and start experimenting with cluster oriented development. It offers a very high level of portability since it is being supported by a lot of different providers (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, etc). If you have existing workloads (Hadoop, Spark, Kafka, etc), Mesos gives you a framework that let's you interleave those workloads with each other, and mix in a some of the new stuff including Kubernetes apps. Mesos gives you an escape valve if you need capabilities that are not yet implemented by the community in the Kubernetes framework.

“我知道这两种软件都是服务器集群管理软件。”

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和Kubernetes都可以用来管理机器集群,并抽象出硬件。

Mesos在设计上没有提供调度器(用于决定在何处、何时运行进程以及如果进程失败该做什么),您可以使用Marathon或Chronos之类的调度器,也可以编写自己的调度器。

Kubernetes可以为你做开箱即用的调度,也可以用作Mesos的调度程序(如果我错了,请纠正我!),在这里你可以一起使用它们。Mesos可以有多个调度程序共享同一个集群,所以理论上你可以在同一个硬件上同时运行kubernetes和chronos。

超级简单:如果你想控制你的容器如何调度,选择Mesos,否则Kubernetes会很糟糕。

我喜欢这个短视频在这里mesos学习材料

对于裸金属集群,你需要生成HDFS、SPARK、MR等堆栈……因此,如果只使用裸金属集群管理启动与这些相关的任务,将会有很多冷启动时间。

使用mesos,您可以将这些服务安装在裸金属之上,并且可以避免这些基础服务的启动时间。这是内消旋体擅长的。并且可以由kubernetes在其之上构建。