马拉松VS Kubernetes VS Docker Swarm在DC / OS上使用Docker容器

我正在寻找一些在运行DC / OS上运行Docker容器时是否使用Marathon和Chronos,Docker Swarm或者Kubernetes的优点和缺点。

例如,什么时候比使用Kubernetes使用Marathon / Chronos更好?反之亦然?

现在我主要进行试验,但希望夏天之后我们可以开始使用这些服务中的一种。 这可能会取消Docker Swarm的资格,因为我不确定当时是否会生产。

我喜欢Docker Swarm的基本上就是“Docker命令”,你不必学习全新的东西。 我们已经在使用docker-compose了,Docker Swarm(至less在理论上)可以开箱即用,所以这将是一个很大的优势。 我主要关心的是Docker Swarm是否会涵盖在生产环境中运行系统所需的所有用例。

我将尝试分解Mesos上每个容器编排框架的独特方面。

使用Docker Swarm如果:

  • 您想使用熟悉的Docker API在Mesos上启动Docker容器。
  • Swarm最终可能会提供一个API来与Kubernetes(甚至是K8s-Mesos)交谈。
  • 见: http : //www.techrepublic.com/article/docker-and-mesos-like-peanut-butter-and-jelly/

使用Kubernetes-Mesos如果:

  • 您想要启动K8s Pod,它们是共同调度并共同位于一起的容器组,共享资源。
  • 您希望与父容器旁边的一个或多个附件容器(例如日志归档器,度量监视器)一起启动服务。
  • 您想要使用基于K8s标签的服务发现,负载平衡和复制控制。
  • 请参阅http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

使用马拉松如果:

  • 您想要启动Docker或非Docker长期运行的应用程序/服务。
  • 你想使用Mesos属性来进行基于约束的调度。
  • 您希望使用应用程序组和依赖项来启动,扩展或升级相关服务。
  • 您希望使用运行状况检查来自动重新启动不健康的服务或回滚不健康的部署/升级。
  • 您希望将HAProxy或Consul集成到服务发现中。
  • 您想通过Web UI或REST API启动和监控应用程序。
  • 你想使用从Mesos开始构build的框架。

使用Chronos如果:

  • 您想要启动预计将退出的Docker或非Docker任务。
  • 你想安排一个任务在特定的时间/日程安排(一个cron )运行。
  • 您想要安排依赖任务的DAG工作stream程。
  • 您想通过Web UI或REST API启动和监控作业。
  • 你想使用从Mesos开始构build的框架。

虽然有点过时,但是阅读Apache的Mesos和Google的Kubernetes有什么区别 ,可能会有所帮助,从而获得一些基础知识。 另外请注意,Mesos的运行方式与Kubernetes / Marathon / Chronos不同。 最后但并非最不重要的,请参阅Timothy Chen的Docker Swarm + Mesos ,记住Marathon和Swarm可以在同一个Mesos集群上同时运行。