繁体   English   中英

托管实例组中 Compute Engine 虚拟机的延迟顺序重启

[英]Delayed sequential restart of Compute Engine VMs in Managed Instance Groups

我有一个 Google Compute Engine VM 的托管实例组(基于在 Container-Optimized OS 上部署容器的模板)。 MIG 是区域性的(多区域)。

我可以发布一个更新的容器镜像( docker rundocker tagdocker push ),然后我想一个一个地重启MIG中的所有VM,这样他们就可以拥有更新的容器(不确定是否有更简单的/更好的替代方法来刷新 VM 附加容器)。 但我还想在每个 VM 的重启事件之间引入一个轻微的延迟(比如 60 秒),以便在重启期间只有一个或两个 VM 不可用。

以编程方式(通过gcloud CLI 或其 API)执行此操作有哪些方法?

我尝试滚动重启MIG,并设置了最长不可用时间和最短等待时间标志:

gcloud beta compute instance-groups managed rolling-action restart MIG_NAME \
    --project="..." --region="..." \
    --max-unavailable=1 --min-ready=60

...但它返回错误:

ERROR: (gcloud.beta.compute.instance-groups.managed.rolling-action.restart) Could not fetch resource:
 - Invalid value for field 'resource.updatePolicy.maxUnavailable.fixed': '1'. Fixed updatePolicy.maxUnavailable for regional managed instance group has to be either 0 or at least equal to the number of zones.

有没有一种方法可以在每个操作之间稍有延迟地执行一个一个的实例重启?

不幸的是,截至 2023 年 1 月,MIG 并未处理区域部署的这种用例。但是,您可以自己编排滚动更新(sudo 代码):

for (INSTANCE in instances)
  // Force restart the instance
  gcloud compute instance-groups managed update-instances MIG_NAME \
      --project="..." --region="..." \
      --instances=INSTANCE --minimal-action=RESTART \
      --most-disruptive-allowed-action=RESTART

  WAIT

  if (container on INSTANCE not working correctly)
      // Break and alert the operator

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM