容器编排工具比较

37,197

随着软件开发从传统模式转向云原生开发和 DevOps 模式,容器变得越来越流行。在容器化环境中,应用程序之间共享共享一个操作系统实例。

容器与虚拟机

与虚拟机相比,容器具有显着优势,尤其是对于云原生应用程序。容器比虚拟机更轻,因此它们更有效地利用系统资源。由于容器将必要的代码、容器运行时、工具、库和设置打包在一起,因此它们具有很高的可移植性。

容器化应用程序通常将应用程序分解为单独的服务,也就是微服务。这一切都导致了容器管理方式的一些显着差异。虽然可以手动启动和停止容器,但需要编排工具来大规模管理容器化应用程序。

什么是容器编排?

容器编排能够通过自动化部署、管理、扩展和可用性来满足容器化应用程序的使用需求。通常需要手动执行的部分任务:

  • 启动和停止容器
  • 安排容器在特定时间运行
  • 重启失败的容器
  • 响应负载缩放容器实例的数量

容器编排的好处

编排解决方案可以高效地运行应用程序,在需要时扩展资源并在不需要时释放它们。容器编排的好处包括:

  • 启用大规模、动态的应用程序: 虽然容器编排本身会增加复杂性,但是没有它就无法管理大规模的容器化应用程序。
  • 加速软件开发: 正确的容器编排工具可以让开发人员和运维人员的工作更轻松,简化新软件和更新软件的交付。
  • 减少人为错误: 与任何类型的自动化一样,容器编排降低了人为错误的风险。
  • 提高可用性: 正确的编排工具通过重新启动失败的容器和扩展环境以适应负载变化,使应用程序更具弹性和可用性。
  • 集中管理: 容器编排允许从单个界面管理多个服务器或服务器集群。
  • 启用标准化: 容器编排使标准化应用程序部署变得更加容易。

什么是最好的容器编排工具?

容器的概念由来已久,但在 2010 年 Docker 成立后,这个想法才真正流行起来。随着容器变得越来越流行,如上所述,对编排工具的需求迅速变得更加迫切,许多容器编排工具应运而生。以下是一些流行的容器编排工具:

  • Docker Swarm 由于 Docker帮助普及了容器,它的编排工具 Docker Swarm 在 2013 年发布后成为第一批知名的工具。虽然一些公司仍在使用 Swarm,但它更适合较小的工作负载,并且它的未来有点不确定。Mirantis 于 2019 年从 Docker 和 Docker Enterprise 购买了 Swarm。
  • Kubernetes  Kubernetes 是一个容器编排平台,起源于 Borg,这是 Google 在内部创建的用于管理其庞大基础设施的平台。Kubernetes 于 2014 年由谷歌开源,此后成为云原生计算基金会(CNCF) 项目。Kubernetes 的出现让大多数其他早期容器编排平台黯然失色。
  • Rancher  Rancher Labs 成立于 2014 年,旨在帮助公司提供容器化应用程序。在最初开发了自己的容器编排平台(Cattle)之后,Rancher 于 2016 年将重点转向 Kubernetes 管理。该公司于 2020 年被 SUSE 收购。 
  • Red Hat OpenShift  OpenShift 是一个流行的容器平台。与 Rancher 类似,Red Hat 在采用 Kubernetes 之前开发了自己的编排技术。OpenShift 将 Kubernetes 与各种附加功能和开发人员工具打包在一起进行使用。
  • Apache Mesos  Mesos的开发始于 2009 年,在容器普及之前,作为提供集群管理的工具。它支持容器化和非容器化工作负载的编排。Mesos 1.0 于 2016 年发布。Mesosphere 公司通过其 DC/OS 产品将 Mesos 商业化,使 IT 团队更容易使用非常复杂的技术。然而,在 2019 年,Mesosphere 更名为D2iQ,并切换到了 Kubernetes。
  • 公共云服务:两个流行的公共云(亚马逊和谷歌云平台)在 Kubernetes 兴起之前提供了容器编排服务,并且这些服务仍然可用。现在所有的公共云都提供托管的 Kubernetes 服务。(Amazon Web Services 提供 EKS,Google 提供 GKS,Microsoft Azure 提供 AKS。)

Kubernetes 是事实上的标准

目前,Kubernetes(或 K8s)本质上已经取代了容器编排的其他替代方案。然而,尽管 K8s 已成为管理容器化应用程序的事实标准,但应该了解以下内容:

  • K8s 仍然以复杂且难以设置和操作而闻名。
  • 围绕 Kubernetes 涌现出一个广泛的服务和工具生态系统,增加了巨大的价值,但进一步加深了学习曲线。
  • 由于其受欢迎程度(以及在 IT 领域相对较新),K8s 的专业知识供不应求。
  • DIY K8s 管理解决方案需要大量时间和资源。

刚刚开始使用容器和 Kubernetes 的公司在选择合作伙伴和管理工具时必须密切关注这些问题。