如何排查 Fargate 的 Amazon ECS 任务卡在“待处理”状态的问题?

上次更新时间: 2021 年 4 月 5 日

通过 AWS Fargate 运行的 Amazon Elastic Container Service (Amazon ECS) 任务卡在“待处理”状态。

解决方法

检查您的子网正在使用哪些通往互联网的路由

对于公有子网中的 Fargate 任务:

验证您的 Fargate 任务是否已分配公有 IP 地址和通往互联网网关的默认路由 (0.0.0.0/0)。为此,请于启动任务或新建服务时选中启用自动分配的公有 IPv4 地址复选框。有关更多信息,请参阅修改子网的公有 IPv4 寻址属性

注意: 您不能为现有任务或服务选中启用自动分配公有 IPv4 地址复选框。

对于私有子网中的 Fargate 任务:

验证您的 Fargate 任务是否有通往 NAT 网关、AWS PrivateLink 或其他互联网连接来源的默认路由 (0.0.0.0/0)。

如果您使用的是 NAT 网关,请将 NAT 网关放在公有子网中。有关详细信息,请参阅使用互联网网关和 NAT 网关的架构

如果您使用的是 AWS PrivateLink,请确认您的 Fargate 架构允许为您的 Amazon Virtual Private Cloud (Amazon VPC) 终端节点使用安全组。

检查您的网络访问控制列表和安全组设置

验证您的网络访问控制列表 (网络 ACL) 和安全组是否不会阻止从子网对端口 443 的出站访问。有关更多信息,请参阅您的 VPC 的安全组

注意: Fargate 任务必须对端口 443 具有出站访问权限,才能启用传出流量并到达 Amazon ECS 终端节点。

检查您的 VPC 终端节点

如果您使用的是 AWS PrivateLink,请确认您拥有所需的终端节点。

Fargate 平台版本 1.3.0 或更早版本所需的终端节点:

  • com.amazonaws.region.ecr.dkr
  • S3 网关终端节点

Fargate 平台版本 1.4.0 或更高版本所需的终端节点:

  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.ecr.api
  • S3 网关终端节点

有关更多信息,请参阅 Amazon ECR VPC 终端节点的注意事项

注意: 如果您的任务定义使用 AWS Secrets Manager、SSM 参数或 Amazon CloudWatch Logs,则可能需要定义终端节点。如需了解更多信息,请参阅使用带有 VPC 终端节点的 Secrets Manager使用带有接口 VPC 终端节点的 CloudWatch Logs

使用 PrivateLink 的过程中,请确认 VPC 终端节点的安全组允许 Fargate 基础设施使用这些安全组。

检查您的 IAM 角色和权限

任务执行角色向 Amazon ECS 容器和 Fargate 代理授予代表您进行 AWS API 调用的权限。在以下情况下,Fargate 需要此角色:

  • 从 Amazon Elastic Container Registry (Amazon ECR) 中提取容器映像
  • 使用 awslogs 日志驱动程序
  • 使用私有注册表身份验证
  • 使用 Secrets Manager 密钥或 AWS Systems Manager Parameter Store 参数引用敏感数据

如果您的使用案例涉及前述任何方案,请确认您具有在任务执行角色中定义的正确权限。有关所需权限的完整列表,请参阅 Amazon ECS 任务执行 IAM 角色

检查提取图像时是否存在问题

如果收到关于 Fargate 任务的 "cannotpullcontainer" 的错误讯息,请在如何为 Fargate 上的 Amazon ECS 解决 "cannotpullcontainererror" 错误?中完成相关步骤

注意: 要对问题进行故障排除,您还可以使用 Amazon ECS Exec 从任务或服务的容器实例中检索日志。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?