作者
Stephanie Susnjara
Staff Writer
IBM Think
Ian Smalley
Staff Editor
IBM Think
什么是容器编排?
容器编排自动配置、部署、扩展和管理容器化应用程序的生命周期。开发人员使用容器编排来简化敏捷或 DevOps 开发运维工作流,提供支持现代混合多云基础设施所需的灵活性和速度。
如今,Kubernetes 是最受欢迎的容器编排平台,大多数领先的云服务提供商(包括 Amazon Web Services (AWS)、Google Cloud Platform、IBM® Cloud 和 Microsoft Azure)都提供托管的 Kubernetes 服务。其他容器编排工具包括 Docker Swarm 和 Apache Mesos。
在云端保持清醒头脑
获取每周 Think 时事通讯,了解有关在 AI 时代优化多云设置的专家指导。
立即订阅
为什么容器需要编排?
容器是轻量级可执行应用程序组件,它将应用程序源代码与在任何环境中运行代码所需的所有操作系统 (OS) 库和依赖关系相结合。
在几十年前,就可以创建容器了,但直到 2008 年 Linux 在其内核中包含容器功能时,容器才变得广泛可用。2013 年 Docker 开源容器化平台问世后,它变得更加重要。(Docker 非常流行,以至于“Docker 容器”和“容器”经常互换使用。)如今,容器还与除 Linux 之外的许多其他操作系统兼容,包括 Windows。
与虚拟机 (VM) 相比,容器(更具体地说,容器化微服务或无服务器函数)更小、资源效率更高且可移植性更好,因此,已成为现代云原生应用程序的事实计算单元。
在数量较少时,很容易手动部署和管理容器。然而,容器化应用程序以及大规模管理容器化应用程序的需求在大多数大型组织中已变得无处不在。
例如,如果没有容器编排,持续整合/持续交付 (CI/CD) 或 DevOps 开发运维管道就不可能实现,而容器编排可以自动执行与部署和运行容器化应用程序和服务有关的操作任务。
在 IBM 的一项研究中,70% 的受访开发人员正在使用容器编排解决方案,使用解决方案的这些开发人员中又有 70% 宣称在组织中使用完全托管(云托管)的容器编排服务。
容器编排如何工作?
容器编排架构包括在多台机器和环境中运行容器集群。每个集群通常由一组节点(也称为服务器实例)组成。工作节点使用诸如 Docker 的容器运行时来运行容器。一组控制平面节点充当集群的协调器。用户可以使用具有应用程序编程接口 (API) 和图形用户界面 (GUI) 的工具来管理和监控容器化工作负载。
虽然不同平台和工具的方法和功能存在差异,但容器编排本质上是一个三步过程(作为敏捷迭代管道或 DevOps 开发运维管道的一部分时,称为周期)。
供应部署生命周期管理
1. 配置
大多数容器编排工具都支持声明性配置模型。开发人员编写定义所需状态的配置文件(以 YAML 或 JSON 格式,具体取决于工具)。运行该文件的编排工具利用自身的智能实现该状态。配置文件通常会:
定义哪些容器映像组成应用程序并指明它们位于何处(在哪个容器注册表中)。
为容器配置存储和其他资源。
定义并保护容器之间的网络连接。
指定版本控制(用于分阶段或金丝雀部署)。
2. 部署
编排工具计划将容器(和容器副本,用于实现弹性)部署到主机中。它根据可用的中央处理器 (CPU) 容量、内存或配置文件中指定的其他要求或约束来选择最佳主机。
3. 生命周期管理
在部署容器后,编排工具根据容器定义文件(通常是 Dockerfile)管理容器化应用程序生命周期。
生命周期管理任务包括:
管理容器之间的可扩展性(扩展和缩减)、负载均衡和资源分配。
通过在发生中断或系统资源短缺时将容器重新定位到另一台主机,有助于确保可用性和性能。
收集和存储用于监控应用程序运行状况和性能的日志数据和其他遥测数据。
观看此视频,深入了解容器编排的工作原理:
容器编排的优势
容器编排的主要优点包括:
自动化
复原力
提高了资源使用率和性能
成本效益
速度和敏捷性
提高安全性
提高生产率
自动化
容器编排的主要优点是自动化,这大大减少了管理大规模容器化应用程序的人工工作量和复杂性。
弹性
如果容器发生故障,容器编排解决方案可以通过重新启动或扩展容器来增强弹性。此功能有助于确保可用性并增加应用程序的正常运行时间。
提高资源利用率和性能
自动主机选择和资源分配可以最大限度地有效利用计算资源。例如,容器编排解决方案可以根据单个容器调整 CPU 内存和存储空间,从而防止过度配置并提高整体性能。
节约成本
容器编排消除了人工干预的需要,从而降低了运营成本。此外,容器需要的资源比 VM 少,这可以降低 IT 基础架构需求和管理成本。
速度和敏捷性
容器编排工具有助于加快应用程序的开发和部署,为现代云原生流程提供重要的支持。
提高安全性
容器通过将应用程序与主机系统以及彼此隔离来提高安全性,缩减攻击面。许多平台包含自动扫描,以检测漏洞和保护映像注册表,从而增强整体防护。
提高生产率
通过自动化运营,容器编排支持敏捷或 DevOps 开发运维方法。这使团队能够以快速的迭代周期进行开发和部署,并更快地发布新特性和功能。
AI 学院
利用混合云实现 AI 就绪
本课程由 IBM 资深思想领袖带领,旨在帮助企业领导者获得所需的知识,以便划分可以推动增长的 AI 投资的优先级。
转到视频集
使用 Kubernetes 的优势
Kubernetes 由 Google 开发并于 2014 年发布,成为开源软件历史上发展最快的项目之一。Kubernetes 目前由云原生计算基金会 (CNCF) 维护。自 Kubernetes 于 2016 年加入 CNCF 以来,贡献者数量已从 731 增长到 8,012。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%。3
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 模型,从而提供高可用性和容错性。