Cloud & IT Cert Prep · 课时

EC2 启动类型与 Fargate

比较自行管理 EC2 容器实例与使用 Fargate 执行无服务器容器,了解两者的成本权衡

第 2 / 4 课13 个步骤

EC2 启动类型与 Fargate 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。

运行 ECS 任务的两种方式

ECS 提供两种启动类型,用于定义容器的运行位置:EC2 启动类型在您于集群中预置和管理的 EC2 实例上运行容器;Fargate 启动类型是一种无服务器计算引擎,AWS 会完全管理底层服务器。两者的任务定义和服务配置几乎相同,关键区别在于基础设施管理责任和成本模式。

EC2 启动类型:完全控制

使用 EC2 启动类型时,您可以借助ECS 容器代理将 EC2 实例注册为集群中的容器实例(该代理已预装在针对 ECS 优化的 AMI 上)。您可以选择实例类型、控制操作系统级设置、应用自定义安全基线,并使用竞价型实例来节省成本。ECS 会根据装箱或分散放置策略,将任务放置到已注册的实例中。您需要负责修补、扩展和维护底层 EC2 实例集群。

# Launch an ECS-optimised EC2 instance that joins the cluster
# User data for ECS container agent
#!/bin/bash
echo ECS_CLUSTER=MyAppCluster >> /etc/ecs/ecs.config
echo ECS_ENABLE_CONTAINER_METADATA=true >> /etc/ecs/ecs.config

Fargate:无服务器容器

使用 Fargate 时,您可以为每个任务指定 CPU 和内存,而 AWS 会在后台自动配置底层计算资源。您无需注册、修补或扩展 EC2 实例——这些工作全部由 AWS 管理。每个任务都拥有独立隔离的内核(通过 Firecracker microVMs 实现),相比多个任务共享同一主机的 EC2 容器实例,能够提供更强的安全隔离。Fargate 要求使用 awsvpc 网络模式,这意味着每个任务都会获得自己的 ENI 和 VPC IP 地址。

aws ecs run-task \
  --cluster 'MyAppCluster' \
  --task-definition 'myapp-task:5' \
  --launch-type FARGATE \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-aaa111"],
      "securityGroups": ["sg-xyz"],
      "assignPublicIp": "ENABLED"
    }
  }'

成本模型比较

两种成本模型存在根本差异。EC2 启动类型:无论任务是否正在运行,您都需要为底层 EC2 实例付费,但可以使用预留实例或 Savings Plans 获得折扣,也可以使用 Spot 实例,让可中断工作负载最多节省 90% 的成本。Fargate:仅按每个任务实际使用的 vCPU 和内存按秒计费——任务之间没有闲置成本。对于突发型或批处理工作负载,Fargate 通常更便宜;对于持续高利用率的工作负载,使用预留实例的 EC2 可能更划算。

使用 Fargate Spot 节省成本

Fargate Spot 以大幅降低的价格提供 Fargate 计算资源(最高可优惠 70%),但 AWS 需要回收容量时可能会中断任务。Fargate Spot 非常适合批处理、持续集成/持续交付流水线以及开发和预发布环境。您可以配置 capacity provider 策略,混合使用 Fargate(按需)和 Fargate Spot:在 Fargate 上使用 base=1,确保至少有一个有保障的任务,再通过 weight 值将剩余容量分配到两者之间。

aws ecs create-service \
  --cluster 'MyAppCluster' \
  --service-name 'BatchService' \
  --task-definition 'batch-task:1' \
  --desired-count 10 \
  --capacity-provider-strategy \
    'capacityProvider=FARGATE,weight=1,base=1' \
    'capacityProvider=FARGATE_SPOT,weight=4'

何时选择 EC2 启动类型

在以下情况下请选择 EC2 启动类型:需要 GPU 实例(Fargate 对 GPU 的支持有限)、需要 Fargate 不提供的 特定实例类型、需要 自定义 OS 配置(内核调优、自定义驱动程序)、需要依赖置放群组或增强型联网的 网络性能、需要运行 Windows 容器(EC2 支持 Windows Server 容器;Fargate 也支持 Windows,但存在限制),或者工作负载长期保持高利用率,此时 EC2 预留实例相比 Fargate 的按秒计费具有明显的成本优势。

何时选择 Fargate

