什么是容器编排?

发布日期 2024年10月22日
多枚蓝绿色火箭在浅绿色背景上对角排列,每枚都投下柔和的阴影
By Stephanie Susnjara and Ian Smalley

容器编排定义

容器编排自动配置、部署、扩展和管理容器化应用程序的生命周期。开发人员使用容器编排来简化敏捷或 DevOps 开发运维工作流,提供支持现代混合多云基础设施所需的灵活性和速度。

如今,Kubernetes 是最受欢迎的容器编排平台,大多数领先的云服务提供商(包括 Amazon Web Services (AWS)、Google Cloud Platform、IBM Cloud 和 Microsoft Azure)都提供托管的 Kubernetes Service。其他容器编排工具包括 Docker Swarm 和 Apache Mesos。

为什么容器需要编排?

容器是轻量级可执行应用程序组件,它将应用程序源代码与在任何环境中运行代码所需的所有 操作系统  (OS) 库和 依赖关系 相结合。 

在几十年前,就可以创建容器了,但直到 2008 年  Linux 在其内核中包含容器功能时,容器才变得广泛可用。2013 年  Docker  开源容器化平台问世后,它变得更加重要。(Docker 非常流行,以至于“Docker 容器”和“容器”经常互换使用。)如今,容器还与除 Linux 之外的许多其他操作系统兼容,包括 Windows。

虚拟机 (VM) 相比,容器(更具体地说,容器化微服务无服务器函数)更小、资源效率更高且可移植性更好,因此,已成为现代云原生应用程序的事实计算单元。

 

在数量较少时,很容易手动部署和管理容器。然而,容器化应用程序以及大规模管理容器化应用程序的需求在大多数大型组织中已变得无处不在。

例如,如果没有容器编排, 持续整合/持续交付 (CI/CD) 或  DevOps  开发运维管道就不可能实现,而容器编排可以自动执行与部署 和运行 容器化应用程序和服务有关的操作任务。

IBM 的一项研究中,70% 的受访开发人员正在使用容器编排解决方案,使用解决方案的这些开发人员中又有 70% 宣称在组织中使用完全托管(云托管)的容器编排服务。

容器编排如何工作?

容器编排架构包括在多台机器和环境中运行容器集群。每个集群通常由一组节点(也称为服务器实例)组成。工作节点使用诸如 Docker 的容器运行时来运行容器。一组控制平面节点充当集群的协调器。用户可以使用具有应用程序编程接口 (API) 和图形用户界面 (GUI) 的工具来管理和监控容器化工作负载。

虽然不同平台和工具的方法和功能存在差异,但容器编排本质上是一个三步过程(作为敏捷迭代管道或 DevOps 开发运维管道的一部分时,称为周期)。

  1. 供应
  2. 部署
  3. 生命周期管理

1. 配置

大多数容器编排工具都支持声明性配置模型。开发人员编写定义所需状态的配置文件(以 YAML 或 JSON 格式,具体取决于工具)。运行该文件的编排工具利用自身的智能实现该状态。配置文件通常会:

  • 定义哪些容器映像组成应用程序并指明它们位于何处(在哪个容器注册表中)。
  • 为容器配置存储和其他资源。
  • 定义并保护容器之间的网络连接。
  • 指定版本控制(用于分阶段或金丝雀部署)。

2. 部署

编排工具计划将容器(和容器副本,用于实现弹性)部署到主机中。它根据可用的中央处理器 (CPU) 容量、内存或配置文件中指定的其他要求或约束来选择最佳主机。

3. 生命周期管理

在部署容器后,编排工具根据容器定义文件(通常是 Dockerfile)管理容器化应用程序生命周期。

生命周期管理任务包括:

  • 管理容器之间的可扩展性(扩展和缩减)、负载均衡和资源分配。
  • 通过在发生中断或系统资源短缺时将容器重新定位到另一台主机,有助于确保可用性和性能。
  • 收集和存储用于监控应用程序运行状况和性能的日志数据和其他遥测数据。

观看此视频,深入了解容器编排的工作原理:

容器编排的优势

容器编排的主要优点包括:

  • 自动化
  • 复原力
  • 提高了资源使用率和性能
  • 成本效益
  • 速度和敏捷性
  • 提高安全性
  • 提高生产率

自动化

容器编排的主要优点是 自动化,这大大减少了管理大规模容器化应用程序的人工工作量和复杂性。

弹性

如果容器发生故障,容器编排解决方案可以通过重新启动或扩展容器来增强弹性。此功能有助于确保可用性并增加应用程序的正常运行时间。

提高资源利用率和性能

自动主机选择和资源分配可以最大限度地有效利用计算资源。例如,容器编排解决方案可以根据单个容器调整 CPU 内存和存储空间,从而防止过度配置并提高整体性能。

节约成本

容器编排消除了人工干预的需要,从而降低了运营成本。此外,容器需要的资源比 VM 少,这可以降低 IT 基础架构需求和管理成本。

速度和敏捷性

容器编排工具有助于加快应用程序的开发和部署,为现代云原生流程提供重要的支持。

提高安全性

