首页 > 解决方案 > GCP 实例组中 docker 容器的滚动更新

问题描述

我正在 GCP 的实例组中的 VM 内部署 Java Spring Boot 容器。所以每个虚拟机都会有一个 Spring Boot 容器。我希望实现容器的滚动更新。

标签: dockergoogle-cloud-platform

解决方案


这个主题有很多方法 - 正如John Hanley 指出的那样,您可以手动更新非托管实例组中的每个 VM,但更简单的方法是使用一些脚本来执行此操作。您甚至可以为此使用Ansible,但如果只有几个 VM,这完全是矫枉过正。

简单的方法(仅使用 GCP 提供的)在组内的所有 VM 上执行容器的滚动更新,最好使用托管实例组。它实际上会取代你的虚拟机,所以如果你在他们的磁盘上存储一些数据,最好使用Stateful MIG

设置一切的简单方法是:

  1. 创建一个实例并根据您的需要配置它。
  2. 停止 VM 并从其磁盘创建磁盘映像。
  3. 创建实例模板并选择自定义磁盘映像(您刚刚创建的)
  4. 创建有状态托管实例组

此时,您可以创建一个服务作为您的后端,并在需要时在其前面放置一些负载均衡器。您可以设置 MIG 的一些自动缩放和自动修复,以防负载过重或某些无响应的 VM 需要重新启动。

如果您想更新您的虚拟机(或它们运行的​​容器),请使用新配置重复步骤 1-3。或者,如果它很简单,您可以使用每次为您的组创建新 VM 时都会运行的启动脚本。当你有一个新组时,进入虚拟机组页面并选择你想要更新的组,在详细信息中点击顶部的“更新虚拟机”按钮。

在此处输入图像描述

在“新模板”下的新页面中,从下拉列表中选择您创建的新模板。 在此处输入图像描述

此时只需单击底部的“更新 VM”蓝色按钮并等待结果。几分钟后,您的虚拟机应该会更新并显示使用新的实例模板。

更新时,您将看到两个模板都在使用:

在此处输入图像描述

当你知道这个过程很容易时,它需要一些“点击”。

您总是可以走“硬路”并设置自己的自动化。

最后 -在开始时提取最新的 Docker 映像使用启动脚本)似乎也是一个非常好的主意,因为您可以在您的组中“重新启动/替换”虚拟机,并且在重新启动后所有虚拟机都将开始为新容器提供服务。


推荐阅读