Docker-Swarm,Kubernetes,Mesos和Core-OS Fleet


153

我对所有这些都还比较陌生,但是在列出的技术中很难一目了然。

虽然,所有这些都试图解决不同的问题,但是也有共同点。我想了解什么是共同的,什么是不同的。少数几个组合很适合,如果可以的话,它们又是什么呢?

我列出了其中的一些问题,但如果有人详细列出所有问题并回答问题,那就太好了。

  1. Kubernetes vs Mesos:

    这个连结

    Apache的Mesos和Google的Kubernetes有什么区别

    可以很好地了解这些差异,但是我无法理解Kubernetes为什么应该在Mesos之上运行。将两个开放源代码解决方案整合在一起还可以做更多的事情吗?

  2. Kubernetes与Core-OS机队:

    如果我使用kubernetes,是否需要车队?

  3. Docker-Swarm如何适应以上所有情况?



1
我在github上维护了编排工具的列表:datacenteroperatingsystem.io随时贡献。
CMCDragonkai 2015年

Answers:


152

披露:我是Kubernetes的首席工程师

我认为Mesos和Kubernetes的主要目的是解决运行集群应用程序的类似问题,它们具有不同的历史和解决问题的方法。

Mesos将精力集中在非常通用的调度上,并插入多个不同的调度程序。这意味着它使Hadoop和Marathon等系统可以共存于同一调度环境中。Mesos不太关注正在运行的容器。Mesos在对容器的广泛兴趣之前就已经存在,并且已经进行了部分重构以支持容器。

相反,Kubernetes是从头开始设计的,是一个用于从容器构建分布式应用程序的环境。它包括用于复制和服务发现的原语作为核心原语,其中,此类内容是通过Mesos中的框架添加的。Kubernetes的主要目标是建立,运行和管理分布式系统的系统。

舰队是较低级别的任务分配器。它对于引导集群系统很有用,例如,CoreOS使用它来将kubernetes代理和二进制文件分发到集群中的机器上,以启动kubernetes集群。并不是要解决相同的分布式应用程序开发问题,而是将其更像是集群的systemd / init.d / upstart。如果您运行kubernetes,则不是必需的,您可以使用其他工具(例如Salt,Puppet,Ansible,Chef等)来完成相同的二进制分发。

Swarm是Docker的一项努力,旨在扩展现有的Docker API,以使机器集群看起来像一个Docker API。从根本上说,我们在Google和其他地方的经验表明,节点API不足以提供集群API。您可以在此处查看大量讨论:https//github.com/docker/docker/pull/8859和此处:https : //github.com/docker/docker/issues/8781

希望有帮助!如果您想谈论更多,请加入IRC @#google-containers。


谢谢,这非常有用,您不会提及能够在kubernetes上运行自己的调度程序。这可能吗?
user2851943

33

我认为最简单的答案是没有简单的答案。容器功能的迅速崛起,尤其是Docker留下了“容器调度和编排”的能力真空,无论这意味着什么。实际上,这意味着您拥有许多可以在某种程度上协调地工作但在竞争中具有某些方面的技术。例如,Kubernetes可以用作一站式商店,用于在计算集群上部署和管理容器(如Google最初设计的那样),但也可以位于Fleet之上,利用Fleet在CoreOS上提供的弹性层。

正如谷歌视频所说, Kubernetes并不是一个完整的现成的容器扩展解决方案,而是一个很好的起点。以同样的方式,您可能希望Apache Mesos能够与Kubernetes一起工作,但不能与Marathon一起工作,因为Marathon似乎可以起到与Kubernetes相同的作用。我认为在某些地方,这些内容可能会成为同一工作的一部分,但我对此可能是错误的-这实际上与Mesosphere的战略方向以及相应采用Kubernetes原则有关。

在DockerCon主题演讲中,Solomon Hykes建议Swarm是一个可以为许多业务流程和调度框架提供通用接口的层。据我所知,Swarm旨在提供平滑的Docker部署工作流,可与一些现有的容器工作流框架(例如Deis)一起使用,但具有足够的灵活性以产生“重量级”部署和资源管理(例如Mesos)。

希望这会有所帮助-这可能是一个巨大的职位。我认为关键是这些是新兴的,不断发展的服务,它们很可能会合并并可以互操作,但是我们需要在接下来的12个月中花时间来看看它如何发挥作用。这个问题上有一些非常聪明的人,所以未来看起来非常光明。


21

据我了解:

Mesos,Kubernetes和Fleet都试图解决一个非常相似的问题。这个想法是,您从开发人员那里提取所有硬件,而“集群管理工具”会为您整理所有硬件。然后,您所需要做的就是为集群提供一个容器,为其提供一些信息(使其永久运行,如果发生X等情况则可进行扩展等),然后集群管理器将其实现。

使用Mesos,它可以为您完成所有集群管理,但不包括调度程序。调度程序就是这么说的,好的,这个过程需要2个进程和512MB RAM,我在那里有一台免费的机器,所以我将在那台机器上运行它。有一些适用于Mesos的插件调度程序:Marathon和Chronos,您可以编写自己的插件。这为您提供了很多资源分配和集群扩展等功能。

Fleet和Kubernetes似乎抽象出了这些细节(因此您不必基本上编写自己的调度程序)。这意味着您必须定义任务并以Fleet或Kubernetes定义的格式/方式提交任务,然后由它们接替并为您安排任务(容器)。

所以我想:使用Mesos可能意味着编写自己的调度程序需要做更多的工作,但是如果需要的话,可能会提供更多的灵活性。

我认为在Mesos之上运行Kubernetes的想法是Kubernetes充当Mesos的调度程序。就我个人而言,我不确定这会给自己运行一个或另一个带来什么好处(希望有人会插手并解释!)

正如MikeB所说..还在初期,这一切都值得抢购(也要关注亚马逊的ECS),因此存在许多竞争标准和很多重叠之处!

-edit-我没有提到Docker swarm,因为我对它没有真正的经验。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.