【发布时间】:2021-01-27 12:01:42
【问题描述】:
我正在按照官方说明测试 Google Cloud Run:
https://cloud.google.com/run/docs/quickstarts/build-and-deploy
是否可以在 Google Cloud Run 中部署或使用多个容器作为一项服务?例如:DB服务器容器、Web服务器容器等
【问题讨论】:
标签: deployment containers google-cloud-run
我正在按照官方说明测试 Google Cloud Run:
https://cloud.google.com/run/docs/quickstarts/build-and-deploy
是否可以在 Google Cloud Run 中部署或使用多个容器作为一项服务?例如:DB服务器容器、Web服务器容器等
【问题讨论】:
标签: deployment containers google-cloud-run
简答NO。您不能在同一个服务上部署多个容器(就像在 K8S 上使用 Pod 一样)。
不过,您可以run several binaries in parallel on the same container -> 本文由从事 Cloud Run 工作的 Google 员工撰写。
另外,请记住
/tmp),但是当实例关闭时,所有数据都会关闭。您不能运行存储数据的数据库服务器容器。您可以与外部服务(Cloud SQL、Cloud Storage 等)交互,但只能在本地存储临时文件【讨论】:
直接回答您的问题,我认为不可能部署具有两个不同容器的服务:DB 服务器容器和 Web 服务器容器。这不包括缩放(服务会自动缩放到一定数量的容器实例)。
但是,您可以部署一个包含多个进程的容器(一项服务),尽管它可能不被视为最佳实践,如 article 中所述。
Cloud Run 获取用户的容器并在 Google 基础架构上执行它,并根据用户指定的参数无缝处理该容器的实例化(缩放)。
要部署到 Cloud Run,您需要提供容器映像。正如documentation 指出的那样:
容器映像是一种打包格式,其中包括您的代码、其包、任何所需的二进制依赖项、要使用的操作系统以及运行您的服务所需的任何其他内容。
为了响应传入的请求,服务会自动扩展到一定数量的容器实例,每个容器实例都运行已部署的容器映像。 Services是Cloud Run的主要资源。
每个服务都有一个唯一且永久的 URL,当您向其部署新修订时,该 URL 不会随着时间而改变。有关容器运行时合约的更多详细信息,您可以参考documentation。
由于上述原因,Cloud Run 主要设计用于运行 Web 应用程序。如果您追求的微服务架构由不同的服务器组成,每个服务器在不同的容器中运行,您将需要部署多个服务。我了解您希望使用 Cloud Run 作为数据库服务器,但您可能对 Google's database solutions 感兴趣,例如 Cloud SQL、Datastore、BigTable 或 Spanner。
【讨论】: