什么是 Amazon Elastic Container Service?
Amazon Elastic Container Service (Amazon ECS) 是一种完全托管式的容器编排服务,可以帮助您轻松部署、管理和扩展容器化应用程序。作为一种完全托管式服务,Amazon ECS 内置有 AWS 配置和操作最佳实践。它与 AWS 和第三方工具(例如 Amazon Elastic Container Registry 和 Docker)集成。这种集成使团队更容易专注于构建应用程序而不是环境。您可以在云端和本地跨 AWS 区域 运行和扩展容器工作负载,而无需以复杂的方式管理控制面板。
Amazon ECS 术语和组件
Amazon ECS 中有三个层级:
-
容量 - 容器运行所在的基础设施
-
控制器 - 部署和管理在容器上运行的应用程序
-
预调配 - 可用于与计划程序交互以部署和管理应用程序和容器的工具
下图显示了 Amazon ECS 层。
Amazon ECS 容量
Amazon ECS 容量是容器运行所在的基础设施。下文概述了容量选项:
-
AWS Cloud 中的 Amazon EC2 实例
您可以选择实例类型、实例数量并管理容量。
-
AWS Cloud 中的无服务器(AWS Fargate)
Fargate 是一款按实际使用量付费的无服务器计算引擎。使用 Fargate,您无需管理服务器、处理容量计划或隔离容器工作负载即可获得安全。
-
本地虚拟机(VM)或服务器
Amazon ECS Anywhere 支持向 Amazon ECS 群集注册外部实例,如本地部署服务器或虚拟机(VM)。
容量可以位于以下任何 AWS 资源中:
-
可用区
-
Local Zones
-
Wavelength 区域
-
AWS 区域
-
AWS Outposts
Amazon ECS 控制器
Amazon ECS 计划程序是管理您的应用程序的软件。
Amazon ECS 预调配
有多种预调配 Amazon ECS 的选项:
-
AWS Management Console — 提供了一个可用来访问 Amazon ECS 资源的 Web 界面。
-
AWS Command Line Interface()AWS CLI— 为众多 AWS 服务(包括 Amazon ECS)提供命令。它在 Windows、Mac 和 Linux 上受支持。有关更多信息,请参阅 AWS Command Line Interface
。 -
AWS 开发工具包 — 提供特定于语言的 API 并关注许多连接详细信息。这些工具包括计算签名、处理请求重试和错误处理。有关更多信息,请参阅 AWS 软件开发工具包
。 -
Copilot – 为开发人员提供开源工具,以便在 Amazon ECS 上构建、发布和运行生产就绪型容器化应用程序。有关更多信息,请参阅 GitHub 网站上的 Copilot
。 -
AWS CDK — 提供开源软件开发框架,您可以通过它使用熟悉的编程语言对云应用程序资源进行建模和预置。AWS CDK 通过 AWS CloudFormation 以安全、可重复的方式预置资源。
应用程序生命周期
下图显示了应用程序生命周期及其如何与 Amazon ECS 组件配合使用。
您必须将应用程序设计为能够在容器上运行。容器是软件开发的标准化单位,它包含软件应用程序运行需要的所有内容。这包括相关代码、运行时、系统工具和系统库。从称为映像的只读模板中创建容器。通常通过 Dockerfile 进行构建镜像。Dockerfile 是一个纯文本文件,其中包含构建容器的说明。构建完成后,这些映像将存储在可从中下载它们的注册表,例如 Amazon ECR。
创建并存储映像后,创建 Amazon ECS 任务定义。任务定义是应用程序的蓝图。它是描述构成应用程序的参数和一个或多个容器的 JSON 格式的文本文件。例如,您可以使用它指定操作系统的映像和参数、要使用哪些容器、要为应用程序打开哪些端口以及任务中的容器应使用哪些数据卷。可用于任务定义的特定参数取决于您的特定应用程序需求。
定义任务定义后,将其部署为集群上的服务或任务。集群是在注册到集群的容量基础设施上运行的任务或服务的逻辑分组。
任务 是集群内的任务定义的实例化。您可以运行独立任务,也可以将任务作为服务的一部分运行。您可以使用 Amazon ECS 服务在 Amazon ECS 集群中同时运行和维护所需数量的任务。它的工作原理是,如果您的任何任务出于任何原因失败或停止,Amazon ECS 服务调度器将根据您的任务定义启动另一个实例。这样做是为了替换它,从而保持服务中所需的任务数量。
容器代理 在 Amazon ECS 群集内的每个实例上运行。代理向 Amazon ECS 发送有关容器当前正在运行的任务和资源使用率的信息。在接收来自 Amazon ECS 的请求时启动和停止任务。
部署任务或服务后,可以使用以下任一工具来监控部署和应用程序:
-
CloudWatch
-
运行时监控