【发布时间】:2021-08-20 19:12:32
【问题描述】:
我正在 GCP 的实例组中的 VM 内部署 Java Spring Boot 容器。 所以每个虚拟机都会有一个 Spring Boot 容器。 我希望实现容器的滚动更新。
- 我可以使用 docker compose 删除最新的容器,拉取镜像(从 docker 注册表中),然后重新创建容器。
- 但容器位于 GCP 中单个实例组下的不同虚拟机中,如何跨虚拟机进行滚动更新?
- 我正在使用非托管实例组,其中每个 VM 都在其中运行 Spring Boot 应用程序的 Docker 容器。
【问题讨论】:
-
如果您使用的是托管实例组,则执行实例的滚动替换,而不是实例中的容器。编辑您的问题以指定实例组类型以及容器在每个实例(Docker 或容器操作系统)上的运行方式。细节决定了要遵循的程序。
-
由于您在非托管实例组上使用 Docker,因此您必须手动更新每个实例,编写自己的自动化软件或使用第三方产品。编写一个连接到每个实例并运行一组 shell 命令的 Python 应用程序会很简单。另一种选择是创建一个启动脚本,在启动时拉取最新的容器。然后您可以使用 CLI 重新启动每个实例。您将遇到的问题是从负载均衡器中删除实例、更新,然后将实例放回原处。
-
我会重新设计和使用托管实例组和计算优化操作系统。那么您可以使用托管滚动替换。
-
@Wojtek_B 根据您在问题中提供的信息提供了一个很好的答案。
标签: docker google-cloud-platform