借助 Google Kubernetes Engine (GKE) 等容器编排工具,您可以更轻松地部署和运行容器化应用及微服务。容器编排工具通常会应用自己的方法并提供不同的功能,但它们都能够让组织自动协调、管理和监控容器化应用。
我们来了解一下容器编排的工作原理。
容器编排使用声明式编程,这意味着您可以定义所需的输出,而不是描述获得想要的输出所需的步骤。开发者需要编写一个配置文件,用于指定容器映像的位置、如何建立和保护容器之间的网络,以及如何预配容器存储空间和资源。容器编排工具使用此文件自动实现要求的最终状态。
在您部署新容器时,工具或平台会根据配置文件中定义的预定限制或要求(例如 CPU、内存、与其他主机的距离,甚至元数据),自动安排容器并为容器寻找最适合的主机。
容器开始运行后,容器编排工具会根据容器定义文件自动执行生命周期管理和运维任务,包括:
容器编排可在任何支持容器的计算环境中使用,包括传统的本地服务器以及公共云、私有云、混合云和多云计算环境。
容器编排的最大优势之一是简化操作。自动执行任务不仅有助于最大限度地减少管理容器化应用所需的工作量和复杂性,还可以带来许多其他好处。
可靠的应用开发
容器编排工具可加快应用开发并使应用开发可重复。这样可以提高部署速度,使其成为支持 DevOps 等敏捷开发方法的理想选择。
可伸缩性
容器编排可让您根据不断变化的工作负载要求来扩缩容器部署。如果您选择托管式服务并按需扩缩您的底层基础设施,则还可以获得云的可伸缩性。
费用更低
容器需要的资源少于虚拟机,这有助于减少基础设施和开销费用。此外,容器编排平台需要的人力资源和时间更少,这可以进一步节省费用。
增强型安全
容器编排可让您跨平台管理安全政策,并帮助减少可能导致漏洞的人为错误。容器还可隔离应用进程,减少攻击面并提高整体安全性。
高可用性
使用容器编排工具可以更轻松地检测和修复基础设施故障。如果容器发生故障,容器编排工具可以自动重启或替换容器,这有助于维持可用性并提高应用的正常运行时间。
提高工作效率
容器编排可以提高开发者的工作效率,帮助减少重复性工作,并免除安装、管理和维护容器的负担。
容器编排平台提供了自动执行容器编排的工具,并且使您能够安装其他开源技术(例如 Prometheus)用于事件记录、监控和分析。
容器编排平台有两种类型:自建平台或托管式平台。
自建的容器编排工具可让您完全控制自定义,并且它们通常是从头开始或利用开源平台构建的。不过,自建方案也意味着您需要承担平台的管理和维护工作。
云原生开发最常用的开源容器编排平台是 Kubernetes。有时简称为 K8s,这是一个开源容器编排系统,最初由 Google 根据其内部集群管理系统 Borg 开发。如今,它被视为部署和管理容器的不二选择。
另一个选择是使用云服务提供商(例如 Google、Microsoft、Amazon 或 IBM)提供的托管式平台或容器即服务 (CaaS) 产品。使用托管式容器编排平台或 CaaS 时,云服务提供商负责管理安装和运维。因此,您只需要使用相关功能并专注于运行自己的容器化应用。
那么,容器编排有哪些例子?究竟为什么我们需要编排容器?
在现代开发中,容器化已成为构建云原生应用的主要技术。开发者现在可以使用单独的松散耦合组件(通常称为微服务)来构建应用,而不是使用大型单体式应用。
虽然容器通常更小、效率更高,并具有更好的可移植性,但它也有一个问题。拥有的容器越多,运维和管理它们的难度就越大。单个应用可能包含数百甚至数千个容器,它们需要协同工作以提供应用功能。
随着容器化应用的数量不断增长,如果不实现自动化,大规模管理它们几乎是不可能的任务。这正是容器编排的用武之地,它可以在极短的时间内执行关键的生命周期管理任务。
假设您有 50 个容器需要升级。如果进行手动操作,但您的团队需要投入多少时间和精力才能完成这项工作?借助容器编排,您可以编写配置文件,而容器编排工具将为您完成所有工作。
这只是容器编排帮助减少运维工作量的一个例子。现在,假设这些容器是使用不同的操作系统和语言开发的,那么部署、扩缩和保护它们需要多长时间?如果必须将它们迁移到不同的环境中,又需要多长时间?
声明式方法可以简化保持容器顺畅运行所需的大量重复和可预测的任务,例如资源分配、副本管理和网络配置。