use*_*521 2 amazon-ec2 amazon-web-services amazon-ecs
我有 10 个服务/任务定义,每个定义需要 512 个内存和 10 个 cpu(来自容器定义)。我有三个 t2.medium 实例,每个实例都有 4GB 内存。所以最多启动24个任务实例应该没问题。
然而,这三个实例最多只能运行 7 个服务 (3/2/2)。对于未在“事件”选项卡中运行的服务,存在以下错误:
服务完整性检查无法放置任务,因为没有容器实例满足其所有要求。最接近的匹配容器实例 3e2dbe6a-7a07-46f2-846b-ccccb9adaeee 遇到错误“RESOURCE:ENI”。
我尝试将 ec2 实例上的 AMI 更新为最新的 ecs-optimized,但没有帮助。一个 ec2/container 实例好像不能启动 3 个以上的任务?奇怪的是,它在 1 个月前运行良好(所有 10 个服务都在运行)并且这些错误在大约 20-26 天前出现。
任何的想法?
每个服务都使用 awsvpc 网络模式和 awslog 日志驱动程序。
以下是我列出的网络接口:
小智 6
消息“RESOURCE:ENI”表示分配弹性网络接口有问题。
根据文档,at2.medium应该能够分配 3 个 ENI。因此,假设 ECS 为每个容器分配一个不同的 ENI,这就是您不能为一个实例分配三个以上容器的原因。
但是您表示您实际上每个实例仅限于 2 个容器。这让我想知道您是否以某种方式超出了每个区域的 ENI 限制。除非 ENI 被分离且未被删除(如果您的 IAM 权限不正确,可能会发生这种情况),否则这不应该发生。我建议查看 AWS 控制台中的 ENI 页面,以确保您没有大量未附加的 ENI。
对于仍然存在此问题的用户,2019 年 6 月发布了一个修复程序以启用 ENI 中继。例如启用 ENI 中继后,一个 c5.xlarge 曾经被限制为 3 个任务,现在可以支持 20 个。
看看https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-eni.html