问题描述
想了解流行的容器编排工具Kubernetes、Rancher和Mesos之间的主要特性区别。他想知道在选择使用其中一个工具时应该考虑哪些因素。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
Kubernetes
Kubernetes是一个高度注重性能的容器编排工具,它还具有云存储编排的功能(Mesos缺少这个功能,尽管可能有相应的插件)。Kubernetes提供了API选项,可以根据各个容器的资源使用情况自动进行扩展(如果某个容器的负载较低,而其他容器的负载较高,则可以自动缩减资源使用量)。
Kubernetes的一个重要特点是,与其他容器编排软件不同,它不提供全面的配置或任何形式的全面自愈功能。相反,它专注于多个应用程序的持续部署,并提供了一个易于回滚的应用程序级别的系统(因此,在使用Kubernetes时,您可能需要考虑使用微服务架构)。
每个应用程序都是一个小的组件,可以单独部署/配置。在他们的文档中,他们明确指出Kubernetes不是传统的PaaS(平台即服务)系统,因为它缺少用于虚拟硬件或数据库的中间件,并且它不会构建您的应用程序本身。它的设计目标是(正如他们自己所说)消除手动容器编排的需求,而是通过不断朝着目标应用程序状态的方向自动化该过程。
Mesos
与Kubernetes相比,Mesos更加庞大。它更注重整体架构而不是个别服务,尽管它仍然允许管理个别服务。它提供了用于Spark、Hadoop等的内置中间件。最佳使用Mesos的方法将涉及许多插件,因为它的设计易于扩展。
如果您需要对应用程序进行精细的管理(只要有适用于您想要执行的操作的插件,或者如果没有插件可用,您有一个愿意构建插件的团队成员),那么您应该使用Mesos。
Rancher(和Cattle)
Rancher实际上包含了Kubernetes和Mesos的实现。然而,他们还开发了自己的系统,名为Cattle,它在很大程度上基于Docker的Swarm。下面将详细介绍Rancher。
Rancher具有应用程序目录,允许一键部署,这是Kubernetes由于其设计理念而没有的功能。然而,由于Rancher实现了Kubernetes,您可以在Kubernetes中使用Rancher来弥补这些功能的缺失。
Cattle基于堆栈系统,可以将相关服务组合在一起。它还包含Rancher Compose,这是一个类似于Docker的服务的功能。这可能是Cattle最有趣的部分,其余部分相对标准(尽管Secret管理仍处于测试阶段)。如果您熟悉Docker Compose,您可以在这里阅读有关它的更多信息(我不熟悉,所以我可能不是最适合写这方面的内容的人)。
资源: “What is Kubernetes?“, “Overview of Rancher“, “mesos.apache.org: ‘What is Mesos?’“
以上是对Kubernetes、Rancher和Mesos之间功能上的区别的解答。根据您的具体需求和团队的技术栈,您可以选择适合您的工具。