Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker 容器
Posted
技术标签:
【中文标题】Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker 容器【英文标题】:Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker containers 【发布时间】:2015-05-25 18:28:12 【问题描述】:我正在寻找在 DC/OS 上运行 Docker 容器时是否使用 Marathon 和 Chronos、Docker Swarm 或 Kubernetes 的一些利弊。
例如,什么时候使用 Marathon/Chronos 比使用 Kubernetes 更好,反之亦然?
现在我主要是在进行试验,但希望我们能在夏季之后开始在生产中使用其中一项服务。这可能会取消 Docker Swarm 的资格,因为我不确定到那时它是否可以投入生产。
我喜欢 Docker Swarm 的地方在于它本质上只是“Docker 命令”,您不必学习全新的东西。我们已经在使用docker-compose
,这将与 Docker Swarm 一起开箱即用(至少在理论上),所以这将是一个很大的优势。我对 Docker Swarm 的主要担忧是它是否能涵盖在生产环境中运行系统所需的所有用例。
【问题讨论】:
【参考方案1】:我将尝试分解 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,它们是一组共同调度和共同定位的容器,共享资源。 您希望与位于父容器旁边的一个或多个 Sidekick 容器(例如日志归档器、指标监视器)一起启动一项服务。 您想使用 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 任务。 您希望将任务安排在特定时间/时间表运行(例如cron
)。
您想要安排依赖任务的 DAG 工作流。
您希望通过 Web UI 或 REST API 启动和监控作业。
您想使用从一开始就考虑到 Mesos 构建的框架。
【讨论】:
我只是想补充一点,从 K8s 1.6 开始,它支持以下内容(其中一些已经很久了): * Docker-CRI (beta) 和 cri-o, frakti, rkt (alpha ) 对于非 Docker 容器。 * 运行状况检查以查看容器何时启动/不再响应。 * 娱乐不健康的豆荚。 * 类似 Cron 的工作,包括重复的和一次的。 * 批处理作业(手动启动并运行一次即可完成)。由于Mesosphere themselves 说 K8s 是 Mesos 上的一等公民,因此“从一开始就构建”的论点也感觉有点不妥……【参考方案2】:虽然有点过时,但阅读What's the difference between Apache's Mesos and Google's Kubernetes 可能会有所帮助,以了解一些基础知识。另外请注意,Mesos 的运行级别与 Kubernetes/Marathon/Chronos 不同。最后但同样重要的是,请参阅 Timothy Chen 的 Docker Swarm + Mesos,记住 Marathon 和 Swarm 可以在同一个 Mesos 集群上同时运行。
【讨论】:
以上是关于Marathon vs Kubernetes vs Docker Swarm on DC/OS with Docker 容器的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere
Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere
KubeEdge vs K3S:Kubernetes在边缘计算场景的探索
Kubernetes vs Docker:2021年容器有哪些变化?