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