在以下情况下请选择 Fargate:希望 消除 EC2 管理开销(无需修补 OS,无需扩展集群)、希望按秒 仅为实际使用量付费、运行不值得为闲置 EC2 容量付费的 突发型或批处理工作负载、通过 Firecracker microVMs 实现 更强的任务隔离,或者希望专注于应用代码来加快开发。对于新的 ECS 工作负载,SAA-C03 考试通常默认推荐使用 Fargate,除非题目明确提出了特定的 EC2 要求。

ECS 容量提供程序

容量提供程序 将计算层与 ECS 服务解耦。对于 EC2,容量提供程序会关联一个自动扩展组——当任务因容量不足而无法放置时,ECS 会自动扩展该 ASG。对于 Fargate,FARGATE 和 FARGATE_SPOT 是内置的容量提供程序。在服务上定义 容量提供程序策略,即可混合使用按需容量和 Spot/Fargate Spot,并针对不同工作负载对成本与可用性之间的权衡进行精细控制。

运维开销比较

不同启动类型的运维开销差异很大。EC2 启动类型 需要:选择和更新 AMI、配置 EC2 自动扩展、通过 SSM 或自定义脚本修补 OS、管理容器实例容量,以及强化实例级安全性。Fargate 消除了上述所有工作——AWS 负责修补 Fargate 平台,无需管理实例,也无需规划集群容量。不过,Fargate 在 OS 层自定义和网络性能调优方面的灵活性较低。

Fargate 任务的 CPU 和内存配置

Fargate 任务定义必须从固定的组合集合中指定 CPU 和内存。CPU 值包括:256、512、1024、2048、4096、8192、16384(单位为 vCPU,其中 1024 = 1 vCPU)。内存必须处于对应 CPU 值允许的范围内,例如,256 CPU 允许使用 512-2048 MB 内存。任务中的容器共享任务的 CPU 和内存上限。合理配置资源非常重要:Fargate 会严格按照您指定的资源量计费,因此过度配置会浪费资金;如果工作负载受 CPU 限制,过度配置也不会带来实际性能收益。

# Valid Fargate combinations
# 256 CPU (.25 vCPU): 512, 1024, or 2048 MB
# 512 CPU (.5 vCPU): 1024 to 4096 MB
# 1024 CPU (1 vCPU): 2048 to 8192 MB
# 2048 CPU (2 vCPU): 4096 to 16384 MB
# 4096 CPU (4 vCPU): 8192 to 30720 MB

使用 ECS Exec 进行调试

ECS Exec 允许您直接在运行中的容器内打开交互式 Shell 会话(EC2 和 Fargate 均支持),无需 SSH 或堡垒主机。它在底层使用 AWS Systems Manager Session Manager。在服务上启用该功能,然后使用 execute-command CLI 启动 bash 会话。这对于调试容器中的生产问题非常有价值。任务角色需要 ssmmessages:CreateControlChannel 及相关 SSM 权限。

aws ecs execute-command \
  --cluster 'MyAppCluster' \
  --task 'abc123def456' \
  --container 'myapp' \
  --interactive \
  --command '/bin/bash'

快速检查

测试您对本课 AWS Solutions Architect(SAA-C03)概念的理解。

课程回顾

本课介绍了:EC2 启动类型 可以完全控制实例类型和 OS 配置,但需要管理底层实例集群,适合 GPU、专用硬件或持续高利用率的工作负载;Fargate 通过按秒为任务计费和利用 Firecracker 实现强隔离,消除了基础设施管理,适合大多数 Web/API 工作负载和批处理任务;Fargate Spot 则可为可容忍中断的工作负载降低最高 70% 的成本。接下来,我们将学习使用 Amazon ECR 存储和拉取容器镜像。

免费开始

用 AI 导师学习 Cloud & IT Cert Prep — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
150
课程
600

常见问题解答

「EC2 启动类型与 Fargate」课时是免费的吗?

是的 — 「EC2 启动类型与 Fargate」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。

「EC2 启动类型与 Fargate」这节课中我会学到什么?

比较自行管理 EC2 容器实例与使用 Fargate 执行无服务器容器,了解两者的成本权衡 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cloud & IT Cert Prep 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「EC2 启动类型与 Fargate」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?

能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. ECS 集群、任务定义与服务
  2. EC2 启动类型与 Fargate
  3. ECR:存储和拉取容器镜像
  4. ECS 服务自动扩展与负载均衡
← 返回 Cloud & IT Cert Prep