部署選項和資源模型

本指南說明 Cloud Run 如何處理部署作業,並分為三個部分:

  • 部署類型:您提供給 Cloud Run 的內容,例如原始碼或容器映像檔。
  • Cloud Run 資源:部署作業在 Cloud Run 中執行的內容 (服務、工作、工作站集區或執行個體)。
  • 部署方法如何執行部署作業,例如使用 Google Cloud 控制台、gcloud CLI、YAML 或 Terraform。

部署類型

Cloud Run 提供多種部署選項。部署完成後,所有部署作業、執行作業或建立作業都會在 Cloud Run 全代管的高擴充性基礎架構上,以沙箱容器執行個體的形式執行。下表列出各資源類型支援的部署選項:

部署作業方式 服務 工作 worker 集區 執行個體
部署容器映像檔 支援 支援 支援 支援
從原始碼部署 支援 支援 支援
部署函式1 支援
從 Git 持續部署 支援

1 函式是原始碼部署的特殊版本,適用於單一用途的事件導向程式碼。

部署容器映像檔

您可以將符合 Cloud Run 容器執行階段合約的任何容器映像檔,部署至 Cloud Run服務作業工作者集區執行個體

從原始碼部署

為方便起見,Cloud Run 可讓您透過單一指令建構及部署原始碼。詳情請參閱「透過原始碼部署服務」、「透過原始碼執行工作」和「透過原始碼部署 worker 集區」。

從原始碼部署時,Cloud Build 會將程式碼轉換為容器映像檔,並儲存在 Artifact Registry。您可以部署包含 Dockerfile 的原始碼,也可以使用支援的語言執行階段

函式

您可以部署單一用途函式,回應雲端基礎架構和服務產生的事件。監控的事件發生時,Cloud Run 會觸發函式。

函式部署作業是特殊類型的原始碼部署作業,您只需要提供函式程式碼。您可以使用多種支援的程式設計語言編寫 Cloud Run 函式。

部署函式會建立 Cloud Run 服務

從 Git 持續部署原始碼

Cloud Run 可協助您從 Git 設定持續部署。與來源部署作業類似,您可以部署包含 Dockerfile 的原始碼,或以支援的語言執行階段撰寫的原始碼。

從 Git 持續部署適用於 Cloud Run 服務。您可以在 Cloud Run 的 Cloud Build 工作中手動設定這些項目。

Cloud Run 資源

以下各節將詳細說明 Cloud Run 資源。

比較 Cloud Run 資源

功能 服務 工作 工作站集區 執行個體
主要應用實例 要求導向 (網站、API、微服務) 以工作為導向 (指令碼、資料處理、遷移) 事件/提取驅動 (Kafka/PubSub 消費者) 受管理單例項 (代理式工作負載、特定運算需求)
觸發條件 HTTP/gRPC 要求、Eventarc 執行模式 - 標準 (立即)、延遲。

觸發條件 - 手動執行、使用排程器、使用工作流程
一律開啟,或使用提取式背景工作自動調度資源
擴大運用 自動/手動:調度至零或根據要求調度 自動:調度至 N 個獨立工作,這些工作會依序或平行執行。 自動/手動:使用手動調度或內建自動調度功能,根據 CPU 使用率或 Pub/Sub 訊息待處理量,設定固定數量的執行個體 (使用外部自動調度器,以 KEDA 為基礎的自動調度) 無:不自動調度資源,可個別管理
生命週期 暫時性,閒置時會縮減資源 放送最多 7 天 (短期) 可選擇持續執行的背景程序,或自動調度資源的臨時執行個體。 長時間執行 (可執行數天/數週),並無限期自動重新啟動
解決 穩定服務網址 (負載平衡) 沒有公開端點。

觸發條件的內部網址 (例如排程器)
沒有公開端點。

以直連虛擬私有雲 IP 為基礎的私人連入存取權
每個執行個體都有專屬網址
傳入流量 公開/內部 HTTP/gRPC 透過直連虛擬私有雲連線,以 IP 為基礎的 L4 層輸入流量 每個執行個體的公開/內部網址
帳單 以要求為依據或以執行個體為依據 每次執行的時間長度 每個執行個體的持續時間 每個執行個體的持續時間

Cloud Run 服務

服務是 Cloud Run 的主要資源類型,代表由要求驅動的工作負載,會自動調度容器例項,以處理傳入的網路流量、HTTP 要求或事件。每個服務都位於特定Google Cloud 區域。為提供備援和容錯移轉功能,Cloud Run 會自動將服務複製到區域內的多個可用區。特定Google Cloud 專案可在不同地區執行多項服務。

