我对所有这些技术都比较陌生,但我很难对列出的技术有一个清晰的了解。
虽然,所有这些都试图解决不同的问题,但也有共同之处。我想了解什么是共同的,什么是不同的。可能是几个组合将是非常适合的,如果是这样的话,他们是什么?
我列出了其中的一些问题,但如果有人详细列出所有问题并回答问题,那就太好了。
- Kubernetes与Mesos:
此链接
What's the difference between Apache's Mesos and Google's Kubernetes
提供了一个很好的洞察差异,但我不能理解为什么Kubernetes应该运行在Mesos之上。这是不是与两个开源解决方案的结合更有关? - Kubernetes与核心操作系统机群:
如果我使用Kubernetes,是否需要快速? - Docker-Swarm是如何融入上述内容的?
4条答案
按热度按时间11dmarpk1#
披露:我是Kubernetes的首席工程师
我认为Mesos和Kubernetes主要是为了解决运行集群应用程序的类似问题,它们有不同的历史和解决问题的不同方法。
Mesos专注于非常通用的调度,并插入多个不同的调度器。这意味着它使Hadoop和马拉松这样的系统能够共存于同一个调度环境中。Mesos不太关注运行容器。Mesos在容器受到广泛关注之前就已经存在,并已被重构为支持容器的部分。
相比之下,Kubernetes从一开始就被设计成一个从容器构建分布式应用程序的环境。它包括复制和服务发现原语作为核心原语,这些原语通过Mesos中的框架添加。Kubernetes的主要目标是构建、运行和管理分布式系统。
Fleet是一个较低级别的任务分配器。它对于引导集群系统非常有用,例如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。
bgtovc5b2#
我认为最简单的答案是,没有简单的答案。集装箱力量的迅速崛起,尤其是Docker,为“集装箱调度和编排”留下了权力真空,不管这可能意味着什么。在现实中,这意味着你有多项技术可以在某些层面上和谐工作,但在某些方面存在竞争。例如,Kubernetes可以用作在计算集群上部署和管理容器的一站式商店(如Google最初设计的那样),但也可以位于Fleet之上,利用Fleet在CoreOS上提供的弹性层。
As this Google vid states Kubernetes并不是一个完整的开箱即用的容器伸缩解决方案,但它是一个很好的起点。同样,在某个阶段,你可能会期望Apache Mesos能够与Kubernetes一起工作,但不能与马拉松一起工作,因为Marathon似乎扮演着与Kubernetes相同的角色。我想我在某个地方读到过这些可能成为同一努力的一部分,但我可能是错的--这实际上是关于中间层的战略方向和相应的对Kubernetes原则的采纳。
在DockerCon的主题演讲中,所罗门Hykes建议Swarm应该是一个可以为许多编排和调度框架提供通用接口的层。据我所知,Swarm旨在提供一个平滑的Docker部署工作流,与一些现有的容器工作流框架(如Deis)一起工作,但足够灵活,可以让位于“重量级”部署和资源管理(如Mesos)。
希望这能有所帮助--这可能是一个巨大的帖子。我认为关键是,这些都是年轻的、不断发展的服务,它们可能会合并并成为可互操作的,但我们需要度过未来12个月,看看它会如何发挥作用。在这个问题上有一些非常聪明的人,所以未来看起来非常光明。
oxf4rvwz3#
据我所知:
Mesos、Kubernetes和Fleet都在试图解决一个非常相似的问题。他们的想法是,你从开发人员那里抽象出所有的硬件,然后“集群管理工具”会为你整理好所有的硬件。然后你所需要做的就是给予集群一个容器,给它一些信息(让它永久运行,如果发生X事件,可以进行扩展等),集群管理器会让它实现。
使用Mesos,它可以为你做所有的集群管理,但是它不包括调度器。调度器是这样说的,好吧,这个进程需要2个进程和512 MB内存,我在那边有一台机器,所以我会在那台机器上运行它。有一些插件调度器可用于Mesos:马拉松和Chronos,你也可以自己编写。这给了你很大的资源分配和集群扩展等能力。
Fleet和Kubernetes似乎抽象了这些细节(因此基本上你不必编写自己的调度程序),这意味着你必须定义你的任务,并以Fleet或Kubernetes定义的格式/方式提交它们,然后它们接管并为你调度任务(容器)。
所以我想:使用Mesos可能意味着编写自己的调度程序需要更多的工作,但如果需要,可能会提供更大的灵活性。
我认为在Mesos上运行Kubernetes的想法是Kubernetes充当Mesos的调度程序。就我个人而言,我不确定这会比单独运行一个或另一个带来什么好处(希望有人会跳出来解释!)
正如MikeB所说,现在还为时尚早,而且都是待价而沽的(也要关注亚马逊的ECS),所以有很多竞争标准和很多重叠!
a14dhokn4#
对于任何人来这个2017年后舰队是不赞成的。不要再使用它。
Fleet docs表示“Fleet不再由CoreOS积极开发或维护”并链接到Container orchestration: Moving from fleet to Kubernetes。Fleet从Container Linux(formerly known as CoreOS Linux)中删除,并替换为Kubernetes kubelet(代理)。这与公司将Tectonic(Kubernetes发行版)作为其主要产品的转型相吻合。