Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker Container

我正在寻找一些优点和缺点,是否与马拉松和 Chronos,多克群或库伯内特斯时,运行多克集装箱的 DC/OS。

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

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

我喜欢 Docker Swarm 的原因是它基本上只是“ Docker 命令”,你不必学习完全新的东西。我们已经在使用 docker-compose,这将工作出盒与多克蜂群(至少在理论上) ,所以这将是一个很大的加号。我对 DockerSwarm 的主要担心是它是否能够涵盖在生产环境中运行系统所需的所有用例。

36674 次浏览

Though it's a bit outdated, it may be helpful to read What's the difference between Apache's Mesos and Google's Kubernetes, to get some of the basics right. Also, note that Mesos operates on a different level than Kubernetes/Marathon/Chronos. Last but not least, see Docker Swarm + Mesos by Timothy Chen, keeping in mind that Marathon and Swarm can operate simultaneously on the same Mesos cluster.

I'll try to break down the unique aspects of each container orchestration framework on Mesos.

Use Docker Swarm if:

Use Kubernetes-Mesos if:

  • You want to launch K8s Pods, which are groups of containers co-scheduled and co-located together, sharing resources.
  • You want to launch a service alongside one or more sidekick containers (e.g. log archiver, metrics monitor) that live next to the parent container.
  • You want to use the K8s label-based service-discovery, load-balancing, and replication control.
  • See http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Use Marathon if:

  • You want to launch Docker or non-Docker long-running apps/services.
  • You want to use Mesos attributes for constraint-based scheduling.
  • You want to use Application Groups and Dependencies to launch, scale, or upgrade related services.
  • You want to use health checks to automatically restart unhealthy services or rollback unhealthy deployments/upgrades.
  • You want to integrate HAProxy or Consul for service discovery.
  • You want to launch and monitor apps through a web UI or REST API.
  • You want to use a framework built from the start with Mesos in mind.

Use Chronos if:

  • You want to launch Docker or non-Docker tasks that are expected to exit.
  • You want to schedule a task to run at a specific time/schedule (a la cron).
  • You want to schedule a DAG workflow of dependent tasks.
  • You want to launch and monitor jobs through a web UI or REST API.
  • You want to use a framework built from the start with Mesos in mind.