Amazon ECS

执行 Docker 容器的部署、管理和扩展的全托管容器编排服务,支持 Fargate 和 EC2 两种启动类型

概述

Amazon ECS(Elastic Container Service)是 AWS 的全托管容器编排服务。管理 Docker 容器的部署、扩展和负载均衡,与 AWS 生态系统深度集成。支持 Fargate(无服务器)和 EC2 两种启动类型,可根据运维复杂度和成本要求灵活选择。

任务定义与 Sidecar 模式

任务定义是 ECS 的核心概念,以 JSON 格式声明容器的配置:镜像、CPU/内存分配、端口映射、环境变量、日志配置等。一个任务定义可以包含多个容器,实现 Sidecar 模式。典型的 Sidecar 用例包括:日志收集(Fluent Bit)、服务网格代理(Envoy)、监控代理(X-Ray daemon)。Sidecar 容器与主容器共享网络命名空间,可通过 localhost 通信。

Fargate 与 EC2 启动类型的选择

Fargate 是无服务器启动类型,无需管理底层 EC2 实例。按任务的 CPU 和内存配置按秒计费,适合不想管理基础设施的团队。EC2 启动类型需要自行管理 EC2 实例集群,但提供更多控制权:可以使用 GPU 实例、选择特定实例类型、利用 Spot 实例降低成本。选择标准:如果追求运维简单性选 Fargate;如果需要 GPU、大内存或极致成本优化选 EC2 启动类型。

部署策略与扩展

ECS 支持滚动更新、蓝绿部署和金丝雀部署三种策略。滚动更新逐步替换旧任务,配置最小健康百分比和最大百分比控制更新速度。蓝绿部署通过 CodeDeploy 实现,创建新任务集后切换流量,支持即时回滚。Service Auto Scaling 基于 CPU 使用率、内存使用率或自定义指标自动调整任务数量。目标跟踪策略最常用,设定目标值后 ECS 自动维持。

共有するXB!