【问题标题】:Zero downtime Google Compute Engine (GCE) deployment零停机 Google Compute Engine (GCE) 部署
【发布时间】:2021-07-08 07:26:51
【问题描述】:

我正在尝试在deploy.yaml 中部署这个 docker GCE 项目,但是每次我更新我的 git 存储库时,服务器都会由于 1. 被删除的原始实例和 2. 新实例尚未完成启动(或至少 Web 应用尚未完成启动)。

我应该使用什么命令或者我应该如何更改它,以便我有一个金丝雀部署,一旦新实例启动就会销毁旧实例(我一次只有一个实例运行)?我没有对实例组进行健康检查,只有负载均衡器。

- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute', 'instance-groups', 'managed', 'rolling-action', 'replace', 'a-group', '--max-surge', '1']

感谢您的帮助!

【问题讨论】:

  • 实例组大小是多少?尝试设置 --max-unavailable=0 或在替换操作之前将实例组的大小调整为 1。
  • 谢谢@JohnHanley! max-unavailable 参数有效(在实例组上启用了运行状况检查)!出于好奇,--max-unavailable=0 参数是您推荐用于多个实例的吗?或者你会推荐调整大小?
  • 升级(替换)实例组时需要权衡。滚动更新意味着您的应用程序有新旧版本正在运行。加上可用性问题(处理流量的实例数量)。最后,还有替换所有实例的总时间。在您的情况下,--max-unavailable=0 可能满足您的目标,因为它可以防止没有可用实例的问题。

标签: deployment google-compute-engine gcloud


【解决方案1】:

就像 John 所说的 - 您可以设置 max-unavailablemax-surge 变量以在更新期间更改部署的行为。

【讨论】:

    猜你喜欢
    • 2014-12-08
    • 2020-01-15
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多