目前我正在研究如何在 AWS 上编排我们的容器化微服务。 ECS 的 Fargate 选项看起来很有前途,无需管理 EC2 实例。
尽管在 Fargate 中启动一项“任务”所需的时间非常长,即使对于简单的单容器设置也是如此。对于我们的 Docker 应用程序映像,通常需要 60 秒到 90 秒。我听说这可能需要更多时间,例如几分钟左右。
所以问题是:虽然 Docker 容器通常可能会在几秒钟内启动,但在 Fargate 的情况下,造成如此开销的原因到底是什么?
附注搜索相关问题会返回这样的选项:
但是,即使在没有部署负载均衡器的最简单的配置中,并且假设 Docker 映像未缓存在 ECS 中,在 Fargate 中使用单个 Docker 映像启动任务(约 60 秒)仍然比启动相同的任务至少慢约 2 倍裸 EC2 实例上的 Docker 映像(25 秒)
是的,需要更长的时间,但我们无法概括 Fargate 的启动时间。您可以通过调整一些设置来减少这个时间。
vCPU 直接影响启动时间,因此您必须记住,在裸 EC2 实例中,您可以使用完整的 vCPU,而在 Fargate 的情况下,您可能会分配其中的一部分。
由于 AWS 为您管理服务器,因此它们只需执行一些底层操作。将虚拟机分配到您的 VPC 中以下载/提取 docker 映像、分配 IP 并运行容器可能会花费很多时间。
这是一个不错的博客,在下面文章的末尾,您可以找到好的实践。