Docker-Swarm,Kubernetes,Mesos和Core-OS舰队

我对这些都比较陌生,但是我在列出的技术中弄清了一些问题。

尽pipe如此,所有这些都试图解决不同的问题,但也有一些共同点。 我想了解什么是共同的,什么是不同的。 如果有的话,less数人的组合很可能是合适的。

我列出了其中的一些问题以及其中的一些问题,但如果有人详细列出所有问题并回答问题,这将是非常好的。

  1. Kubernetes对Mesos:

    这个链接

    Apache的Mesos和Google的Kubernetes有什么不同?

    提供了一个很好的洞察差异,但我无法理解为什么Kubernetes应该运行在Mesos之上。 与两个开源解决scheme的合作更重要吗?

  2. Kubernetes vs Core-OS舰队:

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

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

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

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

Mesos把精力集中在非常通用的调度上,并且插入多个不同的调度器。 这意味着它使像Hadoop和Marathon这样的系统可以在同一个调度环境中共存。 Mesos不太关注运行容器。 Mesos在对容器有广泛兴趣之前就已经存在,并且已经在部件中被重新考虑以支撑容器。

相比之下,Kubernetes的devise则是从容器构build分布式应用程序的环境。 它包括用于复制和服务发现的原语作为核心原语,其中 – 这些东西通过Mesos中的框架添加。 Kubernetes的主要目标是构build,运行和pipe理分布式系统的系统。

舰队是一个较低级的任务分配器。 这对引导集群系统非常有用,例如,CoreOS使用它将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

希望有所帮助! join我们IRC @#谷歌容器,如果你想谈更多。

我想最简单的答案是没有简单的答案。 随着集装箱的迅速崛起,特别是Docker已经为“集装箱调度和编排”留下了一个权力真空,无论这可能意味着什么。 实际上,这意味着你有一些技术可以在一定程度上协调一致,但在某些方面处于竞争中。 例如,Kubernetes可以用作在计算集群上部署和pipe理容器的一站式服务(如Google最初devise的那样),但也可以坐在Fleet上,利用Fleet在CoreOS上提供的弹性层。

由于这个Google vid声明 Kubernetes并不是一个完整的开箱容器缩放解决scheme,但是从一开始就是一个很好的声明。 同样,在某种程度上,你会期望Apache Mesos能够和Kubernetes合作,但不能和Marathon一起工作,就像马拉松看起来和Kubernetes一样。 我认为我已经阅读过的这些内容可能会成为同样的努力的一部分,但是我可能会错误的 – 关于中间层的战略方向和相应的Kubernetes原则的采用。

在DockerCon的主题演讲中,所罗门·海克斯(Solomon Hykes)build议Swarm应该是一个可以为许多编排和调度框架提供通用接口的层。 从我所看到的,Swarm旨在提供一个stream畅的Docker部署工作stream,与Deis等一些现有的容器工作stream框架一起工作,但足够灵活,可以屈服于“重量级”部署和资源pipe理,如Mesos。

希望这有助于 – 这可能是一个巨大的职位。 我认为关键是这些都是年轻的,不断发展的服务,可能会合并成为可互操作的,但是我们需要在未来12个月内走出去看看它是如何发挥的。 在这个问题上有一些非常聪明的人,所以未来看起来非常光明。

据我了解:

Mesos,Kubernetes和Fleet都试图解决一个非常类似的问题。 这个想法是,你从开发人员那里抽取所有的硬件,“集群pipe理工具”把它全部分配给你。 然后你需要做的就是给集群提供一个容器,给它一些信息(保持永久运行,如果发生X等等扩展),并且集群pipe理器将使它发生。

使用Mesos,它为您执行所有的集群pipe理,但不包括调度程序。 调度程序是说,这个过程需要2个过程和512MB内存,我有一台机器在那里免费,所以我会运行在该机器上。 有一些插件调度程序可用于Mesos:马拉松和Chronos,你可以写自己的。 这为您提供了大量资源分配和集群扩展等function。

舰队和Kubernetes似乎抽象出这些细节(所以你不必自己编写调度程序)。 这意味着您必须定义您的任务并以Fleet或Kubernetes定义的格式/方式提交它们,然后他们接pipe并为您安排任务(容器)。

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

我认为在Mesos之上运行Kubernetes的想法是Kubernetes充当Mesos的调度器。 就个人而言,我不确定这会带来怎样的好处,但希望有人会跳进来解释!

正如MikeB所说,现在还处于初期阶段,所有这一切都是为了争夺(同时关注亚马逊的ECS),所以有很多竞争标准和很多重叠!

-edit-我没有提到Docker群,因为我没有太多经验。

对于2017年之后来到这个车队的人,已经被弃用了。 不要再使用它了。

舰队的文件说,“舰队不再积极开发或维护的CoreOS”并链接到集装箱编排:从船队转移到Kubernetes 。 Fleet已从Container Linux( 以前称为 CoreOS Linux )中删除,取而代之的是Kubernetes kubelet(代理)。 这与提供Tectonic (Kubernetes发行版)作为其主要产品的企业枢纽相吻合。