設定服務的執行個體數量上限

本頁介紹如何使用預設的 Cloud Run 自動擴充容 行為來設定 Cloud Run 服務可使用的最大實例數。若要手動擴充您的服務,請參閱手動擴充

在 Cloud Run 中指定最大實例數可以限制服務回應傳入請求而進行的擴展,儘管由於 流量高峰 等情況,此最大設定可能會在短時間內被超過。

您可以使用此設定來控製成本或限制與後端服務(例如資料庫)的連線數。

有關可能適用於您的服務的最大實例限制的信息,請參閱最大實例限制

有關 Cloud Run 如何自動擴展容器實例的更多信息,請參閱 實例自動擴展

在服務層級而非修訂層級應用最大實例數

您可以設定 service 層級或 revision 層級的最大實例數。 除非您有特別需求,要在修訂版本層級限制執行個體數量,否則 Google 建議您使用服務層級的執行個體數量上限,限制服務的執行個體數量。根據預設,Cloud Run 會為每個修訂版本設定 100 個執行個體。若要讓您的服務能夠擴展到更多實例,請修改此值。

套用執行個體數量上限時,設定會依下列方式生效:

  • 服務層級:立即
  • 修訂等級:部署修訂版本時

已加上標記的修訂版本和服務層級的執行個體數量上限

已標記的修訂 已啟動,但只有當它們是流量分割的一部分時,才計入服務等級最大實例數。

必要的角色

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

如果您要從原始碼部署服務函式,則必須在專案和 Cloud Build 服務帳戶中獲得額外角色。

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

費用注意事項

最大實例數設定可讓您設定成本安全限額來控製成本。設定較高的上限可優先確保可用性,但如果流量突然暴增或設定有誤,可能會產生意料之外的費用。為控製成本,請在首次部署服務時在服務等級配置此設定。建議您先將執行個體數量上限設為 3,以免預算超出預期。

詳情請參閱 Cloud Run 定價,或使用定價計算機估算費用。如需其他費用控管工具,請參閱資源分配配額帳單預算和快訊

設定服務層級的執行個體數量上限

您在建立新服務部署新修訂版本時,可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform 變更執行個體數量上限設定。

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:

    前往 Cloud Run

  2. 如果您要設定新服務,請按一下 部署容器 以顯示 建立服務 表單。找到「服務資源調度」表單。

  3. 如要設定現有服務,請按一下該服務,顯示詳細資料面板,然後按一下「Scaling」(調整規模) 分頁標籤。

  4. 在「服務資源調度」下方,找到標示為「執行個體數量上限」的欄位,然後使用 1 到服務上限之間的任何整數值,指定所需的容器執行個體數量上限。如要移除服務層級限制,請刪除您設定的值。這會將設定還原為預設值。

  5. 按一下「建立」即可建立新服務。點選「查看差異並重新部署」,然後點選現有服務的「部署變更」

gcloud

您可以使用以下指令,更新特定服務的執行個體數量上限

gcloud run services update SERVICE --max MAX-VALUE

更改下列內容:

  • SERVICE:服務名稱。
  • MAX-VALUE:容器執行個體數量上限 (必要),可使用 1 到服務上限之間的任何整數值。如要移除服務層級限制,請刪除您設定的值。 這會將設定還原為預設值。

您也可以使用下列指令在 deployment 期間設定最大實例數:

gcloud run deploy --image IMAGE_URL --max MAX-VALUE

更改下列內容:

  • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • MAX-VALUE:必要容器執行個體數量上限,使用 1上限之間的任何整數值。

YAML

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

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 run.googleapis.com/maxScale: 屬性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

    更改下列內容:

    • SERVICE:Cloud Run 服務的名稱
    • MAX-INSTANCE:容器執行個體數量上限 (必要),可使用 1 到服務上限之間的任何整數值。如要移除服務層級限制,請刪除您設定的值。這會將設定還原為預設值。
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

    如果存在 service.yaml 檔案,gcloud run services replace 指令預設會使用該檔案。

Terraform

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

在 Terraform 設定中,將下列內容新增至 google_cloud_run_v2_service 資源:
resource "google_cloud_run_v2_service" "default" {
name     = "SERVICE"
location = "REGION"

scaling {
  max_instance_count = MAX_INSTANCE
}

template {
  containers {
    image = "IMAGE_URL"
  }
}
}

