部署选项
Cloud Run 提供了多种部署选项。所有部署选项都会生成容器映像,该映像会在 Cloud Run 的全托管式且可扩缩性极高的基础设施上作为 Cloud Run 服务或作业运行。
容器映像
任何遵循 Cloud Run 的容器运行时合同的容器映像都可以部署到 Cloud Run 服务或作业。
来源
为方便起见,Cloud Run 允许您通过一个命令构建和部署源代码。在部署源代码时,Cloud Build 会将代码转换为存储在 Artifact Registry 中的容器映像。您可以部署包含 Dockerfile
或使用受支持的语言运行时之一编写的源代码。
函数
您可以部署单一用途函数,以响应您的云基础设施和服务发出的事件。当所监控的事件发生时,您的函数就会被触发。
函数部署是一种特殊类型的源代码部署,您只需提供函数代码即可。您可以使用许多受支持的编程语言编写 Cloud Run functions 函数。
函数会作为 Cloud Run 服务进行部署。
通过 Git 进行持续源代码部署
Cloud Run 可帮助您配置通过 Git 进行持续部署。与源代码部署一样,您可以部署包含 Dockerfile
或使用支持的语言运行时之一编写的源代码。
您可以通过 Git 为 Cloud Run 服务实现持续部署,并可在 Cloud Build 中为 Cloud Run 作业手动进行配置。
Cloud Run 服务
服务是 Cloud Run 的主要资源之一。 每项服务都位于特定的 Google Cloud 区域。为了实现冗余和故障切换,服务会跨其所在区域中的多个可用区自动复制。给定 Google Cloud 项目可以在不同区域运行多项服务。
每项服务都会公开唯一端点,并根据需要处理的传入请求数量自动扩缩底层基础架构。 您可以从容器、代码库或源代码部署服务。
下图显示了服务的 Cloud Run 资源模型:
该图显示了一个包含三项 Cloud Run 服务(Service A
、Service B
和 Service C
)的 Google Cloud 项目,每项服务都有多个修订版本。
在该图中,Service A
正在接收多个请求,因此需要启动和运行多个实例,并且每个实例运行一个容器。请注意,Service B
当前尚未接收请求,因此尚未启动实例。Service C
在每个修订版本中的每个实例运行多个容器:请注意,只有入站流量容器会收到请求。每个包含多个容器的实例都作为独立单元进行扩缩。
Cloud Run 服务修订版本
向服务执行的每次部署都会创建一个修订版本。修订版本包含一个或多个容器映像以及环境变量、内存限制或请求并发值等配置。
修订版本是不可变的,也就是说,修订版本一旦创建便无法修改。例如,将容器映像部署到新的 Cloud Run 服务时,第一个修订版本即会创建。如果接着将另一个容器映像部署到此同一服务,则第二个修订版本即会创建。如果随后设置了环境变量,则第三个修订版本即会创建,依此类推。
系统会尽快将请求自动路由到运行状况良好的最新服务修订版本。
Cloud Run 服务实例
接收请求的每个服务修订版本都会根据处理所有这些请求所需的实例数量而自动扩缩。请注意,实例可以同时接收许多请求。利用请求并发设置,您可以设置可并行发送到每个修订版本实例的请求数上限。
Cloud Run 作业
每个作业都位于特定的 Google Cloud 区域中,并执行一个或多个容器以完成操作。一个作业由一个或多个独立的任务组成,这些任务在给定的作业执行中并行执行。
Cloud Run 作业执行
执行作业时,系统会创建一个作业执行,以启动所有作业任务。作业执行中的所有任务都必须成功完成,执行作业才视为成功。您可以设置任务的超时,并指定在任务失败的情况下的重试次数。如果任何任务的重试次数超出上限,则该任务会被标记为失败,并且作业会被标记为失败。 默认情况下,可以并行执行的任务数最多为 100,但如果您的任何支持性资源需要并行执行任务,您可以指定较低的上限。
Cloud Run 作业任务
每次执行作业时,系统都会并行执行多个任务。每项任务都运行一个实例,可能会重试。