用于批处理作业的swarm,kubernetes或mesos

时间:2016-12-20 17:45:35

标签: docker kubernetes docker-swarm dcos fleet

我的应用程序需要运行大量容器作为工作节点(进行各种批处理工作)并且我对保持Web服务器或数据库并不感兴趣 - 只需要1秒到1之间的短暂工作小时。我的想法是对付节点云,而不必担心这些节点中的哪台机器有可用的资源来处理我的工作(mesos相当擅长 - 正如所宣传的那样)。

我现在正在玩DC / OS,我想知道是否有其他任何群集技术都提供此功能:given I need 1CPU, 2GB RAM and 2GB of disk - run X docker container against my nodes

我喜欢swarm的想法,因为我对docker本身非常熟悉,并且我相信它是最容易设置和自动化(向上或向下扩展)。我喜欢kubernetes(没有经验),因为它是免费的,我很确定它会保持这种状态很长一段时间。我喜欢DC / OS,因为它捆绑了很多,但我不确定他们未来的计划,我习惯于切断功能,将它们包含在一个计划中,为x节点充电。

你有什么想法?

1 个答案:

答案 0 :(得分:7)

Kubernetes,Swarm和Mesos都可以在技术上为您安排工作,并为您处理约束资源。

与其他两个不同,Mesos主要用于处理较低级别的分发,任务和资源管理。专注于这些位导致更大的功率和灵活性,但在更低的水平上也更复杂。这就是DC / OS存在的原因,为您提供一系列微服务工具,可以作为更高级别的平台。

Mesos还旨在允许您使用自己的调度程序来处理任务生命周期需求,而这些需求往往是有状态任务所需要的。 Kubernetes和Swarm主要用于处理无状态服务用例,然后通过包含的调度程序进行调整,以便稍后处理状态服务和作业。

DC / OS是基于Mesos构建的,带有用于作业和服务的内置调度程序,同时仍允许您根据需要构建自己的自定义调度程序。

Kubernetes最近也增加了对自定义调度程序的支持,但它远不如Mesos实现和生态系统成熟,并且仍然围绕使用核心pods&副本集原语,可能会根据您的需要授权或限制。

Mesosphere最近构建了一个新的dcos-commons框架,使得构建基于JVM的Mesos调度程序变得微不足道。这样可以提高DC / OS的工作效率。 https://github.com/mesosphere/dcos-commons

Mesos& DC / OS还为您提供了更多关于集装箱化的选择。如果您愿意,可以使用Docker镜像和Docker容器。或者您可以使用带有或不带Docker镜像的Mesos容器运行时,这样可以在工作负载和打包方面提供更大的灵活性。

DC / OS和Kubernetes也都有包管理器,这对于安装Spark,Kafka或Cassandra等依赖项非常有用。但DC / OS往往拥有更强大的数据服务,因为它们是使用自己的自定义调度程序构建的,而Kubernetes生态系统往往会因为自定义调度程序的推迟而在其系统周围管理Docker容器包装器。如果您考虑docker images" packages",Docker还包括包管理。不同之处在于DC / OS和Kubernetes包含更高级别的抽象(apps& pods),其可能包括多个容器。最近,Docker添加了#34;堆栈"这是更高级别的抽象,但我不认为有任何外部存储库机制或围绕它们的许多包管理。

Swarm绝对是最简单的,但它的原始API被设计为与节点API相同,它非常适合熟悉和入门,而是限制为更高级别的抽象。他们自从有效地改写了swarm API并将其捆绑到docker-engine中作为" swarm-mode"。这种编排引擎和容器运行时的捆绑使用户更容易安装和管理,但也结合了以前两种不同的抽象级别。因此,Docker引擎现在不仅仅是编排引擎的依赖,而是与它们竞争,违背了unix的理念,即做好一件事并在相应的开源社区中制造一些政治混乱。 Twitter,黑客新闻和聊天对话升级为forking docker的谈话,导致K8s experimenting on alternativesDC/OS supporting Docker images without using Docker engineDocker extracting containerd

他们都很好。选择一种取决于您的需求。我一般建议使用DC / OS,因为它解决了一大堆问题,并且由许多不同的微服务工具和层组成,允许您通过对图层进行编程来支持多个用例,而不是最有意义的。披露,我为Mesosphere工作! ;)