Kubernetes与Mesos:详细比较及关键差异
容器编排是一项快速发展的技术。目前有三个行业巨头:Kubernetes、Docker Swarm和Apache Mesos。它们属于被称为‘容器编排引擎’的DevOps基础设施管理工具类别。Docker Swarm赢得了大量客户的青睐,成为容器化的首选。Kubernetes和Mesos是主要竞争对手。从这方面看,它们提供了更多的选择。它们提供了不同级别的可用性,具有许多不断发展的功能。
尽管Docker Swarm很受欢迎,但它有一些缺点和功能限制。
- Docker Swarm 是平台依赖的。
- Docker Swarm 不提供有效的存储选项。
- Docker Swarm 的容错能力有限。
- Docker Swarm 监控不足。
这些缺点促使企业提出疑问:‘如何选择合适的容器管理和编排工具?’ 许多公司现在选择Docker Swarm的替代品。这就是Kubernetes和Mesos发挥作用的地方。要系统地审视这一选择,必须关注这两种选项的核心能力。因此,一个人可以得出独立知情的结论。
注意: 我们还建议您阅读我们关于 Docker Swarm 与 Kubernetes 的比较文章。
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的控制组和控制组 |
| 支持图像 | Docker 镜像格式 | 支持 Docker 和 rkt,但有限 | 主要支持Docker |
| 学习曲线 | 简单 | 陡峭 | 陡峭 |


