什么是容器编排?
容器编排是自动化容器联网和管理的过程,因此您可以大规模部署应用程序。容器化可将应用程序的代码与应用程序在任何基础设施上运行所需的所有文件和库进行捆绑。随着应用程序数量的增长和复杂化,微服务架构可能具有成百上千个容器。容器编排工具旨在将容器基础设施的整个生命周期(从预置和调度到部署和删除)自动化,从而简化容器基础设施的管理。组织可以从大规模容器化中受益,并且不会产生额外的维护开销。
为什么需要容器编排?
容器已成为云原生应用程序的标准计算单位。云提供商提供用于运行各种计算工作负载的虚拟服务器实例,非常适合基于容器的工作负载。能够运行容器的唯一要求是服务器本身运行容器化服务,例如 Docker。Docker 是一种开源工具,用于将软件和相关库、系统工具、代码和运行时打包到容器中。它是一种轻量级解决方案,用于在单个服务器实例上运行和管理几个容器,但扩展成为一项挑战。
在托管容器编排平台出现之前,组织使用复杂的脚本来管理跨多台计算机的容器部署、调度和删除。维护这些脚本会带来诸如版本控制之类的挑战,而且设置难以扩展。容器编排可自动执行并解决这些复杂性,从而消除与手动管理相关的挑战。
容器编排使用案例
当您必须执行以下操作时,容器编排工具就变得必不可少:
- 跨多个实例管理和扩展容器。
- 运行许多不同的容器化应用程序。
- 同时运行不同版本的应用程序(例如,通过 CI/CD 进行测试和生产)。
- 通过运行容器的多个重复实例(副本)来确保服务器发生故障时应用程序服务的连续性。
- 跨多个不同的地理区域运行应用程序的多个实例。
- 出于预算目的,最大限度地利用多个服务器实例。
- 运行由数千个不同微服务组成的大型容器化应用程序。
容器编排有哪些优势?
在没有容器编排解决方案的情况下管理复杂的容器架构可能很困难。容器编排管理容器的创建、配置、调度、部署和删除。它还支持:
- 应用程序负载平衡和流量管理。
- 跨容器的应用程序服务连续性。
- 容器化过程中的安全性。
- 容器状态监控。
- 从底层服务器或实例资源中为容器提供资源。
以下是容器编排的更多优势。
内置弹性
如果容器离线,简单的容器化服务通常不会重启容器。同样,如果运行容器的计算机出现故障,则在计算机重启时容器不会重新启动。容器编排解决方案可以确保容器自动重启,或者在计算机出现故障时始终运行多个版本。
增强的性能
容器编排的最大优势之一是它能自动实现容器化应用程序的可扩展性、可用性和性能。您可以将容器编排工具配置为根据需求、网络可用性和基础设施限制进行扩展。容器编排解决方案可以监控整个容器网络的性能,并自动重新配置容器以获得最佳性能。
资源优化
底层服务器和实例的运行成本很高,必须有效使用才能优化成本。容器编排使组织能够最大限度地利用每个可用实例,并在资源耗尽时实例化按需型实例。这可以节省基础设施的成本。
容器编排的工作原理是什么?
容器是基于 Linux 的独立应用程序或微服务,与在几乎任何类型的机器上运行所需的所有库和功能捆绑在一起。容器编排的工作原理是管理一组服务器实例(也称为节点)中的容器。一组运行互连容器的节点称为集群。
首先,容器编排需要在集群中的每个节点上运行底层容器化解决方案——通常是 Docker。节点还必须运行编排工具。具有控制面板的指定主节点是编排解决方案本身的控制器。解决方案的管理员使用主节点上的 GUI 或命令行控制器来管理和监控容器编排工具。
创建和调度
容器编排解决方案读取以 YAML 或 JSON 编写的声明性配置文件,以了解系统所需的特定状态。使用文件中指定的信息,该工具:
- 从容器注册表中获取容器映像。
- 根据容器的个性化要求预置容器。
- 确定容器之间所需的网络。
然后,该工具在集群中调度和部署多容器应用程序。节点和容器之间的最佳匹配度由容器编排工具决定,而不是在配置文件中指定。该工具根据节点的资源限制(例如 CPU、内存等)以及定义的容器要求选择实际节点来运行每个容器。
管理
容器在集群中运行后,编排工具会管理整体系统运行状况,以确保其保持指定的性能状态。这可能包括:
- 跨容器的资源分配。
- 将容器部署到新节点,或删除容器。
- 对应用程序的流量进行负载均衡。
容器编排解决方案管理容器的生命周期,以优化和保护大型、复杂的多容器工作负载和环境。它可以管理组织所需的任意数量的容器化应用程序。在更高的组织需求下,通常运行多个主节点以实现高可用性和容错性。
容器编排面临哪些挑战?
以下是容器编排面临的一些挑战。
其他管理层
Kubernetes 是一种广泛使用的开源容器编排解决方案,适用于组织。它以其易用性、跨平台可用性和开发人员支持而闻名。但是,它仍然需要底层资源管理。您现在必须管理 Kubernetes 的资源预置,而不是容器。云原生容器编排工具是更好的选择,因为它们可以自行管理自己的资源需求。
训练不足
仅仅拥有正确的工具并不足以确保最佳的容器编排。您还需要熟练的工具管理员来正确处理编排、定义所需状态并了解监控输出。要成为复杂容器环境的成功管理者,必须深入了解 DevOps 和 CI/CD 流程、容器化和机器架构。这可能需要培训才能在团队中建立正确的技能组合。
版本控制配置
软件应用程序是版本化的,它为特定的环境(如开发、测试和生产环境)提供特定的构建版本。同样,容器编排工具还需要多个记录在案的配置以及版本历史记录,这意味着它们可以在部署和管理的同时处理快速、可重复的配置。
AWS 如何支持您的容器编排需求?
Amazon ECS 是一项完全托管的容器编排服务,可供组织在 AWS 上大规模构建、部署和管理容器化应用程序。它是无版本的,可以自动管理集群配置。您可以通过指定 CPU 和内存需求、联网和 IAM policy 以及启动类型和数据量来控制容器操作属性。通过 API 调用,您可以启动和停止基于容器的应用程序、查询集群的完整状态以及访问熟悉的 AWS 功能,例如安全组、弹性负载平衡 (ELB)、亚马逊弹性区块存储 (EBS) 卷和 AWS 身份访问管理 (IAM) 角色。
对于那些使用Kubernetes进行容器编排的用户,亚马逊弹性Kubernetes服务(亚马逊EKS)是一项托管的Kubernetes服务,用于在AWS云或本地数据中心运行Kubernetes服务。EKS 在本地提供一个一致且完全支持的 Kubernetes 解决方案,您可以获得集成的工具,并将其部署到 AWS Outposts、虚拟机或服务器。在云中,Amazon EKS 可自动管理负责一系列任务(包括安排容器、管理应用程序可用性、存储集群数据等)的 Kubernetes 控制面板节点的可用性和可扩展性。您可以利用 AWS 基础设施的所有性能、规模、可靠性和可用性,以及与 AWS 网络和安全服务的集成。
立即创建账户,开始使用 AWS。