介绍
我们可能听说过很多关于在 IT 中使用容器的信息,尤其是尤其是在云环境中。但是这些容器到底是什么?在信息技术领域,容器就像您在日常生活中可以遇到的典型容器。它只保存对象。简单地说,容器是我可以把东西塞进去的东西。我可以将所有配置文件、包、依赖项、代码和应用程序放在一个容器中。之后,我可以拿起这个容器,把它带到任何我喜欢的地方。我可以在开发、生产或登台中运行它,并且每次都获得相同的环境。原因是无论环境如何,这个容器的内容都保持不变。因此,它本质上是一种便携式设备。容器对我来说只是一种方便的机制,可以标准化操作我的应用程序所需的一切。
客户操作系统在所有虚拟机上的资源重复是应该考虑容器的根本原因。我可以通过不必在容器中复制任何东西来节省时间。因此,那里有很多额外的毛病,而不是不必重复开发大量操作系统并复制对我的应用程序无关紧要的所有内容,因为,让我们面对现实吧,我们从未在每个部署中使用该操作系统中的任何内容。我将能够使用这个容器来减少它。仅包含该应用程序和必要的库、包和配置文件。
在真正意义上,这就像我正在制作我的小微环境,完成我需要的一切。
在本文中,我们将了解 AWS 最重要的容器服务之一,即 AWS ECS。
什么是 Amazon Elastic Container Service (ECS)?
开发人员可以使用 Amazon Web Services (AWS) 提供的云计算服务 Amazon Elastic Container Service (ECS) 在云中执行应用程序,而无需为代码运行设置特定环境。应用程序接口 (API)来电。任务定义使拥有 AWS 账户的开发人员能够安装和管理在称为集群的计算机组上运行的可扩展应用程序。Amazon ECS 可通过 AWS 管理控制台和软件开发工具包访问,是一项可扩展的服务 (SDK)。
开发人员可以使用带有 Amazon ECS 的 Docker 容器来执行各种任务,从托管一个简单的网站到管理需要数千个容器的复杂的分布式微服务。ECS 分析和跟踪 CPU 和内存输出以选择最佳容器部署。AWS 的客户可以使用该服务来升级或缩减容器。为了获得更大的灵活性,支持 AWS Elastic Load Balancing (ELB)、Elastic Block Store (EBS) 卷以及 Identity and Access Management (IAM) 角色。
为了应对容器化的日益普及,亚马逊创建了 ECS。ECS 在主机操作系统之上运行,使开发人员能够为 EC2 实例的隔离分组指定规则,从而提高可移植性和计算速度 (OS)。Docker 是 ECS 支持的开源 Linux 容器服务。
AWS ECS 中的启动类型:
有 2 种启动类型用于在 ECS 中运行我们的容器。他们是:
1. Fargate 启动类型:
这是一种现收现付的无服务器选择。无需管理基础架构,您就可以运行容器。
2. EC2 启动类型:
要运行您的容器,请在集群中配置和部署 EC2 实例。
下表显示了何时使用哪种启动类型的情况:
Fargate 启动类型 | EC2 启动类型 |
应该减少开销的大型工作负载 | 不断需要大量 CPU 内核和内存的工作负载 |
具有零星突发的小型工作负载 | 需要价格优化的大型工作负载 |
微小的工作量 | 您的程序必须有权访问持久存储。 |
批次任务 | 自己管理您的基础架构。 |
AWS ECS 的架构
资料来源:AWS
AWS ECS 架构涉及 6 个主要元素。这 6 个元素是为使用 AWS ECS 服务而创建的。以下是架构中涉及的元素:
一、任务定义:
此蓝图代表您的应用程序并指定要运行的 Docker 容器。在我们的场景中它将是两个容器。它将包括有关要使用的图片、容器应如何通信、应分配多少 CPU 和 RAM 等信息。
ECS 任务定义可用于定义几乎任何可以从命令行运行的 Docker 命令。例如,这些参数可用于指定要运行的容器、要打开的端口、要使用的数据卷、Docker 的网络模式以及身份和访问管理 (IAM) 角色。
2.任务:
在集群中执行的任务定义的一个实例就是一个任务。在 Amazon ECS 中为您的应用程序构建任务规范后,可以指定要在集群上执行的任务数。运行其中列出的容器的任务定义实例。一个任务定义可以根据需求生成尽可能多的任务。
任务由 Amazon ECS 任务计划程序组织成集群。
3.服务:
定义自动缩放、负载平衡以及可以从单个任务定义同时执行的任务的最小和最大数量。在我们的示例中,如果由于我们正在运行一个任务,CPU 已经处于其最大容量,我们可能希望它添加另一个任务。但是,鉴于我们知道执行额外的任务会消耗额外的资源,这需要花钱,我们可能希望限制一次可以执行的任务数量。
4.集群:
每个由一个或多个任务组成的服务的逻辑集合是一个 Amazon ECS 集群。首次使用 Amazon ECS 时会生成默认集群。您可以将更多集群添加到您的帐户,以实现各种工作负载或项目的资源隔离。这两个选项是在 EC2 实例上或通过 Amazon Fargate 运行集群资源。
一个集群可以运行许多服务。如果您的产品包含多个应用程序,您可能希望将其中的多个应用程序聚集在一起。这减少了设置时间并更有效地利用了手头的资源。
5 、容器实例:
这是除了 Docker 之外还运行 ECS Container Agent 的 EC2 实例。单个容器实例可以执行来自相同或不同服务的许多任务。
6 、集装箱代理:
Amazon ECS 集群中的每个容器实例都会执行容器代理。代理会通知 Amazon ECS 当前正在进行的任务和资源使用情况。Amazon ECS 可以根据需要使用代理来启动和停止任务。
AWS ECS 的特点
借助 Amazon ECS 的强大功能,开发人员可以从操作单个 Docker 容器升级到监督完整的业务应用程序组合。
下面列出了一些功能:
· Docker 集成:
由于 Amazon ECS 支持 Docker,AWS 用户可以跨 Amazon EC2 实例集群管理 Docker 容器。每个 EC2 实例在集群中启动一个 Docker 守护程序。无需修改,它可以在 Amazon ECS 上本地部署和运行任何打包为容器的应用程序。
·负载均衡:
由于与 AWS ELB 的集成,开发人员可以在容器之间传播流量。Amazon ECS 调度程序在定义要使用的任务定义和 ELB 时使用 ELB 自动添加和删除容器。
·安全:
身份、安全和管理与 Amazon ECS 集成,以促进快速的开发人员生产周期。开发人员可以为每个容器提供权限,在构建应用程序时赋予它们高隔离级别。
·监控:
集群和容器都具有监控功能。Amazon CloudWatch 可以监控按任务定义、服务或集群分组的活动作业的平均和汇总 CPU 和内存使用情况。此外,任何时候必须扩大或缩小容器或集群,CloudWatch 警报都会通知开发人员。
·集群管理:
对于开发人员,Amazon ECS 管理集群管理的每个阶段。这通常包括创建架构、控制每个系统的可用性和可扩展性,以及安装、运行和扩展监控解决方案、配置管理系统和集群管理软件。开发人员只需使用 Amazon ECS 启动一个容器实例集群并指定它们应完成的任务。
·日志:
将 ECS 代理日志和 Docker 容器日志从每个容器实例发送到 Amazon CloudWatch 日志将更容易诊断问题。可以记录对 Amazon ECS API 的所有调用,并且用户将使用 AWS CloudTrail 接收日志文件。
·恢复:
Amazon ECS 服务计划程序会自动恢复运行状况不佳的容器。这保证了所需数量的容器不断支持应用程序。
·网络:
得益于 Amazon ECS 对 Docker 网络的支持以及与 Amazon Virtual Private C loud (Amazon VPC)的连接,开发人员可以控制容器与其他服务和外部流量的交互方式。
使用 AWS ECS 的优势
Amazon ECS 通过自动部署和回滚选项简化灾难恢复和按需可扩展性,从而为系统管理员和经理提供帮助。出于几个原因,它是有利的。
·可用性:
ECS 负责维护应用程序可用性,并根据需要协助您扩展或缩减以满足容量需求。
·成本效益:
在同一个节点上调度多个容器可以节省大量成本。
·安全:
ECS 和 Amazon ECR 协同工作以提供最佳的应用程序安全性。
·易于部署:
通过处理这些职责,ECS 消除了设置和管理 Kubernetes 集群基础设施的需要。
·调度:
允许您安排批处理操作、服务和应用程序。
·与其他服务的集成:
借助 Amazon ECS 与其他 AWS 服务(如 Amazon ECR 和 AWS ELB)的集成,用户可以执行一系列容器化应用程序和服务。
·兼容性:
基于容器的管道消除了部署在不同环境中表现不同的潜在问题。
AWS ECS 使用案例
以下是 AWS ECS 的一些用例:
·通过向 AWS 提供本机集成并启用持续集成和持续部署 (CI/CD) 管道,Amazon ECS 支持微服务应用程序的运行。
·此外,Amazon ECS 支持整个 AWS 服务范围内的批处理、计划和调度,包括 Amazon EC2、Amazon EC2 Spot 实例和 Fargate。
· Amazon ECS 简化了用于训练和推理的容器化机器学习 (ML) 模型。安装在各种平台上或靠近应用程序正在处理的数据的松散连接的分布式服务可用于构建 ML 模型。
·无需修改代码,遗留的企业应用程序可以被容器化并迁移到 Amazon ECS。
· Linux 虚拟机 (VM),也称为实例,可以使用 Amazon Elastic Compute Cloud (Amazon EC2) Web 服务在云上创建和运行。开发人员可以为在主机操作系统之上运行的 EC2 实例的隔离组创建规则,以提高计算性能和可移植性。
AWS ECS 与 EKS
借助 Amazon Elastic Kubernetes Service (EKS),您可以在 Amazon Web Services (AWS) 上将 Kubernetes 作为托管服务运行,同时保持与开源 K8s 项目的兼容性。Kubernetes 控制平面由 EKS 服务为您设置和管理。您基于容器的应用程序的部署、可扩展性和管理通过 Kubernetes 实现自动化。
下图显示了 ECS 和 EKS 之间的区别:
结论
通过消除您安装、运行和扩展集群管理基础设施的要求,Amazon ECS 让您可以轻松地将容器用作应用程序的构建块。您可以使用 Docker 容器来安排使用 Amazon ECS 的批处理操作、服务和长时间运行的应用程序。您可以使用 Amazon ECS 向上或向下扩展容器以满足应用程序的容量需求,这还可以保持应用程序的可用性。Elastic Load Balancing、EBS 卷、Amazon Virtual Private Cloud (VPC) 和 IAM 都与 Amazon ECS 相结合。您可以将 Amazon ECS 链接到您当前的软件交付流程,或者借助简单的 API 集成和使用您的调度程序。
AWS ECS 的一些关键点是:
- 当用户想要在 AWS 中使用容器时使用
- 无需手动创建环境,因为它提供了一种微环境
- 它可以用于任何类型的工作负载,即从小到大的工作负载
- 它可以与其他 AWS 服务集成。
原文标题:AWS ECS- Amazon’s Container Tool
原文作者:Suhas Hegde
原文链接:https://www.analyticsvidhya.com/blog/2022/10/aws-ecs-amazons-container-tool/