容器编排工具的比较介绍

574 阅读7分钟

容器编排工具的比较

本博客解释了容器编排的作用、好处,并探讨了一些可用的编排工具。

随着软件开发从传统方法转向云原生开发和DevOps,容器已经变得越来越流行。

在一个容器化的环境中,一个操作系统的单一实例在不同的应用程序中被共享。对于那些更熟悉虚拟机的人来说,记住每个虚拟机包含它自己的完整操作系统的实例是很有用的,其目的是为了像独立的服务器一样运行--因此而得名。 来源:kubernetes.io

容器与虚拟机

容器比虚拟机有很大的优势,特别是对于云原生应用。正如你所看到的,容器比虚拟机的重量更轻,所以它们更有效地利用资源。而且,由于容器将必要的代码、容器运行时、工具、库和设置打包在一起,它们具有高度的可移植性。一个设计合理的容器可以在开发者的笔记本电脑上运行,也可以在数据中心的服务器上运行,或者在公共云上运行,而不需要修改。

容器化的应用程序通常将应用程序分解成独立的服务--微服务--每个都在自己的容器中,并通过并行运行容器的多个实例进行扩展。(这也有助于使它们具有弹性。)因此,你可以在同一时间有更多的容器在运行,而任何特定的容器实例的寿命通常要短得多--几分钟或几小时。相比之下,一个正在运行的虚拟机,可能会持续数周或数月。

这一切都导致了必须管理容器的方式的一些重大差异。虽然你可以手动启动和停止容器,但需要协调工具来管理大规模的容器化应用。

本文解释了容器编排的作用、它的好处,并探讨了一些可用的编排工具。

什么是容器编排?

容器协调使您能够通过自动化部署、管理、扩展和可用性,跟上容器化应用的动态需求。下面描述的各种解决方案被设计用来执行一些或全部任务,否则你将不得不手动执行。

  • 启动和停止容器
  • 安排容器在某个特定时间运行
  • 重新启动失败的容器
  • 响应负载,扩展容器实例的数量

容器协调的好处

协调解决方案可以让你非常有效地运行你的应用程序,在需要时扩展资源,在不需要时释放资源。容器协调的好处包括:

  • 实现大规模、动态的应用。虽然容器协调本身会增加复杂性,但如果没有它,根本不可能管理大规模的容器化应用。
  • 加快软件开发。正确的容器协调工具可以使开发人员和运营商的生活更轻松,简化新的和更新的软件的交付。
  • 减少人为错误。 与任何类型的自动化一样,容器编排可以减少人为错误的风险。
  • 提高可用性。正确的协调工具使您的应用程序更具弹性和可用性,既可以重新启动失败的容器,也可以扩展环境以适应负载的变化。
  • 集中化管理。容器协调允许你从一个界面管理多个服务器或服务器集群。
  • 实现标准化。容器协调使应用程序的部署更容易标准化,例如,当你需要在不同的数据中心或云中运行同一个应用程序的多个实例时。

哪些是最好的容器协调工具?

容器的概念已经存在了很长时间,但这个想法在2010年Docker公司成立后真正流行起来。随着容器变得越来越流行,对上述协调工具的需求迅速变得明显,并出现了一些容器协调工具作为回应。以下是一些流行的容器编排工具。

  • Docker Swarm. 由于Docker帮助普及了容器,它的协调工具Docker Swarm在2013年发布后成为第一批获得知名度的工具,这可能并不令人惊讶。虽然有些公司仍在使用Swarm,但它更适合于较小的工作负载,而且它的未来有点不确定。Mirantis在2019年从Docker那里购买了Swarm,以及Docker Enterprise。正如Docker文档中指出的那样。"Docker Swarm模式是内置于Docker引擎的。不要将Docker Swarm模式与Docker Classic Swarm混淆,后者已不再积极开发。"
  • Kubernetes。Kubernetes是一个容器编排平台,起源于Borg,是谷歌内部为管理其庞大的基础设施而创建的平台。Kubernetes于2014年由谷歌开源,此后成为云原生计算基金会(CNCF)项目。Kubernetes已经发展到让大多数其他早期容器编排平台黯然失色,成为事实上的标准。最新的CNCF年度调查将Kubernetes描述为已经跨越了鸿沟,结论是 "容器采用和Kubernetes已经真正成为主流--在全球的组织中,特别是在大型企业中,使用率已经上升"。
  • Rancher。Rancher实验室在2014年开始帮助企业进行容器化应用。在最初开发了自己的容器编排平台(Cattle)之后,Rancher在2016年将重点转向Kubernetes管理。该公司在2020年被SUSE收购。
  • 红帽OpenShift。OpenShift是一个流行的容器平台。与Rancher类似,红帽最初在采用Kubernetes之前开发了自己的协调技术。OpenShift将Kubernetes与各种附加功能和开发者工具打包。
  • Apache Mesos。Mesos的开发始于2009年,在容器普及之前,它是一个提供集群管理的工具。它支持容器化和非容器化工作负载的协调。Mesos 1.0于2016年发布。Mesosphere公司通过其DC/OS产品将Mesos商业化,使IT团队更容易获得一项非常复杂的技术。然而,在2019年,Mesosphere改名为D2iQ,并改用...Kubernetes。
  • 公共云服务。在Kubernetes登场之前,两个流行的公有云(亚马逊和谷歌云平台)提供了容器编排服务,这些服务仍然可用。所有的公有云现在都提供管理的Kubernetes服务。(亚马逊网络服务提供EKS,谷歌有GKS,微软Azure有AKS)。

Kubernetes是事实上的标准

如果你没有从上面的各种描述中得到什么,只要记住Kubernetes(或K8s)已经基本上取代了其他容器编排的选择。如果你的组织正计划采用容器,那么Kubernetes可能是你的未来

然而,尽管K8s已经成为管理容器化应用程序的事实上的标准,但有几件事你应该知道:

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

刚刚开始使用容器和Kubernetes的公司在选择合作伙伴和管理工具时必须密切关注这些问题。也有提供Kubernetes管理、监控、安全和其他功能的软件即服务(SaaS)和托管解决方案。尤其是SaaS模式,可以提供快速的价值实现时间、稳健性和可靠性、灵活的定价和易用性。

选择SaaS工具来解决业务和运营需求,可以使你减少对难以找到的技术专家的依赖。同样值得注意的是,尽管我们中的许多人在某种程度上交替使用 "托管 "和 "SaaS "这两个术语,但它们并不是同一回事。请明智地选择。