具有Docker容器的DC / OS上的Marathon vs Kubernetes vs Docker Swarm


101

我正在寻找在DC / OS上运行Docker容器时是否搭配Marathon和Chronos,Docker Swarm或Kubernetes的利弊。

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

目前,我主要是在进行实验,但希望我们会在夏季之后开始在生产中使用这些服务之一。这可能会取消Docker Swarm的资格,因为我不确定届时它是否可以投入生产。

我喜欢Docker Swarm的地方在于,它实质上只是“ Docker命令”,您不必学习全新的知识。我们已经在使用docker-compose,并且可以与Docker Swarm配合使用(至少在理论上是这样),所以这将是一个很大的优势。我对Docker Swarm的主要关注是,它能否涵盖在生产环境中运行系统所需的所有用例。

Answers:


167

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

在以下情况下使用Docker Swarm

在以下情况下使用Kubernetes-Mesos

  • 您要启动K8s Pods,这是一起共同调度和共同放置,共享资源的容器组。
  • 您想与位于父容器旁边的一个或多个补充容器(例如,日志归档器,指标监视器)一起启动服务。
  • 您想使用基于K8s标签的服务发现,负载平衡和复制控制。
  • 看到http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

在以下情况下使用Marathon

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

在以下情况下使用Chronos

  • 您要启动预期要退出的Docker或非Docker任务。
  • 您想要安排任务在特定时间/计划(la cron)运行。
  • 您要计划依赖任务的DAG工作流程。
  • 您想通过Web UI或REST API启动和监视作业。
  • 您要使用从一开始就考虑Mesos构建的框架。

1
我只是想从K8s 1.6开始添加它,以支持以下内容(其中很长时间):* Docker-CRI(测试版)和cri-o,frakti,rkt(alpha)用于非Docker容器。*运行状况检查以查看容器何时启动/不再响应。*休闲不健康的豆荚。* Cron般的工作,既重复又一次。*批处理作业(手动启动,一次运行即可完成)。由于Mesosphere 自己说K8s是Mesos的头等舱公民,因此“从头开始建造”的论点也有些模糊……
Jonas Schubert Erlandsson

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.