什么是容器编排?

管理单个容器化应用相对简单,但如果要在分布式系统中扩容到数百或数千个,确保可用性、互连性和可伸缩性会是巨大的挑战。容器编排可以应对这些复杂性。虽然 Kubernetes 是执行此任务的领先开源平台,但 Google Kubernetes Engine (GKE) 等全托管式容器编排工具可简化部署和持续管理,并减轻与 Kubernetes 相关的许多运营负担。

Google Cloud 中的容器编排简介

容器编排的定义

容器编排系统可自动预配、部署、扩缩和管理容器化应用,您无需操心底层基础设施。

开发者可在容器所在的任何位置实现容器编排,从而自动执行容器的生命周期管理。

对于企业开发和运营团队而言,这意味着要从手动流程转向声明式自动化系统。您只需声明应用所需的状态,而无需指定如何执行部署新版本、扩缩以应对流量高峰或从硬件故障中恢复等任务。

Kubernetes 编排的主要概念

Kubernetes 编排的工作原理是,管理机器集群并根据容器所需的资源和用户定义的目标状态将容器部署到这些机器上。该系统由几个协同工作的关键概念组成。

  • 容器:容器是轻量级、可移植且可执行的软件包,其中包含应用及其所有依赖项。Kubernetes 会编排这些容器的部署和生命周期。
  • 集群:这是所有机器(称为节点)的集合,这些机器组合在一起并由 Kubernetes 管理,以运行您的应用。
  • 控制平面:控制平面是 Kubernetes 集群的大脑。它会做出有关集群的所有全局决策(例如调度),并负责检测和响应集群事件,以维持用户期望的状态。
  • 节点:节点是集群中的单个工作器机器,可以是物理服务器,也可以是虚拟机。它是容器实际运行的地方。
  • Pod:在 Kubernetes 中,Pod 是最小的可部署对象,代表一个正在运行的进程实例。它们包含一个或多个容器、共享存储空间和一个唯一的网络 IP。

容器编排工具的类型

容器编排平台提供了自动执行容器编排的工具,并且使您能够安装其他开源技术(例如 Prometheus)用于事件记录、监控和分析。

容器编排平台主要有两种类型:自行管理和托管式。

  • 自行管理的容器编排工具:这些平台通常是从头开始构建,或利用 Kubernetes 等开源平台构建,可让您完全控制自定义。不过,您也需要负责管理和维护平台,包括安装、配置、更新和安全修补等任务。
  • 托管式 Kubernetes 服务:Google Kubernetes Engine (GKE) 等平台可处理设置和运行底层集群基础设施的复杂性,让您可以专注于部署和管理应用。云服务提供商负责管理安装和运营。因此,您只需要使用相关功能并专注于运行自己的容器化应用。

Kubernetes 本身提供核心编排功能,而一系列集群工具可以协同工作,帮助提高安全性、简化管理并实现扩缩。下面列出了一些相关工具:

  • 监控和日志记录解决方案:Google Cloud 的运维套件(Cloud MonitoringCloud Logging)等工具对于观察集群及其上运行的应用的健康状况和性能是必不可少的。
  • CI/CD 工具Cloud Build 等系统与 Kubernetes 集成,可自动执行构建容器映像并将其部署到集群的过程。

容器编排的工作原理是什么?

借助 Google Kubernetes Engine (GKE) 等容器编排工具,您可以更轻松地部署和运行容器化应用及微服务。容器编排工具通常会应用自己的方法并提供不同的功能,但它们都能够让组织自动协调、管理和监控容器化应用。

虽然最终结果相同,都是运行着的、托管的容器化应用,但 Kubernetes 和 GKE 涉及的步骤和工作量却大相径庭。

YouTube 图片

Kubernetes 编排的主要功能

Kubernetes 可自动执行一些原本需要大量人工操作的关键功能。正是这些核心功能,让 Kubernetes 成为如此强大的编排平台。

  • 部署:Kubernetes 可帮助您描述已部署应用的期望状态。然后,编排引擎会以受控方式管理变更的发布,例如将应用更新到新版本,并且通常不会导致停机。
  • 扩缩:Kubernetes 可以根据 CPU 利用率或其他自定义指标自动增加或减少运行的容器数量。这有助于确保您的应用拥有处理负载所需的资源,同时优化成本。
  • 自我修复:如果容器或节点发生故障,Kubernetes 编排可以自动检测到故障。然后,它会在健康节点上重启、替换或重新安排容器,以帮助确保应用在没有人工干预的情况下保持可用。
  • 服务发现和负载均衡:Kubernetes 可以使用稳定的 DNS 名称自动将容器公开到互联网或集群中的其他容器。它还可以跨提供相同服务的多个容器进行流量负载均衡,以确保高效地分配请求。
  • 配置管理:Kubernetes 可让您将密码和 API 密钥等敏感信息存储为“Secret”并进行管理。它还将应用配置数据作为“ConfigMap”进行处理,因此您可以在不重新构建容器映像的情况下更新配置。

Kubernetes 容器编排的优势

容器编排的最大优势之一是简化操作。自动执行任务不仅有助于最大限度地减少管理容器化应用所需的工作量和复杂性,还可以带来许多其他好处。

可靠的应用开发

容器编排工具可加快应用开发并使应用开发可重复。这样可以提高部署速度,使其成为支持 DevOps 等敏捷开发方法的理想选择。

可伸缩性

容器编排可让您根据不断变化的工作负载要求来扩缩容器部署。如果您选择托管式服务并按需扩缩您的底层基础设施,则还可以获得云的可伸缩性。

费用更低

容器需要的资源少于虚拟机,这有助于减少基础设施和开销费用。此外,容器编排平台需要的人力资源和时间更少,这可以进一步节省费用。

增强型安全

容器编排可让您跨平台管理安全政策,并帮助减少可能导致漏洞的人为错误。容器还可隔离应用进程,减少攻击面并提高整体安全性。

高可用性

使用容器编排工具可以更轻松地检测和修复基础设施故障。如果容器发生故障,容器编排工具可以自动重启或替换容器,这有助于维持可用性并提高应用的正常运行时间。

提高工作效率

容器编排可以提高开发者的工作效率,帮助减少重复性工作,并免除安装、管理和维护容器的负担。

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。
与 Google Cloud 销售专员联系,详细讨论您的独特挑战。

容器编排示例和应用场景

假设您有 50 个容器需要更新。如果进行手动操作,但您的团队需要投入多少时间和精力才能完成这项工作?借助容器编排,您可以编写配置文件,而容器编排工具将为您完成所有工作。这只是容器编排帮助减少运维工作量的一个例子。

现在,假设这些容器是使用不同的操作系统和语言开发的,那么部署、扩缩和保护它们需要多长时间?如果必须将它们迁移到不同的环境中,又需要多长时间?声明式方法可以简化保持容器顺畅运行所需的大量重复和可预测的任务,例如资源分配、副本管理和网络配置。 以下是一些常见的容器编排应用场景:

  • 自动部署:编排工具可自动执行部署流程,确保部署一致且可重复,您无需手动部署每个容器。
  • 扩缩应用:当流量激增时,编排工具会自动扩缩容器数量以处理增加的负载,从而确保应用可用性。
  • 管理应用更新:编排工具支持滚动更新,让您可以在无需停机的情况下部署应用的新版本。
  • 确保高可用性:如果容器发生故障,编排工具会自动检测故障并重启或替换容器,从而确保应用弹性。
  • 优化资源利用率:编排工具可将容器高效打包为可用资源,从而最大限度地提高利用率并降低成本。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。