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

Rom*_*cea 7 docker kubernetes docker-swarm fleet dcos

我的应用程序需要运行大量容器作为工作节点(进行各种批处理工作)并且我对保持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节点充电.

你的想法是什么?

Kar*_*KFI 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包含更高级别的抽象(应用程序和pod),其中可能包含多个容器.最近,Docker添加了"堆栈",这是更高级别的抽象,但我认为没有任何外部存储库机制或围绕它们的更多包管理.

Swarm绝对是最简单的,但它的原始API被设计为与节点API相同,它非常适合熟悉和入门,而是限制为更高级别的抽象.他们已经有效地重写了swarm API并将其作为"swarm-mode"捆绑到docker-engine中.这种编排引擎和容器运行时的捆绑使用户更容易安装和管理,但也结合了以前两种不同的抽象级别.因此,Docker引擎现在不仅仅是编排引擎的依赖,而是与它们竞争,违背了unix的理念,即做好一件事并在相应的开源社区中制造一些政治混乱.Twitter,黑客新闻和聊天对话升级为分叉码头的谈话,导致K8试验替代品,DC/OS支持Docker图像而不使用Docker引擎,Docker提取容器.

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