AWS Fargate 简介指南

了解 AWS Fargate:无需管理服务器的容器运行技术

AWS Fargate 是一项与 Amazon ECS 和 Amazon EKS 协同工作的技术。它允许您在无需亲自管理服务器或 Amazon EC2 实例集群的情况下运行容器。这意味着您不再需要为容器的运行操心底层的基础设施。

Fargate 简化了容器部署流程,让您无需配置、扩展或管理虚拟机集群。告别选择服务器类型、规划集群扩展和优化集群打包的繁琐操作。

通过 Fargate 启动类型或 Fargate 容量提供程序,您可以轻松运行 Amazon ECS 任务和服务。 使用 Fargate 的流程非常简单:将应用程序打包到容器中,定义操作系统、CPU 和内存需求,配置网络和 IAM 策略,然后启动容器。

您无需再担心维护基础的 CPU 和 RAM 容量来托管容器。只需告知 AWS 任务所需的资源量,其余的工作将由 AWS 完成。每个 Fargate 任务都有其独立的隔离边界,因此不会与其他任务共享底层内核、CPU、内存或弹性网络接口,保障了任务间的安全性。

Fargate 的运作原理

Fargate 的核心优势在于其无服务器特性,您可以部署容器而无需设置或管理底层的基础设施。您只需要明确要运行的容器镜像以及分配的 CPU 和内存资源,Fargate 便会自动配置主机服务器。一旦容器开始运行,您只需为实际使用的资源付费。

Fargate 是一种无服务器计算引擎,因为它免除了用户管理托管容器的服务器的需要。 请注意,服务器实际上仍然存在,只是由 AWS 进行管理。不要将 Fargate 与 AWS Lambda 混淆,后者是另一种无服务器计算服务,主要用于处理事件驱动的计算,尽管 Lambda 现在也支持容器镜像的部署。

Fargate 的优势

AWS Fargate 可以自动计算任务所需的计算、内存和其他资源,避免了您为选择合适的实例类型或扩展集群容量而费心。

使用容器时,您只需为运行容器所使用的资源付费,避免过度配置和为不需要的服务器付费,从而优化成本。

Fargate 任务 (pod) 在各自的内核中运行,从而形成安全隔离的计算环境,确保工作负载的隔离和更高的安全性。

它使开发团队能够专注于使用 ECS 或 EKS 设计和运行应用程序,而无需处理繁琐的基础设施管理任务,如扩展和保护服务器或更新操作系统。

凭借与 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 Full 和 Windows Server 2019 Core。

Amazon ECS 任务定义支持 ARM 和 X86_64 两种 CPU 架构。如果使用 Windows 容器,则必须使用 X86_64 CPU 架构。相反,如果使用 Linux 容器,则可以将 ARM64 架构用于基于 ARM 的应用程序,也可选择 X86_64 CPU 架构。

ECS 与 EC2 实例对比:使用 Fargate 的 ECS

在 EC2 实例模型中,容器被部署到集群的 EC2 实例 (VM),ECS 将它们作为任务定义的一部分进行管理。

优点👍

  • 您可以完全控制所使用的 EC2 实例类型,灵活地选择适合您需求的配置。
  • 您可以利用 Spot 实例,以更低的价格(最多降低 90%)运行容器。

缺点👎

  • 您需要负责实例的安全补丁和网络安全,以及它们在集群中的可扩展性,增加管理成本。

在 Fargate 模型中,您无需再担心 EC2 实例或服务器的维护。只需选择所需的 CPU 和内存配置,Fargate 将自动部署您的容器。

优点👍

  • 无需管理任何服务器,简化了基础设施管理。
  • AWS 负责可用性和可扩展性,您只需合理选择内存和 CPU 配置即可,确保应用程序的稳定运行。
  • 通过 Fargate Spot,您可以享受高达 70% 的 Fargate 价格折扣。

缺点👎

  • 带有 AWS Fargate 的 ECS 仅支持 awsvpc 网络模式,限制了您对网络层的控制。

EKS 与 Fargate:EKS 与无 Fargate 的 EKS

在不使用 Fargate 模型的 EKS 中,您必须提前决定集群的大小。您可以手动调整节点,但这种方式不如从一开始就指定理想大小方便。

优点👍

  • 这种模型为您提供了更多控制权,例如您可以指定 HostNetwork 和 HostPort 等配置变量,进行更精细的控制。
  • 并非所有区域都支持 Fargate,如果需要将容器部署在更多区域,您可能更倾向于使用不带 Fargate 的 EKS。

缺点👎

  • 不带 Fargate 的 EKS 使用起来相对复杂一些,需要更多的管理工作。

在使用 Fargate 模型的 EKS 中,您无需事先指定集群的大小。

优点👍

  • 带有 Fargate 的 EKS 更加安全,因为它们在专用的虚拟机中运行。同时,它不支持特权模式,进一步增强了安全性。
  • 从长远来看,它通常更经济实惠。

缺点👎

  • 它在各个方面都为您提供了更少的控制权。

结论

Fargate 是一项强大而成熟的工具,通过为您处理所有基础设施管理工作,它可以帮助您节省成本、时间和精力。如果您不熟悉容器,并且只想专注于构建应用程序而不是维护基础设施,Fargate 将是您的理想选择。