我们有一个运行容器(使用 ECS)的 AutoScaling 组。当我们在 ASG 中添加或替换 EC2 实例时,它们上没有我们想要的 docker 映像。因此,我们使用 cloud-init 运行一些docker pull
命令来在它们启动时获取图像。
但是,ASG 认为新实例已准备好,并终止旧实例。但实际上,在所有 docker 镜像都被拉取之前,这个新实例还没有准备好。
例如,假设我的 ASG 的期望计数是 5,我必须使用 cloud-init 拉出 5 个容器。现在,我想替换我的 ASG 中的所有 EC2 实例。
随着新实例开始启动,ASG 将终止旧实例。但是由于docker pull
延迟,在部署过程中会有一段时间,实际有效实例会少于 3 或 2 个。
仅当 cloud-init 完成时,如何“将实例标记为就绪” ?
注意:我认为 Cloudformation 可以使用 CFN-Bootstrap 弥合这种沟通鸿沟。但我没有使用 Cloudformation。