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

本頁說明如何使用預設的 Cloud Run 自動調度資源行為,為 Cloud Run 服務設定可使用的執行個體數量上限。如要手動調整服務規模,請參閱手動調整資源配置

在 Cloud Run 中指定執行個體數量上限,可限制服務因應傳入要求而進行的資源調度,但由於流量暴增等情況,這項上限設定可能會在短時間內遭到突破。

您可以透過這項設定控管費用,或限制與後端服務 (例如資料庫) 的連線數量。

如要瞭解服務可能適用的執行個體數量上限,請參閱「設定上限執行個體限制」。

如要進一步瞭解 Cloud Run 如何自動調度容器執行個體資源,請參閱「執行個體自動調度資源」。

在服務層級套用執行個體數量上限,而非修訂版本層級

您可以在服務層級或修訂版本層級設定執行個體上限。除非您有在修訂版本層級限制執行個體的需求,否則 Google 建議您使用服務層級的執行個體上限。

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

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

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

已加上標記的修訂版本會啟動,但只有在屬於流量分配時,才會計入服務層級的執行個體數量上限。

必要的角色

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

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

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

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

控制台

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

    前往 Cloud Run

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

  3. 如要設定現有服務,請按一下該服務以顯示詳細資料面板,然後按一下詳細資料面板右上方的「編輯服務層級資源調度設定」

  4. 在標示為「執行個體數量上限」的欄位中,使用 1 到服務上限之間的任何整數值,指定所需的容器執行個體數量上限。

  5. 按一下新服務的「建立」,或現有服務的「部署」

gcloud

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

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

取代

  • SERVICE:服務名稱。
  • MAX-VALUE:必要容器執行個體數量上限,可使用 1 到服務最大限制之間的任何整數值。

您也可以在部署期間,使用以下指令設定執行個體數量上限:

gcloud beta 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/launch-stage: BETA
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

    取代

    • SERVICE:Cloud Run 服務的名稱
    • MAX-INSTANCE:必要容器執行個體數量上限,可使用 1 到服務最大限制之間的任何整數值。
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

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

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

主控台

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

    前往 Cloud Run

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

  3. 在服務詳細資料面板右上角,查看「縮放」旁的目前設定。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中,找出「資源調度:自動 (下限:MIN_VALUE,上限:MAX_VALUE)」的值。

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

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

根據預設,Cloud Run 服務最多可擴充至 100 個執行個體。

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

控制台

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

    前往 Cloud Run

  2. 在服務清單中找出要更新的服務,然後按一下開啟該服務的詳細資料。

  3. 按一下「Edit and deploy new revision」(編輯及部署新的修訂版本),隨即會顯示修訂版本部署表單。

  4. 按一下「容器」分頁標籤。

  5. 找出「修訂版本縮放」部分。在標示為「Maximum number of instances」(執行個體數量上限) 的欄位中,指定容器執行個體數量上限。

  6. 按一下 [Deploy] (部署)

gcloud

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

gcloud beta 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
      annotations:
        run.googleapis.com/launch-stage: BETA
    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

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

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

主控台

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

    前往 Cloud Run

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

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

  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 個。