问题描述
我正在寻找在DC / OS上运行Docker容器时是否使用Marathon和Chronos,Docker Swarm或Kubernetes的一些优缺点。
例如,何时使用Marathon / Chronos比使用Kubernetes更好,反之亦然?
现在我主要是进行实验,但希望我们在夏天之后开始在生产中使用这些服务之一。这可能会使Docker Swarm失去资格,因为我不确定它是否会在那时处于生产可用。
我喜欢Docker Swarm的原因是它本质上只是“Docker命令”,你不需要学习全新的东西。我们已经在使用docker-compose,它将与Docker Swarm一起开箱即用(至少在理论上),这将是一个很大的优势。我对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 Pods,它们是共同调度的容器组,共享资源
- 您希望与父容器旁边的一个或多个sidekick容器(例如,日志归档程序,度量标准监视器)一起启动服务
- 您希望使用基于K8s标签的服务发现,负载平衡和副本控制
- 请参阅:http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html
使用Marathon,如果:
- 您想要启动Docker或非Docker长期运行的应用程序/服务
- 您希望将Mesos属性用于基于约束的计划
- 您希望使用应用程序组和依赖关系来启动,扩展或升级相关服务
- 您希望使用运行状况检查来自动重新启动不健康的服务或回滚不健康的部署/升级
- 您希望集成HAProxy或Consul以进行服务发现
- 您希望通过Web UI或REST API启动和监控应用程序
- 您想要使用从一开始就构建的框架
使用Chronos,如果:
- 您希望启动预期退出的Docker或非Docker任务
- 您希望将任务计划为在特定时间/计划(cron)运行
- 您希望安排依赖任务的DAG工作流程
- 您希望通过Web UI或REST API启动和监视作业
- 您想要使用从一开始就构建的框架
原文链接
Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker containers