问题描述
我对所有这些都比较陌生,并且在尝试理解列出的这些技术时遇到了麻烦。
虽然,所有这些技术都试图解决不同的问题,但也有共同点。我想了解哪些是相同的,哪些是不同的。少数技术的组合很可能非常适合,如果是这样的话,他们是什么?
我列出了其中的一些以及问题,但如果有人详细列出所有问题并回答问题,那将会很棒。
Kubernetes vs Mesos:
Apache的Mesos和Google的Kubernetes有什么区别提供了很好的洞察力,但我无法理解为什么Kubernetes应该运行在Mesos之上。两个开源解决方案的结合更多的是什么?
Kubernetes vs Core-OS Fleet:
如果我使用kubernetes,是否需要Core-OS Fleet?
Docker-Swarm如何适应上述所有内容?
高票回答
我认为Mesos和Kubernetes主要是为了解决运行集群应用程序的类似问题,他们有不同的历史和解决问题的不同方法。
Mesos将精力集中在非常通用的调度上,并插入多个不同的调度程序。这意味着它使Hadoop和Marathon等系统能够在同一个调度环境中共存。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