什么是Kubernetes?
Kubernetes于2014年6月首次发布,也被称为k8s。它是Google为云原生计算提供的一个容器编排平台。在功能方面,Kubernetes是最原生集成的选项之一。它背后还有一个庞大的社区。Google将Kubernetes用于其被重新命名为Google容器引擎的容器即服务产品。其他对Kubernetes提供扩展支持的平台包括微软的Azure和红帽的OpenShift。它还支持Docker,并使用基于YAML的部署模型。
基于模块化API核心构建的Kubernetes架构允许供应商围绕其专有技术集成系统。它为应用程序开发人员提供了一个强大的Docker容器编排工具和开源项目,表现出色。
什么是Apache Mesos?
Apache Mesos 的根源可以追溯到 2009 年,当时博士生在加州大学伯克利分校首次开发了它。与 Kubernetes 和 Docker Swarm 相比,它在管理数据中心和云资源时采取了更多的分布式方法。
在处理容器管理时,它采用模块化的方法。这使得用户在运行的应用程序类型和可扩展性上拥有灵活性。Mesos 允许其他容器管理框架在其上运行。这包括 Kubernetes、Apache Aurora、Mesosphere Marathon 和 Chronos。
Mesos 的创建是为了解决许多不同的挑战。其中一个是将数据中心资源抽象为一个单一的资源池。另一个是将不同的工作负载协同使用,并自动化第二天的操作。最后,提供对正在运行的任务和新应用程序的持续扩展性。它具有独特的能力,可以单独管理多种工作负载,包括 Java、无状态微服务等应用组。
容器管理:解释
在我们决定如何选择容器管理工具之前,必须进一步解释容器管理的概念。
容器管理是添加、组织和替换大量软件容器的过程。它利用软件自动创建、部署和扩展容器。容器管理需要一个组织软件容器的平台,称为操作系统级虚拟化。该平台优化了效率,并简化了容器交付,而无需使用复杂的相互依赖的系统架构。
容器已经变得相当流行,因为越来越多的企业使用DevOps来更快地开发及其应用程序。容器管理催生了对容器编排的需求,这是一种更专业的工具。它自动化了基于容器的应用程序的部署、管理、网络扩展和可用性。
容器编排:解释
容器编排是指自动管理或调度用于基于微服务的应用程序的单个容器的过程,涉及多个集群。它可以与Kubernetes和Mesos一起使用。它还负责将容器部署到集群中,确定容器的最佳宿主。
需要容器 orchestration 框架的一些原因包括;
- 配置和调度容器
- 集装箱可用性
- 容器配置和部署
- 容器配置
- 扩展容器应用以实现负载均衡
- 集装箱的健康监测
- 确保容器之间的互动安全
如何选择容器管理和编排工具?
在决定如何高效实施容器管理和编排时,需要考虑许多变量。最终的选择将取决于用户的具体需求。其中一些将在下面简要说明。
- CNI 网络连接:一个好的工具应该允许服务之间的简单网络连接。这是为了避免开发人员花时间编写特殊用途的代码来查找依赖关系。
- 简单性:使用中的工具应该尽可能简单易用。
- 主动开发:选择的工具应该有一个开发团队,为用户提供定期更新。这是因为容器编排的性质不断发展。
- 云供应商:所选择的工具不应与任何单一云服务提供商绑定。
注意:容器编排只是Mesos模块化架构可以运行的工作负载的一个例子。这个专门的编排框架被称为Marathon。它最初是为了在Linux cgroup容器中编排应用程序档案而开发的,后来在2014年扩展了对Docker容器的支持。
Kubernetes 和 Mesos 之间有什么区别?
Kubernetes 和 Mesos 对同一个问题有不同的方法。Kubernetes 充当容器编排器,而 Apache Mesos 像一个云操作系统。因此,它们之间有几个基本差异,下面的表格中突出了这些差异。
| 差异点 | Kubernetes | Apache Mesos |
| 应用程序定义 | Kubernetes 是副本集、复制控制器、Pod 以及某些服务和部署的组合。在这里,“Pod”指的是一组共同定位的容器,被视为部署的原子单位。 | Mesos 的应用组被建模为一个 n 叉树,其分支是组,叶子是应用程序。它用于将多个应用程序划分成可管理的集合,其中组件按依赖关系的顺序部署。 |
| 可用性 | Pod在工作节点之间分配。 | 应用程序分布在从属节点之间。 |
| 负载均衡 | Pods 通过一个作为负载均衡器的服务进行暴露。 | 应用程序可以通过一个活动的负载均衡器访问,该负载均衡器是 Mesos-DNS。 |
| 存储 | 有两个阶段API。第一个提供了针对各个存储后端的抽象,例如NFS、AWS和EBS等。第二个提供了对存储资源请求的抽象。这通过不同的存储后端来实现。 | 马拉松容器能够使用持久卷,这些卷本地于创建它们的节点。因此,该容器必须始终在该节点上运行。实验性的Flocker集成负责支持不只属于单一节点的持久卷。 |
| 网络模型 | Kubernetes 的网络模型允许任何 pod 与任何服务或其他 pod 进行通信。它需要两个独立的网络来运行,这两个网络不需要外部集群的连接。这通过在集群节点上部署覆盖网络来实现。 | Marathon 的 Docker 集成允许将容器端口映射到主机端口,而主机端口是有限资源。在这里,容器不会自动获取 IP,只有通过与 Calico 集成才能实现。需要注意的是,多个容器不能共享同一个网络命名空间。 |
| 使用目的 | 对于聚类世界的新手来说,它是理想的选择,提供了一种快速、简单和轻便的方式来开始他们在集群导向开发中的旅程。它具有很高的灵活性和可移植性,并得到了微软和IBM等一些知名供应商的支持。 | 它非常适合大型系统,因为它旨在实现最大冗余。对于现有的工作负载,如Hadoop或Kafka,Mesos提供了一个框架,允许用户将这些工作负载相互交错。它是一个更稳定的平台,尽管使用起来相对复杂。 |
| 供应商和开发者 | Kubernetes 被几家公司和开发者使用,并受到一些其他平台的支持,如红帽 OpenShift 和微软 Azure。 | Mesos 得到了 Twitter、苹果和 Yelp 等大型组织的支持。它的学习曲线陡峭且相当复杂,因为它的核心重点是大数据和分析。 |
注意:如果您想简化 Kubernetes 网络连接的配置,Calico 是其中一个选项。想了解更多,请参考我们的文章《如何使用 Calico 运行 Kubernetes》。
结论
Kubernetes 和 Mesos 采用不同的策略来解决相同的问题。在根据几个特征进行比较时,我们发现这两种解决方案在功能和其他优势方面与 Docker Swarm 相比是等价的。
我们可以得出的结论是,它们都是容器管理和编排的可行选项。每个工具在管理docker容器方面都很有效。它们都提供对容器编排的访问,以实现应用程序的可移植性和可扩展性。
Mesos 的直观架构设计在处理遗留系统和通过其 DC/OS 的大规模集群环境时提供了良好的选择。它在处理更具体的技术,如使用 Hadoop 的分布式处理方面也非常擅长。开发团队更倾向于使用 Kubernetes,因为它们希望构建一个专门用于 Docker 容器编排的系统。
我们的直接比较应该给用户提供一个关于Kubernetes与Mesos及其核心能力的清晰概念。我们的目标是为读者提供相关的数据和事实,以帮助他们做出决策。
如何在它们之间进行选择将取决于找到适合您公司技术需求的正确集群管理解决方案。如果您想了解更多关于哪种解决方案最适合您,请立即与我们联系,以获得免费咨询。
>