是否可以在Google Cloud Run中将多个容器作为一项服务部署或使用?

时间:2020-10-13 07:10:14

标签: deployment containers google-cloud-run

我正在按照官方说明测试Google Cloud Run:

https://cloud.google.com/run/docs/quickstarts/build-and-deploy

我的问题是:

是否可以在Google Cloud Run中将多个容器作为一项服务部署或使用?例如:DB服务器容器,Web服务器容器等。

我是新来使用此服务的人。如果您能在此问题上为我提供帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

简短回答您不能在同一服务上部署多个容器(就像在K8S上使用Pod一样)。

但是,您可以run several binaries in parallel on the same container->本文是由从事Cloud Run的Googler写的。

此外,请记住

  • Cloud Run是无服务器产品。它可以根据需要上下缩放(至0)(但尤其要根据流量)。如果启动时间很长,并且创建了服务的新实例,那么查询将需要花费一些时间(并且您的使用将等待)
  • 使用即付即用,我的意思是,仅在处理HTTP请求时才向您收费。在处理周期之外,分配给实例的CPU接近于0。
    • 这意味着Cloud Run服务于处理HTTP请求的容器。您不能在后台通过任何HTTP请求运行批处理。
  • Cloud Run是无状态的。您有一个临时的并且在内存中的可写目录(/tmp),但是当实例关闭时,所有数据都会关闭。您无法运行存储数据的数据库服务器容器。您可以与外部服务(Cloud SQL,Cloud Storage等)进行交互,但只能在本地存储临时文件

答案 1 :(得分:1)

要直接回答您的问题,我认为不可能部署具有两个不同容器的服务:数据库服务器容器和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。