Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker 容器
Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker containers
我正在寻找在 DC/OS 上 运行 宁 Docker 容器时使用 Marathon 和 Chronos、Docker Swarm 还是 Kubernetes 的利弊.
例如,什么时候使用 Marathon/Chronos 比 Kubernetes 更好,反之亦然?
现在我主要从事试验,但希望我们能在夏天之后开始在生产中使用其中一项服务。这可能会取消 Docker Swarm 的资格,因为我不确定届时它是否可以投入生产。
我喜欢 Docker Swarm 的地方在于它本质上只是 "Docker commands",您不必学习全新的东西。我们已经在使用 docker-compose
,这将与 Docker Swarm 开箱即用(至少在理论上),因此这将是一个很大的优势。我对 Docker Swarm 的主要担忧是它是否会涵盖 运行 生产系统所需的所有用例。
虽然有点过时,但阅读 Timothy Chen 的 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 可能会有所帮助,请记住 Marathon 和 Swarm 可以在同一个 Mesos 集群上同时运行。
我将尝试分解 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,它们是共同调度和共同定位的容器组,共享资源。
- 您想在父容器旁边的一个或多个助手容器(例如日志归档器、指标监视器)旁边启动一项服务。
- 您想使用 K8s 基于标签的服务发现、负载均衡和复制控制。
- 见http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html
使用 Marathon 如果:
- 您想发射Docker或非Docker长运行宁apps/services.
- 您想使用 Mesos 属性进行基于约束的调度。
- 您想使用应用程序组和依赖项来启动、扩展或升级相关服务。
- 您想使用健康检查来自动重启不健康的服务或回滚不健康的服务deployments/upgrades。
- 您想集成 HAProxy 或 Consul 进行服务发现。
- 您想通过网络 UI 或 REST API 启动和监控应用程序。
- 您想使用从一开始就考虑到 Mesos 构建的框架。
使用 Chronos 如果:
- 您想启动预计退出的 Docker 或非 Docker 任务。
- 您想将任务安排到 运行 在特定的 time/schedule(la
cron
)。
- 您想安排依赖任务的 DAG 工作流。
- 您想通过网络 UI 或 REST API 启动和监控作业。
- 您想使用从一开始就考虑到 Mesos 构建的框架。
我正在寻找在 DC/OS 上 运行 宁 Docker 容器时使用 Marathon 和 Chronos、Docker Swarm 还是 Kubernetes 的利弊.
例如,什么时候使用 Marathon/Chronos 比 Kubernetes 更好,反之亦然?
现在我主要从事试验,但希望我们能在夏天之后开始在生产中使用其中一项服务。这可能会取消 Docker Swarm 的资格,因为我不确定届时它是否可以投入生产。
我喜欢 Docker Swarm 的地方在于它本质上只是 "Docker commands",您不必学习全新的东西。我们已经在使用 docker-compose
,这将与 Docker Swarm 开箱即用(至少在理论上),因此这将是一个很大的优势。我对 Docker Swarm 的主要担忧是它是否会涵盖 运行 生产系统所需的所有用例。
虽然有点过时,但阅读 Timothy Chen 的 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 可能会有所帮助,请记住 Marathon 和 Swarm 可以在同一个 Mesos 集群上同时运行。
我将尝试分解 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,它们是共同调度和共同定位的容器组,共享资源。
- 您想在父容器旁边的一个或多个助手容器(例如日志归档器、指标监视器)旁边启动一项服务。
- 您想使用 K8s 基于标签的服务发现、负载均衡和复制控制。
- 见http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html
使用 Marathon 如果:
- 您想发射Docker或非Docker长运行宁apps/services.
- 您想使用 Mesos 属性进行基于约束的调度。
- 您想使用应用程序组和依赖项来启动、扩展或升级相关服务。
- 您想使用健康检查来自动重启不健康的服务或回滚不健康的服务deployments/upgrades。
- 您想集成 HAProxy 或 Consul 进行服务发现。
- 您想通过网络 UI 或 REST API 启动和监控应用程序。
- 您想使用从一开始就考虑到 Mesos 构建的框架。
使用 Chronos 如果:
- 您想启动预计退出的 Docker 或非 Docker 任务。
- 您想将任务安排到 运行 在特定的 time/schedule(la
cron
)。 - 您想安排依赖任务的 DAG 工作流。
- 您想通过网络 UI 或 REST API 启动和监控作业。
- 您想使用从一开始就考虑到 Mesos 构建的框架。