更改下列內容:

  • SERVICE:Cloud Run 服務的名稱。
  • REGION: Google Cloud 區域,例如 europe-west1
  • MAX_INSTANCE:必要容器執行個體數量上限,使用 1上限之間的任何整數值。
  • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

查看服務層級的執行個體數量上限

如要查看 Cloud Run 服務目前的服務層級執行個體數量上限設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:

    前往 Cloud Run

  2. 按一下該服務,開啟「服務詳細資料」面板。

  3. 按一下「縮放」分頁標籤,即可查看目前的設定。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中,找出「Scaling: Auto (Min: MIN_VALUE, Max: MAX_VALUE的值。

設定修訂版本層級的執行個體數量上限

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

根據預設,Cloud Run 修訂版本最多可擴充至 100 個執行個體。

只有先前已設定這項功能的服務,才能使用修訂版本層級的資源調度。

控制台

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

    前往 Cloud Run

  2. 從 Cloud Run 導覽選單中選取「服務」,然後點選「部署容器」,設定新服務。如要設定現有服務,請按一下該服務。

  3. 如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、網路、安全性」展開服務設定頁面。

  4. 如要設定現有服務,請按一下「Scaling」(調整規模) 分頁標籤。

  5. 在「修訂版本資源調度」專區的「執行個體數量上限」欄位中,指定容器執行個體數量上限。

  6. 按一下「建立」即可建立新服務。點選「查看差異並重新部署」,然後點選現有服務的「部署變更」

gcloud

你可以更新最大實例數使用以下命令取得指定服務:

gcloud run services update SERVICE --max-instances MAX-VALUE

更改下列內容:

  • SERVICE:服務名稱。
  • MAX-VALUE: 所需的最大容器實例數,使用從 1最大限制 的任何整數值。

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 autoscaling.knative.dev/maxScale: 屬性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX-INSTANCE'
          name: REVISION

    更改下列內容:

    • SERVICE:Cloud Run 服務的名稱
    • MAX-INSTANCE:必要容器執行個體數量上限,使用 1上限之間的任何整數值。
    • REVISION:新的修訂版本名稱或刪除名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
      • 開頭為 SERVICE-
      • 只能包含小寫字母、數字和 -
      • 結尾不是 -
      • 不超過 63 個半形字元
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

    如果存在 service.yaml 檔案,gcloud run services replace 指令預設會使用該檔案。

查看修訂版本層級的執行個體數量上限設定

只有先前已設定這項功能的服務,才能使用修訂版本層級的資源調度。

若要查看 Cloud Run 服務的目前版本層級最大執行個體數設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:

    前往 Cloud Run

  2. 點擊該服務以開啟其 服務詳情 面板。

  3. 按一下「Scaling」(縮放) 分頁標籤。

  4. 修訂版本資源調度 下,查看 最大執行個體數

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中找出「最多執行個體數」的值。

同時使用服務層級和修訂版本層級的執行個體數量下限或上限

下表顯示了將服務等級最大實例數與修訂等級最小或最大實例數結合使用時的行為:

服務層級設定 修訂版本層級設定 行為
已設定服務層級的執行個體數量上限 已設定修訂版本層級的執行個體數量上限 有效執行個體數量上限是修訂版本層級執行個體數量上限和服務層級執行個體數量上限中較小的值。
已設定服務層級的執行個體數量上限 已設定修訂版本層級的執行個體數量下限 如果服務層級的執行個體數量上限低於修訂版本層級的執行個體數量下限,修訂版本會啟動執行個體,直到達到服務層級的執行個體數量上限為止,不會達到設定的修訂版本層級執行個體數量下限。

使用服務等級最大實例數和流量拆分

如果您使用流量分配,系統會根據流量分配比例,將服務層級的執行個體上限分配給各個修訂版本。舉例來說,如果服務層級的執行個體上限為 100,50/50 的流量分配會將 50 個服務層級的執行個體上限分配給每個修訂版本。下表展示了一個設定範例:

範例設定 產生的行為
設定服務層級的執行個體數量上限 (沒有修訂版本層級設定的情況):100
  • 修訂版本 A 的流量分配:10%
  • 修訂版本 B 的流量分配比例:10%
  • 修訂版本 C 的流量分配:80%
服務等級最大執行個體數的一部分會分配給每個修訂版本。每個修訂版本的有效執行個體上限會根據流量分配固定。版本 A 的最大實例數為 10,版本 B 的最大實例數為 10,版本 C 的最大實例數為 80。