AWS Fargate 是一个计算引擎,用于在 Amazon ECS 上运行容器化应用程序。Fargate 允许您直接运行容器,而无需管理底层的 EC2 实例。 使用 Fargate,您只需定义容器映像、任务定义和集群规模,即可轻松地运行和管理容器化应用程序。AWS 将负责启动和停止容器,以及处理底层基础架构的管理工作。 Fargate 提供了一种简单且高效的方式来运行容器,而不需要您管理 EC2 实例。您可以根据需要扩展或缩减容器数量,而无需担心基础设施的细节。 了解 AWS Fargate 的指南将帮助您快速入门并开始使用该服务。本指南将介绍 Fargate 的基本概念、核心组件和使用示例。无论您是初学者还是有经验的用户,都可以从本指南中获得有关 AWS Fargate 的实用信息。 本指南的链接:https://aws.amazon.com/fargate/
AWS Fargate是一种可与Amazon ECS和Amazon EKS一起使用的技术。它允许您在不管理Amazon EC2实例的服务器或集群的情况下运行容器。
Fargate消除了配置、扩展或提供虚拟机集群来执行容器的需求。您无需选择服务器类型、调度集群扩展或优化集群打包。
我们可以使用Fargate启动类型或Fargate容量提供程序来运行您的Amazon ECS任务和服务。要使用Fargate,您可以将应用程序打包到containers中,指定操作系统、CPU和内存要求,配置网络和IAM策略,并启动它。
无需维护基本的CPU和RAM容量来托管容器。我们可以告诉AWS任务需要多少资源,将其余的任务交给AWS。每个Fargate任务都有自己的隔离屏障,因此它不与其他任务共享底层内核、CPU、内存或弹性网络接口。
Fargate如何工作?
Fargate通过允许您部署容器而无需设置或管理托管它们的基础设施来工作。您告诉Fargate要运行哪些容器镜像以及要分配多少CPU和内存资源。然后,Fargate会自动设置主机服务器。当您的容器运行时,您只需支付所使用的资源。
Fargate是一种无服务器计算引擎,因为它消除了最终用户管理托管容器的服务器的需要。需要明确的是,服务器仍然存在;只是AWS管理它们。Fargate不能与AWS Lambda混淆,后者是另一个无服务器计算服务,虽然Lamba现在支持部署容器镜像。
Fargate如何帮助?
AWS Fargate计算出你的任务所需的计算、内存和其他资源的确切数量,因此您无需担心选择实例类型或扩展集群容量。
它允许您仅支付您需要的资源来运行容器,避免过度配置和支付不需要的服务器。
Fargate任务(pod)在自己的内核中执行,提供了一个安全和隔离的计算环境,具有隔离的工作负载和增强的安全性。
它使团队能够使用ECS或EKS容器设计和运行应用程序,而无需处理耗时的infrastructure management活动,如扩展和保护服务器或打补丁操作系统。
通过与Amazon CloudWatch Container Insights等其他AWS服务的内置连接,AWS Fargate提供了高度的可观察性。您还可以使用多个第三方技术来收集日志和指标。
在使用Fargate时,我们还可以高效地利用AWS服务的广泛数组。
Fargate将不断启动和扩展计算资源以适应容器的要求,防止过度配置,并确保您不支付不使用的资源。您还可以计算节省策略,Fargate Spot选项可以为您节省高达70%的普通成本,但仅适用于可中断的应用程序。
Fargate的组件
集群
Amazon ECS集群是一组逻辑上的任务或服务。集群可用于隔离应用程序。当您使用Fargate执行任务时,它会管理您的集群资源。
任务定义
任务定义是描述至少一个应用程序容器的文本文件。它是一个JSON文件。它可用于同时描述最多十个容器。您的应用程序的任务定义充当蓝图。它指定了您应用程序的许多参数。
例如,您可以使用它来定义操作系统参数、要使用的容器、要为应用程序打开的端口以及要与任务中的容器一起使用的数据卷。应用程序的要求决定了任务定义可用的特定参数。
任务
任务是任务定义的集群级实例化。一旦在Amazon ECS中为您的应用程序创建了任务定义,您可以选择在集群上运行的任务数量。我们可以将任务作为服务的一部分或作为独立的进程运行。
服务
在Amazon ECS集群中,您可以利用Amazon ECS服务同时运行和维护所需数量的任务。如果您的任何任务失败或停止,Amazon ECS服务调度程序将根据您的任务定义运行另一个实例。它这样做是为了替换它并保持服务中任务的正确数量。
操作系统和CPU架构
Fargate支持的操作系统有Amazon Linux 2、Windows Server 2019完整版和Windows Server 2019核心版。
Amazon ECS任务定义提供了ARM和X86_64两种架构选项。如果使用Windows容器,必须使用X86_64 CPU架构。相反,如果使用Linux容器,可以使用ARM64架构进行ARM应用程序和X86_64 CPU架构。
使用EC2实例的ECS与使用AWS Fargate的ECS
在EC2实例模型中,容器部署到集群的EC2实例(虚拟机)上。ECS与任务定义的任务一起管理它们。
优点👍
- 在这里使用的EC2实例类型完全由您控制。
- 您可以使用Spot实例来降低成本高达90%。
缺点👎
- 您必须负责实例的安全补丁和网络安全,还需负责集群的可扩展性。
在Fargate模型中,您不再需要关心EC2实例或服务器。只需选择所需的CPU和内存配置,Fargate将部署您的容器。
优点👍
- 您无需管理任何服务器。
- AWS负责可用性和可扩展性,但选择正确的内存和CPU仍是一种良好的实践;否则,应用程序可能无法使用。
- 如果决定使用Fargate Spot,可以获得高达70%的Fargate价格折扣。
缺点👎
- ECS与AWS Fargate仅支持一种网络模式-awsvpc-。因此,这限制了您对网络层的控制。
不使用Fargate的EKS与使用Fargate的EKS
在不使用Fargate模型的EKS中,您必须事先决定集群的大小。您可以随后手动更改节点,但与从一开始指定理想大小相比,这很麻烦。
优点👍
- 这种模型在各种方面给予您更多的控制,比如您可以指定配置变量如HostNetwork和HostPort。
- 如果希望容器在更多区域可用,Fargate在所有区域都不受支持,因此您更倾向于使用不使用Fargate的EKS。
缺点👎
- 不使用Fargate的EKS使用起来有点困难。
在使用Fargate模型的EKS中,您无需事先指定集群的大小。
优点👍
- 使用Fargate的EKS更安全,因为它们在专用虚拟机内运行。不支持特权模式实际上是一种安全特性。
- 从长远来看,它更便宜。
缺点👎
- 它在各种方面给予您较少的控制权
结论
Fargate是一款非常强大且成熟的工具。它通过为您处理所有的基础设施管理,帮助您节省成本、时间和大量的精力。如果您是新手,并且只想专注于构建应用程序而不是维护它,那么Fargate特别有益。