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特别有益。

类似文章