由于容量提供商为空,AWS ECS 任务无法预置

问题描述 投票:0回答:2

我正在尝试使用 EC2 启动类型在 AWS 中运行 ECS 任务。这个任务已经运行了将近一年,没有出现任何问题,但几周前它停止工作了。

当我创建新任务时,它会保持“配置”状态,直到失败。我收到的错误是“TaskFailedToStart:EMPTY CAPACITY PROVIDER”。我一直在寻找答案,但到目前为止我没有发现任何有用的答案。任何人都可以帮忙提供一些可能发生的事情的想法吗?

这是自动调用组配置: autoscalling config

amazon-web-services amazon-ecs infrastructure capacity-planning
2个回答
0
投票

我也遇到了同样的问题。就我而言,附加到相关子网的 ACL 规则限制太多,导致 EC2、ASG 和 ECS 无法相互通信。

请尝试 - 仅用于调试 - 为所有人打开入站和出站规则。请参阅 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#default-network-acl

如果它适用于广泛开放的 ACL 规则,那么您就知道根本原因并可以解决此问题。


0
投票

当您创建 ECS 集群时,AWS 会创建一个包含大量资源的 Cloudformation 堆栈:

  • 集群本身(AWS::ECS::Cluster)
  • 容量提供商 (AWS::ECS::CapacityProvider)
  • 集群到容量提供商关联 (AWS::ECS::ClusterCapacityProviderAssociations)
  • 自动缩放组
  • 启动模板 等等...然后当您删除/重新创建某些内容时它就会停止工作。

理想情况下删除 cloudformation 堆栈并自己创建一切:

  1. 创建启动模板
  2. 创建自动缩放组 (ASG) - 如果您在 EC2 而不是 Fargate 上运行
  3. 最终创建集群

您可以轻松切换 ASG 并在 ASG 内启动模板。不知道为什么AWS在某些情况下使用Cloudformation堆栈并且没有告知它。

© www.soinside.com 2019 - 2024. All rights reserved.