每項服務都會公開一個不重複的端點。根據預設,Cloud Run 會自動調整資源配置,以便處理傳入要求。如有需要,您可以將縮放行為變更為手動縮放。您可以從容器、存放區或原始碼部署服務。

下圖顯示服務的 Cloud Run 資源模型:

Cloud Run 服務和修訂版本

此圖顯示一個 Google Cloud 專案,其中包含三項 Cloud Run 服務:Service A、Service B 和 Service C,都各有幾個修訂版本:

  • Service A 收到多個要求,因此 Cloud Run 已啟動多個執行個體來處理負載。每個執行個體只會執行一個容器 (應用程式的容器)。
  • 服務 B 沒有任何要求,因此處於閒置狀態,Cloud Run 也未執行任何執行個體。
  • 服務 C 有要求,且已建立多個執行個體來處理負載,藉此調整規模。在本例中,每個執行個體都會執行一組多個容器。在每個集合中,只有 Ingress 容器會收到要求,但其他容器會協助完成要求。

Cloud Run 服務修訂版本

每次部署服務都會建立一個修訂版本。修訂版本由一或多個容器映像檔和設定組成,例如環境變數、記憶體上限或要求並行值。

修訂版本建立後就無法修改。舉例來說,當您將容器映像檔部署到新服務時,Cloud Run 會建立第一個修訂版本。如果您將不同的容器映像檔部署到同一個服務,Cloud Run 就會建立第二個修訂版本。如果您之後設定環境變數,Cloud Run 就會建立第三個修訂版本。一段時間後,Cloud Run 最終會移除未使用的修訂版本。

Cloud Run 會自動盡快將要求轉送到最新且健康狀態良好的服務修訂版本。

Cloud Run 服務執行個體

Cloud Run 會自動調整接收要求的每個服務修訂版本,以符合處理所有要求所需的執行個體數量。請注意,執行個體可同時接收多個要求。您可以使用要求並行設定,設定可同時傳送至修訂版本每個執行個體的要求數目上限。

Cloud Run 工作

每個工作都位於特定 Google Cloud區域,且由一或多個工作任務組成,這些任務會執行一或多個容器,直到完成為止。工作工作是獨立的,可以在指定的工作執行中平行執行。

Cloud Run 工作執行作業

執行工作時,Cloud Run 會建立工作執行作業,並啟動所有工作任務。工作執行中的所有任務都必須順利完成,工作執行才會成功。您可以為工作設定 timeouts,並在工作失敗時指定 retries 次數。

如果任何工作超過重試次數上限,Cloud Run 會將該工作標示為失敗,並將工作標示為失敗。根據預設,工作會並行執行,最多可達 100 個,但如果任何支援資源 (例如資料庫) 有此需求,您可以指定較低的上限。

Cloud Run 工作任務

每次執行工作時,都會平行執行多項工作,每項工作都會執行一個例項。Cloud Run 會根據工作的 maxRetries 設定,自動嘗試再次執行任何失敗的工作。

Cloud Run worker 集區

工作站集區是專為非要求工作負載 (例如提取佇列) 設計的 Cloud Run 資源。請注意,工作站集區不支援下列功能:

  • 沒有端點/網址
  • 部署的容器不必在通訊埠監聽要求
  • 不會自動調整資源配置

與 Cloud Run 服務類似,部署或更新 worker 集區時,系統會建立新的修訂版本。

您可以視需要手動調整工作站集區執行個體,以處理工作負載。您也可以使用外部指標自動調度工作站集區資源,處理由 Pub/Sub 訂閱項目、Prometheus 查詢或 Kafka 佇列等來源驅動的工作負載調度作業。

連線至虛擬私有雲 (VPC) 網路後,每個工作站集區執行個體都會取得 VPC 網路上的 IP 位址,並能與這個 VPC 傳送及接收流量。

Cloud Run 執行個體

Cloud Run 執行個體代表獨立的單例項執行階段環境。與服務不同 (服務會自動或手動調度容器執行個體來處理流量),Cloud Run 執行個體是頂層資源,具有自己的直接網址可定址性和生命週期作業。

每個 Cloud Run 執行個體都包含下列功能:

  • 專屬網址端點:預設會指派穩定的連入網址。您可以停用預設網址,僅允許來自執行個體其他輸入路徑的流量。
  • 重新啟動政策:支援重新啟動條件 (alwayson-failurenever),可在容器程序當機時自動復原。
  • 共用 CPU 分配:在共用 CPU 模型上執行,CPU 會根據爆量預算完全分配,並在該預算外節流至 6.25% 的基準資源限制。