AWS ECS Fargate部署rolloutState为IN_PROGRESS无停止任务如何排查
ECS Fargate新部署无任务启动排查方案
- 第一步:查看ECS服务自身的事件日志
执行如下命令获取服务事件记录:
aws ecs describe-services --cluster cluster-xxxxxxx --services service-svc-xxxxxxx --region us-east-1 --query 'services[0].events'
你查询到的failedTasks:7就是调度阶段的失败计数,这类早期失败不会生成实际任务实例,因此在任务列表、CloudTrail、Container Insights中都不会留下相关记录,对应的失败原因会直接记录在服务事件中,常见原因包括镜像拉取失败、任务执行角色权限不足、子网资源不足、Fargate规格不支持等,一般查看最近5-10条事件即可定位问题。
- 第二步:校验新任务定义的基础配置
- 核对镜像地址是否正确,确认ECR域名、仓库名、镜像标签没有拼写错误;如果使用跨账号ECR镜像,确认任务执行角色已配置跨账号拉取权限
- 确认任务定义中
executionRoleArn配置存在且包含基础权限,至少需要ECR镜像拉取、CloudWatch日志写入的相关权限 - 确认Fargate的CPU、内存组合符合官方支持规格,例如0.25vCPU对应的内存范围为0.5GB~2GB,超出合法范围的配置会直接导致调度失败
- 第三步:核对服务网络配置
- 确认关联的子网仍有可用IP,子网IP耗尽会导致Fargate无法分配网络资源,直接启动失败
- 若使用私有子网部署,确认已配置NAT网关或对应AWS服务的PrivateLink端点,无法访问ECR、CloudWatch等服务会导致部署在拉取镜像阶段直接终止
- 确认安全组出站规则允许443端口的访问请求,出站封禁会导致镜像拉取、日志上报失败
- 第四步:校验部署策略配置
确认服务的部署参数配置合法,例如最小健康百分比、最大百分比的组合需要预留出足够配额启动新任务,若最小健康百分比设为100%、最大百分比也设为100%,部署时没有多余配额启动新任务会导致部署卡住。 - 第五步:手动测试任务启动
直接使用新版本任务定义手动启动独立任务,选择和服务相同的集群、子网、安全组配置,启动后无论成功失败都会生成任务记录,可直接在任务详情页查看失败原因,定位效率更高。
内容的提问来源于stack exchange,提问作者Diogo Melo
相关产品推荐
相关产品推荐

