【问题标题】:How to get Cloud Run to handle multiple simultaneous deployments?如何让 Cloud Run 处理多个同时部署?
【发布时间】:2020-05-22 09:22:38
【问题描述】:

我有一个包含 4 个组件的项目,每个组件都在 Google Cloud Run 上设置了托管,用于测试和生产的单独部署。我还使用 Google Cloud Build 来处理组件的构建和部署。

由于缺乏来自源系统的良好 webhook 事件,我目前不得不在每次有新更改时触发项目中所有组件的重建。在项目中,这意味着要构建和部署 8 个不同的映像,因为测试和生产也使用不同的构建时设置。

我已设法优化 Cloud Build 以很好地处理 8 个并发构建,但它们几乎在同一时间完成,然后所有 8 个都被推送到 Cloud Run。 Cloud Run 通常似乎根本不喜欢这样,并开始向我抛出一些我无法解决的错误。

首先,更严重的是,通常 8 次部署中的大约 4-6 次按预期完成,其余的要么被严重延迟,要么只是失败,通常是前几次顺利通过,然后是一些重要的部署延迟,最后的1-2只是失败了。这似乎是由于该区域中的某些“对帐请求配额”已用完(在本例中为 europe-north1),因为这是我在 Cloud Run 服务顶部看到的错误 -view:

另外而且最烦人的是,Cloud Run 仪表板本身似乎无法处理部署 8 个服务,因为只是坐在仪表板视图上列出服务经常会引发另一个与某些读取配额相关的错误:

我尝试通过他们推荐的“发送反馈”按钮与 Google 联系,但在大约 1 周+ 内没有收到任何回复(谁知道我什么时候发送的,因为他们似乎没有确认收到)。

我可以尝试改善这种情况的一个选择是在不同区域部署“测试”和“生产”变体,但这并不是最佳的,而且似乎这是一些关于限制的简单配置.我还有其他选择吗?还是我应该尝试在这些上设置一些同步,而不是同时触发所有部署?

在这种情况下,优化一次构建和部署所有组件的需求并不是一个真正的选择,因为它们也有一些共享代码,当这些代码发生变化时,仍然需要支持这一点。

【问题讨论】:

  • 如果我理解得很好,您的主要问题是您不能同时部署多个服务,对吧?这种需求来自共享资源,当你改变它时,你必须重新部署所有,对吗?使用 Cloud Build 部署 Cloud Run 时是否使用特殊参数?
  • @guillaumeblaquiere 主要问题是同时部署多个服务会导致 Cloud Run 出现错误。没有使用特殊的参数,只是使用他们的确切例子。 gcloud run deploy <service> --image <gcrRepository>:<tag> --region europe-north1 --platform managed --allow-unauthenticated

标签: google-cloud-run


【解决方案1】:

这是 Cloud Run 的一个问题。开发人员应该能够并行部署许多服务。

该错误应在几天或几周内修复。

[update] Bug 现在应该已经修复了。

如果要并行部署,请确保使用 --async 标志:gcloud run deploy $SERVICE --image --async

【讨论】:

  • 也许“几个星期”是一个相对术语。另一种解决问题的方法是将您的部署分发到多个区域,但这并不总是一种选择。
猜你喜欢
  • 2021-12-05
  • 2023-02-26
  • 2022-10-24
  • 2021-02-02
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
相关资源
最近更新 更多