部署選項和資源模型

部署容器映像檔

Cloud Run 提供多種部署選項。所有部署選項都會產生容器映像檔,並在 Cloud Run 全代管的高擴充性基礎架構上,以 Cloud Run 服務作業工作站集區的形式執行。

可部署的容器映像檔

只要容器映像檔符合 Cloud Run 的容器執行階段合約,您就能將其部署至 Cloud Run 服務工作工作站集區

從原始碼部署

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

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

函式

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

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

部署函式會建立 Cloud Run 服務

從 Git 持續部署原始碼

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

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

Cloud Run 服務

服務是 Cloud Run 的主要資源之一。 各項服務位於特定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 工作執行作業

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

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

Cloud Run 工作任務

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

Cloud Run worker 集區

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

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

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

您可以視需要手動調整工作站集區執行個體數量,為工作負載擴充足夠的執行個體。不過,如有需要,您可以自行建立自動配置器。舉例來說,Kafka 自動調度器可處理來自 Kafka 訊息佇列的工作負載調度。