amazon-web-services - 尽管没有可用的现货实例,AWS ECS 任务仍在运行

标签 amazon-web-services amazon-ec2 amazon-ecs aws-fargate

在学习 AWS ECS 时,我创建了一个 Fargate 点集群,并定义了一个包含单个任务的服务。我可以看到,根据我在启动 Fargate 集群时提供的配置,自动创建了 EC2 实例的 Spot 请求。

现在我仍然可以访问该应用程序,即使 Spot 请求的历史记录 self 的实例激活后 1 秒起指定了 MaxSpotInstanceCountExceeded - 该错误在过去 6 小时内每隔几分钟就会重复出现一次。

我读到,如果终止通知发送到我当前正在使用的实例,Fargate Spot 将尝试启动替代的 Spot 实例,但我不明白我的应用程序怎么可能自 Spot 以来仍在运行请求处于错误状态。

  1. Fargate 是否使用与我想象的不同的策略来保持现货实例运行?我没有为我的集群提供任何额外的容量提供程序
  2. 除了第一个问题之外,使用 Fargare 现货启动类型时是否有任何可用性保证?
  3. 如何验证我的集群是否确实在使用竞价实例?我无法在 AWS 控制台中或使用 aws-cli 识别此信息。我能找到的唯一指标是 Spot 请求和我的 ECS 集群使用的公共(public)子网
  4. 为什么我会收到 MaxSpotInstanceCountExceeded 错误?我没有旋转任何其他竞价实例,因此我对 Fargate 耗尽竞价实例限制感到惊讶。或者这个问题可能有其他原因?
  5. 我可以修改我的 Fargate Spot 集群来扩展所需的 EC2 类型,从而最大程度地减少 Spot 实例不可用问题吗?

最佳答案

如果您可以分享更多有关您正在运行的命令或在何处看到此信息的数据,将会很有帮助,但只是为了澄清一些事情:

Does Fargate use a different strategy for keeping the spot instances running than I thought? I didn't provide any additional capacity providers to my cluster

Fargate 维护着运行 Fargate Spot 任务的 Spot 容量池。这些池由 Fargate 服务维护,您在账户中看不到这些池。当客户想要运行 Spot 任务时,将从池中分配一个实例来运行相关任务。

此实例的行为与任何其他 Spot 实例类似,EC2 Spot 可以随时回收,并在任务终止并将实例返回到 Spot 之前提供 2 分钟警告。当然,如果任务在 EC2 Spot 回收实例之前完成,则任务将照常运行直至完成。

In addition to the first question, are there any availability guarantees when using Fargare spot launch type?

不,以任何形式(EC2 或 Fargate)使用 Spot 时都没有可用性保证。 Spot 的重点在于,您可以访问原本未使用的计算容量如果有可用,并且可以随时回收计算容量,并发出 2 分钟警告。这就是 Spot 比常规按需使用便宜得多的原因。

Why am I getting the MaxSpotInstanceCountExceeded error? I didn't spin any other spot instances so I'm surprised that Fargate exhausted the spot instance limit. Or maybe there is a different cause to this issue?

您在哪里收到此错误。如上所述,Fargate 管理用于运行所有 Fargate 任务(按需任务和 Spot 任务)的计算容量,因此您运行的 Fargate Spot 任务数量不会影响您可以在 Fargate 外部运行的 EC2 Spot 实例数量。运行 Fargate Spot 任务时,您的账户中也不会看到任何 EC2 Spot 实例,因为相应的 Spot 实例位于 Fargate 服务账户中。

Can I modify my Fargate Spot cluster to extend the desirable EC2 types to minimize the spot-instance-unavailability issue?

不,您无法影响使用 Fargate 时使用的实例类型。

由于 Spot 容量不可用而导致 Fargate Spot 任务启动失败的情况非常罕见(查看服务指标),如果您可以向我发送相应的任务 ID 以及有关您看到此情况的区域的信息,我可以询问团队看看它。

关于amazon-web-services - 尽管没有可用的现货实例,AWS ECS 任务仍在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59912611/

相关文章:

amazon-web-services - Redshift COPY 错误 1206 无效时间戳

amazon-ec2 - 是否可以在没有停机的情况下复制一个AWS EC2实例?

ruby-on-rails - Rails Date.today 反射(reflect)了服务器部署日期

laravel - EC2 : Laravel migrations run as many times as the instances

amazon-web-services - 如何在 CloudFormation 容器定义中从 SecretManager 指定 secret

amazon-web-services - ECS 上的服务成本

ruby-on-rails - S3 预签名 URL : Invalid according to Policy: Policy Condition failed success_action_status

java - AWS Java 删除使用 CreateImage 创建的快照

git-submodules - Circleci:带有 AWS ECR orb 的私有(private) git 子模块

mysql - rake db :migrate - Rake aborted! 访问被拒绝