容器编排是一项快速发展的技术。目前的行业巨头有3个;Kubernetes、Docker Swarm 和 Apache Mesos。它们属于DevOps 基础设施管理工具类别 ,称为“容器编排引擎”。Docker Swarm 赢得了广大客户的青睐,成为容器化的首选。Kubernetes 和 Mesos 是主要竞争对手。Kubernetes与Mesos有什么区别?在这方面,他们有更多的东西可以提供。它们提供不同的可用性梯度,具有许多不断发展的功能。
Kubernetes与Mesos哪个更好?尽管 Docker Swarm 很受欢迎,但它也有一些缺点和有限的功能:
- Docker Swarm 是平台相关的。
- Docker Swarm 不提供高效的存储选项。
- Docker Swarm 的容错能力有限。
- Docker Swarm 监控不足。
这些缺点引发企业质疑:“如何选择合适的容器管理和编排工具?” 许多公司现在正在选择 Docker Swarm 的替代品。这就是 Kubernetes 和 Mesos 的用武之地。要系统地检查这个选择,必须查看这两个选项的核心竞争力,以及Kubernetes与Mesos差异比较。因此,人们可以得出独立知情的结论。
Docker Swarm、Kubernetes 和 Mesos 的特点
特征 | Docker Swarm | Kubernetes | Mesos/Marathon |
初始发布日期 | 2013 年 3 月,2019 年 7 月稳定版 | 2015 年 7 月,2019 年 9 月 v1.16 | 2016 年 7 月,稳定版 2019 年 8 月 |
部署 | 基于 YAML | 基于 YAML | 独特的格式 |
稳定 | 相对较新且不断发展 | 相当成熟稳定,持续更新 | 成熟 |
设计理念 | 基于 Docker | 基于 Pod 的资源分组 | 基于 Linux 的 Cgroups 和控制组 |
支持的图像 | Docker-image 格式 | 有限地支持 Docker 和 rkt | 主要支持 Docker |
学习曲线 | 简单 | 陡 | 陡 |
什么是 Kubernetes?
Kubernetes 于 2014 年 6 月首次发布,也称为 k8s。它是谷歌用于云原生计算的容器编排平台。就功能而言,Kubernetes 是可用的本地集成选项之一。它背后还有一个庞大的社区。谷歌将 Kubernetes 用于其容器即服务产品,更名为谷歌容器引擎。其他扩展支持 Kubernetes 的平台包括 Microsoft Azure 和 Red Hat OpenShift。它还支持 Docker 并使用基于 YAML 的部署模型。
Kubernetes与Mesos有什么区别?Kubernetes的架构基于模块化 API 核心 构建, 允许供应商围绕其专有技术集成系统。它在为应用程序开发人员提供强大的 Docker 容器编排和开源项目工具方面做得很好。
什么是 Apache Mesos?
Apache Mesos 的根源可以追溯到 2009 年,当时博士。学生们首先在加州大学伯克利分校开发了它。与 Kubernetes 和 Docker Swarm 相比,在管理数据中心和云资源方面,它更多地采用分布式方法。
Kubernetes与Mesos差异比较:在处理容器管理时,它采用模块化方法。它允许用户在他们可以运行的应用程序的类型和可扩展性方面具有灵活性。Mesos 允许其他容器管理框架在其上运行。这包括 Kubernetes、Apache Aurora、Mesosphere Marathon 和 Chronos。
Mesos 的创建是为了解决许多不同的挑战。一种是,将数据中心资源抽象到一个池中。另一种是搭配不同的工作负载并自动化第二天的操作。最后,为运行任务和新应用程序提供常青的可扩展性。它具有单独管理各种工作负载的独特能力,包括 Java、无状态微服务等应用程序组。
容器管理:解释
在我们决定如何选择容器管理工具之前,必须进一步解释容器管理的概念。
容器管理是添加、组织和替换大量软件容器的过程。它利用软件自动创建、部署和扩展容器。容器管理需要一个平台来组织软件容器,称为操作系统级虚拟化。该平台优化了效率并简化了容器交付,而无需使用复杂的相互依赖的系统架构。
随着越来越多的企业使用 DevOps 进行更快的开发及其应用程序,容器已经变得非常流行。容器管理产生了对容器编排的需求,这是一种更专业的工具。它自动化了基于容器的应用程序的部署、管理、网络扩展和可用性。
容器编排:解释
容器编排是指管理或调度用于多个集群中基于微服务的应用程序的单个容器的自动过程。它适用于 Kubernetes 和 Mesos。它还计划将容器部署到集群中,确定容器的最佳主机。
需要容器编排框架的一些原因包括:
- 配置和调度容器
- 容器可用性
- 容器供应和部署
- 容器配置
- 用于负载均衡的容器扩展应用
- 容器健康监测
- 保护容器之间的交互
如何选择容器管理和编排工具?
Kubernetes与Mesos哪个更好?在决定如何有效地实施容器管理和编排时,需要考虑许多变量。最终选择将取决于用户的具体要求。其中一些简要解释如下。
- CNI 网络:一个好的工具应该允许服务之间的微不足道的网络连接。这是为了避免开发人员不得不花时间在特殊用途的代码上来查找依赖项。
- 简单性:所使用的工具应尽可能易于实施。
- 积极开发:选择的工具应该有一个开发团队,为用户提供定期更新。这是由于容器编排的不断发展的性质。
- 云供应商:所选择的工具不应与任何单一的云供应商绑定。
注意:容器编排只是 Mesos 模块化架构可以运行的工作负载的一个示例。这个专门的编排框架称为 Marathon。它最初是为了在 Linux cgroup 容器中编排应用程序档案而开发的,后来在 2014 年扩展了对 Docker 容器的支持。
Kubernetes 和 Mesos 有什么区别?
Kubernetes 和 Mesos 对同一问题有不同的方法。Kubernetes 充当容器编排器,而 Apache Mesos 则像云操作系统一样工作。因此,两者之间存在一些根本区别,下表突出显示了这些区别。
不同点 | Kubernetes | Apache Mesos |
应用定义 | Kubernetes 是副本集、复制控制器、Pod 以及某些服务和部署的组合。在这里,“Pod”是指一组位于同一位置的容器,它被认为是部署的原子单元。 | Mesos 的应用程序组被建模为一个 n 叉树,组为分支,应用程序为叶子。它用于将多个应用程序划分为可管理的集合,其中组件按依赖顺序部署。 |
可用性 | Pod 分布在工作节点之间。 | 应用程序分布在 Slave 节点之间。 |
负载均衡 | Pod 通过充当负载均衡器的服务公开。 | 可以通过代理负载均衡器访问应用程序,即 Mesos-DNS。 |
贮存 | 有两个 Stage API。第一个为 NFS、AWS 和 EBS 等单个存储后端提供抽象。第二个为存储资源请求提供抽象。这是通过不同的存储后端来实现的。 | Marathon 容器能够使用持久卷,这些卷位于创建它们的节点的本地。因此容器总是需要在所述节点上运行。实验性的 flocker 集成负责支持非单个节点本地的持久卷。 |
网络模型 | Kubernetes 的网络模型允许任何 Pod 与任何服务或其他 Pod 通信。它需要两个独立的网络才能运行,其中任何一个网络都不需要从集群外部进行连接。这是通过在集群节点上部署覆盖网络来实现的。 | Marathon 的 Docker 集成允许将容器端口映射到软管端口,这是一种有限的资源。在这里,容器不会自动获取IP,这只能通过与Calico 集成才能实现。需要注意的是,多个容器不能共享同一个网络命名空间。 |
使用目的 | 它是集群世界的新手的理想选择,提供了一种快速、简单和轻松的方式来开始他们的面向集群的开发之旅。它提供了很大程度的多功能性和可移植性,并得到了 Microsoft 和 IBM 等少数知名供应商的支持。 | 它是大型系统的理想选择,因为它旨在实现最大的冗余。对于Hadoop 或 Kafka等现有工作负载 ,Mesos 提供了一个框架,允许用户将这些工作负载相互交错。它是一个更稳定的平台,同时使用起来相对复杂。 |
供应商和开发商 | Kubernetes 被多家公司和开发人员使用,并得到其他一些平台的支持,例如 Red Hat OpenShift 和 Microsoft Azure。 | Mesos 得到 Twitter、Apple 和 Yelp 等大型组织的支持。它的学习曲线陡峭且相当复杂,因为它的核心重点是大数据和分析。 |
Kubernetes与Mesos差异比较结论
Kubernetes 和 Mesos 采用不同的策略来解决相同的问题。在基于几个特性对它们进行比较时,我们发现与 Docker Swarm 相比,这两种解决方案在特性和其他优势方面是等效的。
Kubernetes与Mesos哪个更好?我们可以得出的结论是,它们都是容器管理和编排的可行选择。每个工具都可以有效地管理 docker 容器。它们都提供对容器编排的访问,以实现应用程序的可移植性和可扩展性。
在通过 DC/OS 处理遗留系统和大规模集群环境时,Mesos 的直观架构设计提供了很好的选择。它还擅长处理更具体的技术,例如使用 Hadoop 进行分布式处理。希望构建专门用于 docker 容器编排的系统的开发团队更喜欢 Kubernetes。
我们的直接比较应该可以让用户清楚地了解 Kubernetes 与 Mesos 及其核心竞争力。目标是为读者提供相关数据和事实,以告知他们的决定。