容器通过将应用程序与主机系统以及彼此隔离来提高安全性,缩减攻击面。许多平台包含自动扫描,以检测漏洞和保护映像注册表,从而增强整体防护。

提高生产率

通过自动化运营,容器编排支持敏捷或 DevOps 开发运维方法。这使团队能够以快速的迭代周期进行开发和部署,并更快地发布新特性和功能。

IBM DevOps

什么是 DevOps?

Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

使用 Kubernetes 的优势

由 Google 开发并于 2014 年发布的 Kubernetes 成为开源软件历史上发展最快的项目之一。Kubernetes 目前由云原生计算基金会 (CNCF) 维护。自 Kubernetes 于 2016 年加入 CNCF 以来,贡献者数量已从 731 增长到 8012。1

与其他容器生态系统工具一起, Kubernetes 使公司能够提供高效的 平台即服务 (PaaS)。 这种云计算模型可处理 云原生 应用程序开发中的许多基础设施和操作相关任务和问题,使得开发团队可以专注于编码和创新。

 

Kubernetes 相比其他编排解决方案具有多项优势,主要由于其在以下多个领域均可提供更加全面、复杂的功能:

  • 容器部署
  • 发布
  • 服务发现
  • 存储配置
  • 负载均衡和可扩展性
  • 自我修复,以实现高可用性
  • 支持多个云提供商和跨云移植
  • 开源生态系统

容器部署

Kubernetes 将指定数量的容器部署到指定主机中,并将这些容器以所需状态保持运行。

发布

发布是对部署的更改。Kubernetes 允许开发人员启动、暂停、恢复或回滚部署。

服务发现

Kubernetes 可以使用 域名系统 (DNS)  名称或  IP 地址来发现服务并自动将容器公开到互联网或其他容器。

存储配置

开发人员可以根据需要将 Kubernetes 设置为为他们的容器挂载持久性本地或云存储。

负载均衡和可扩展性

当容器的流量激增时, Kubernetes 可以利用 负载均衡和 自动扩缩 功能在网络上分配流量,帮助确保稳定性和性能。这一功能还能为开发人员省去设置 负载均衡器的工作量。

自我修复,以实现高可用性

当容器出现故障时,Kubernetes 可以自动重启或替换该容器。它还可以删除不符合组织运行状况检查要求的容器。

支持多个云提供商和跨云移植

Kubernetes 得到了所有主要云提供商的广泛支持。对于将应用程序部署到混合云公有云私有云和本地基础设施的组合)或多云(使用多个云供应商的云服务)的组织来说,此功能至关重要。

开源生态系统

Kubernetes 还具有一系列不断扩展的可用性和联网工具,以通过 Kubernetes API 增强其功能。其中包括  Knative(允许容器作为无服务器工作负载运行)和  Istio(开源服务网格)。

容器即服务 (CaaS) 是什么?

容器即服务 (CaaS) 是一种托管服务,允许开发人员管理和部署容器化应用程序,为企业提供可移植、易于扩展的云解决方案。2022 年,全球的 CaaS 市场价值接近 20 亿美元。2 研究人员预计,到 2027 年,该市场价值将超过 70 亿美元,复合年增长率为 30.2%。

CaaS 提供商可为企业带来许多益处,包括容器运行时、编排层、持久存储管理以及与其他服务的整合。许多领先的公共提供商提供容器编排托管服务,其中许多使用 Kubernetes 作为底层技术。

顶级 CaaS 提供商包括:

  • AWS 的 Amazon Elastic Container Service (Amazon ECS)
  • Google Cloud 的 Google Kubernetes Engine (GKE)
  • IBM Cloud Kubernetes Service
  • Microsoft Azure Container Instances (ACI)
  • Red Hat OpenShift

容器编排和 AI

像 Kubernetes 这样的容器化编排平台可以自动执行人工智能 (AI)机器学习 (ML) 的某些部分,例如预测性维护工作流程(包括实时运行状况检查和资源规划)。

机器学习依靠大型语言模型 (LLM) 来执行高级 自然语言处理 (NLP),如文本分类、情感分析和机器翻译。容器编排有助于加快大型语言模型 (LLM) 的部署,从而实现 NLP 流程的自动化。此外,组织使用容器编排来运行和扩展生成式 AI 模型,从而提供高可用性和容错性。

作者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

相关解决方案
IBM Instana Observability

利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。

深入了解 IBM Instana Observability
DevOps 解决方案

使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。

探索 DevOps 解决方案
云咨询服务

通过我们的云咨询服务持续实现应用现代化,加速业务敏捷性与增长——支持任意平台部署。

深入了解我们的云咨询服务
采取后续步骤

从 IBM Instana® 的主动问题检测到跨堆栈实时洞察,让云原生应用程序保持高可靠运行。

  1. 了解 IBM Instana
  2. 探索 DevOps 解决方案
脚注

Kubernetes 项目旅程报告,云原生计算基金会,2023 年 6 月 8 日。

到 2027 年容器即服务市场价值将达 56 亿美元 - MarketsandMarkets 独家研究,Cision,2022 年 11 月 30 日。

3 2023 年容器即服务全球市场报告,Yahoo Finance,2023 年 6 月 1 日。