服務的帳單設定

本頁面說明帳單設定,並假設使用預設的 Cloud Run 自動調整規模行為。如果您使用手動調度,請參閱「使用手動調度時的帳單行為」一文,瞭解其他注意事項。

Cloud Run 服務有兩種計費設定:

  • 以要求為依據的計費模式 (預設):只有在 Cloud Run 執行個體處理要求、啟動及關閉時,系統才會收費。詳情請參閱執行個體生命週期。這項設定先前稱為「只在要求處理期間分配 CPU」

  • 以執行個體為依據的計費模式:系統會針對執行個體的整個生命週期收取費用,即使沒有傳入要求也一樣。執行短期背景工作和其他非同步處理工作時,以執行個體為準的計費方式可能很實用。這項設定先前稱為「隨時分配 CPU」

如果選擇以要求為依據的計費模式,只有在執行個體處理要求時,系統才會按要求收費。如果選擇以執行個體為依據的計費模式,系統會向您收取執行個體完整生命週期的費用。詳情請參閱 Cloud Run 定價表

建議引擎會自動查看 Cloud Run 服務在過去一個月內收到的流量,如果改用以例項為準的計費方式較為划算,就會建議您從以請求為準的計費方式改用前者。

CPU 分配模式的影響

選取帳單設定會影響 CPU 的分配方式。

  • 如果採用以要求為依據的計費模式,系統只會在處理要求期間分配 CPU。
  • 如果採用以執行個體為依據的計費模式,系統會在整個容器執行個體生命週期分配 CPU。

如何選擇合適的帳單設定

為使用案例選擇合適的帳單設定時,請考量多項因素,例如流量模式、背景執行和費用,以下各節將分別說明。

流量模式注意事項

  • 如果傳入流量不穩定、突然暴增或尖峰流量明顯,建議採用以要求為依據的計費模式
  • 如果連入流量穩定,且變化緩慢,建議採用以執行個體為準的計費方式

背景執行注意事項

選取以執行個體為準的計費方式,即使在處理要求以外的時間,系統也會分配 CPU,讓您在傳回回應後執行短期背景工作和其他非同步處理作業。例如:

  • 使用 OpenTelemetry 等監控代理程式,這類代理程式可能會假設自己能在背景執行。
  • 使用 Go 的 Goroutine、Node.js 非同步、Java 執行緒和 Kotlin 協同程式。
  • 使用依賴內建排程/背景功能的應用程式架構。

閒置執行個體 (包括使用最少量執行個體保持暖機狀態的執行個體) 隨時可以關閉。如果需要在容器終止前完成待處理工作,可以捕捉 SIGTERM,讓執行個體有 10 秒的緩衝時間,之後才會停止。

建議使用 Cloud Tasks 執行非同步工作。Cloud Tasks 會自動重試失敗的任務,並支援最長 30 分鐘的執行時間。

費用注意事項

如果您採用以要求為依據的計費方式,在下列情況下,以執行個體為依據的計費方式可能更划算:

  • 您的 Cloud Run 服務目前正在處理大量要求,且速率相當穩定。
  • 查看執行個體計數指標時,您不會看到大量「閒置」執行個體。

您可以使用 Pricing Calculator 估算費用差異。

自動調度資源注意事項

Cloud Run 預設會自動調整容器執行個體數量。

如果服務設為以要求為準的計費方式,Cloud Run 只會在處理要求期間,根據 CPU 使用率自動調度執行個體數量。

如果服務設為以執行個體為依據的計費模式,Cloud Run 會根據容器執行個體整個生命週期的 CPU 使用率,自動調度執行個體數量,但從零開始調度資源或調度至零時除外,因為這時系統只會使用要求。

如果您使用手動調度資源,而非 Cloud Run 自動調度資源功能,請參閱手動調度資源,瞭解其他注意事項。

以執行個體為依據的計費注意事項

即使計費設定為以執行個體為依據的計費模式,Cloud Run 自動調度資源功能仍會生效,如果執行個體不需要處理傳入流量或要求以外的 CPU 使用率,系統可能會終止執行個體。處理要求後,執行個體閒置時間絕不會超過 15 分鐘,除非使用最少量執行個體保持運作狀態。

將以執行個體為依據的計費方式與最少執行個體數結合,可讓一定數量的執行個體持續運行,並完整存取 CPU 資源,進而支援背景處理用途。使用這種模式時,即使服務在任何要求之外使用 CPU,Cloud Run 也會套用執行個體自動調整資源配置

如果您使用健康狀態檢查探測器,則必須為每個探測器採用以執行個體為依據的計費模式。如需帳單詳細資料,請參閱容器健康狀態檢查探針

必要的角色

如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予下列 IAM 角色:

如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色Cloud Run IAM 權限。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱部署權限管理存取權

設定及更新帳單資訊

變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。

如果選取以執行個體為依據的計費方式,則必須指定至少 512 MiB 的記憶體

您可以在建立新服務部署新修訂版本時,使用 Google Cloud 控制台、gcloud CLI 或 YAML 檔案變更帳單設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

  3. 如要設定新服務,請填寫初始服務設定頁面。

  4. 在「帳單」下方選取帳單設定。選取執行個體的以要求為依據的計費模式,這樣系統只會在處理要求時收費。為執行個體選取以執行個體為依據的計費模式,系統就會針對執行個體的整個生命週期收費。

  5. 按一下 [Create] (建立) 或 [Deploy] (部署)

gcloud

你可以更新帳單設定。 如要為特定服務設定以執行個體為準的帳單:

gcloud run services update SERVICE --no-cpu-throttling 

SERVICE 改為您的服務名稱。

如要設定以要求為依據的計費方式,請按照下列步驟操作:

gcloud run services update SERVICE --cpu-throttling 

您也可以在部署期間設定帳單設定。 如要將帳單設定設為以執行個體為準的帳單,請按照下列步驟操作:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

如要將帳單設定改為以要求為準的帳單,請按照下列步驟操作:

gcloud run deploy --image IMAGE_URL --cpu-throttling

IMAGE_URL 替換為容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

YAML

  1. 如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 cpu 屬性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    取代

    • SERVICE 改為 Cloud Run 服務名稱
    • BOOLEAN,使用 true 設定以要求為依據的計費模式,或使用 false 設定以執行個體為依據的計費模式。
    • REVISION,並提供新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
      • 開頭為「SERVICE-
      • 只能包含小寫字母、數字和 -
      • 結尾不是 -
      • 不超過 63 個半形字元
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定中,將下列內容新增至 google_cloud_run_v2_service 資源:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

查看帳單設定

如要查看 Cloud Run 服務目前的帳單設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 按一下感興趣的服務,開啟「服務詳細資料」頁面。

  3. 按一下「Revisions」(修訂版本) 分頁標籤。

  4. 在右側的詳細資料面板中,「帳單設定」會列在「一般」分頁下方。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中找到「帳單」設定。