本頁說明如何使用預設的 Cloud Run 自動調度資源行為,為 Cloud Run 服務設定可使用的執行個體數量上限。如要手動調整服務規模,請參閱「手動調整資源配置」。
在 Cloud Run 中指定執行個體數量上限,可限制服務因應傳入要求而調度資源的規模,但由於流量暴增等情況,這項上限設定可能會在短時間內遭到突破。
您可以透過這項設定控管費用,或限制與後端服務 (例如資料庫) 的連線數量。
如要瞭解服務可能適用的執行個體數量上限,請參閱「執行個體數量上限」。
如要進一步瞭解 Cloud Run 如何自動調度容器執行個體資源,請參閱「執行個體自動調度資源」一文。
在服務層級套用執行個體數量上限,而非修訂版本層級
您可以在服務層級或修訂版本層級設定執行個體上限。除非您有在修訂版本層級限制執行個體的特定需求,否則 Google 建議您使用服務層級的執行個體數量上限。
套用執行個體數量上限後,設定會依下列方式生效:
- 服務層級:立即
- 修訂版本層級:部署修訂版本時
已加上標記的修訂版本和服務層級的執行個體數量上限
已加上標記的修訂版本會啟動,但只有在屬於流量分配時,才會計入服務層級的執行個體數量上限。
必要的角色
如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予您下列 IAM 角色:
-
Cloud Run 開發人員 (
roles/run.developer) 在 Cloud Run 服務上 -
服務帳戶使用者 (
roles/iam.serviceAccountUser) 服務身分
如果您要從原始碼部署服務或函式,則必須在專案和 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 變更執行個體數量上限設定。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
如要設定新服務,請按一下「Deploy container」(部署容器),顯示「Create service」(建立服務) 表單。找到「服務資源調度」表單。
如要設定現有服務,請按一下該服務,顯示詳細資料面板,然後按一下詳細資料面板右上方的「編輯服務層級資源調度設定」圖示 。
在標示為「Maximum number of instances」(執行個體數量上限) 的欄位中,使用
1到服務上限之間的任何整數值,指定所需的容器執行個體數量上限。如要停用服務層級的執行個體數量上限,請清除「Maximum number of instances」(執行個體數量上限) 欄位中設定的所有值。按一下新服務的「建立」,或現有服務的「部署」。
gcloud
您可以使用以下指令,更新特定服務的執行個體數量上限:
gcloud run services update SERVICE --max MAX-VALUE
更改下列內容:
- SERVICE:服務名稱。
- MAX-VALUE:容器執行個體數量上限 (必要),可使用
1到服務上限之間的任何整數值。如要停用服務層級的執行個體數量上限,請將這個值設為0。
您也可以在部署期間,使用以下指令設定執行個體數量上限:
gcloud run deploy --image IMAGE_URL --max MAX-VALUE
更改下列內容:
YAML
變更任何設定都會建立新的修訂版本。除非您明確做出更新,改變這項設定,否則後續的修訂版本也會自動取得這個設定。
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
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到服務上限之間的任何整數值。如要停用服務層級的執行個體數量上限,請將這個值設為0。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
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"
}
}
}
更改下列內容:
查看服務層級的執行個體數量上限
如要查看 Cloud Run 服務目前的服務層級執行個體數量上限設定:
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下該服務,開啟「服務詳細資料」面板。
在服務詳細資料面板右上角,查看「縮放」旁的目前設定。
gcloud
使用下列指令:
gcloud run services describe SERVICE
在傳回的設定中,找出「資源調度:自動 (下限:MIN_VALUE,上限:MAX_VALUE)」的值。
設定修訂版本層級的執行個體數量上限
變更任何設定都會建立新的修訂版本。除非您明確做出更新,改變這項設定,否則後續的修訂版本也會自動取得這個設定。
根據預設,Cloud Run 修訂版本會設定為最多擴充至 100 個執行個體。
您在建立新服務或部署新修訂版本時,可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 檔案變更執行個體數量上限設定。
控制台
前往 Google Cloud 控制台的 Cloud Run:
在服務清單中找出要更新的服務,然後按一下開啟該服務的詳細資料。
按一下「編輯及部署新的修訂版本」,隨即會顯示修訂版本部署表單。
按一下「Container」分頁標籤。
找出「修訂版本縮放」部分。在標示為「Maximum number of instances」(執行個體數量上限) 的欄位中,指定容器執行個體數量上限。
點選「Deploy」(部署)。
gcloud
您可以使用以下指令,更新特定服務的執行個體數量上限:
gcloud run services update SERVICE --max-instances MAX-VALUE
更改下列內容:
- SERVICE:服務名稱。
- MAX-VALUE:必要容器執行個體數量上限,可使用
1到上限之間的任何整數值。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
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 個字元
- 開頭為「
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
查看修訂版本層級的執行個體數量上限設定
如要查看 Cloud Run 服務目前的修訂版本層級執行個體數量上限設定,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下該服務,開啟「服務詳細資料」面板。
按一下「Revisions」(修訂版本) 分頁標籤。
在右側的詳細資料面板中,查看「修訂版本例項數上限」設定,該設定會列在「容器」分頁下方。
gcloud
使用下列指令:
gcloud run services describe SERVICE
在傳回的設定中找出「最多執行個體數」的值。
同時使用服務層級和修訂版本層級的執行個體數量下限或上限
下表說明如果將服務層級的執行個體上限與修訂版本層級的執行個體下限或上限合併,會發生什麼情況:
| 服務層級設定 | 修訂版本層級設定 | 行為 |
|---|---|---|
| 已設定服務層級的執行個體數量上限 | 已設定修訂版本層級的執行個體數量上限 | 有效執行個體數量上限是修訂版本層級執行個體數量上限和服務層級執行個體數量上限中較小的值。 |
| 已設定服務層級的執行個體數量上限 | 已設定修訂版本層級的執行個體數量下限 | 如果服務層級的執行個體數量上限低於修訂版本層級的執行個體數量下限,修訂版本啟動的執行個體數量會達到服務層級的上限,但不會達到設定的修訂版本層級下限。 |
使用服務層級的最多執行個體數,並搭配流量拆分功能
如果您使用流量分配,系統會根據流量分配比例,將服務層級的執行個體上限分配給各個修訂版本。舉例來說,如果服務層級的執行個體上限為 100,50/50 的流量分配會將 50 個服務層級的執行個體上限分配給每個修訂版本。下表顯示設定情境範例:
| 範例設定 | 產生的行為 |
|---|---|
設定服務層級的執行個體數量上限 (沒有修訂版本層級設定的情況):100
|
每個修訂版本都會分配到一部分的服務層級執行個體數量上限。每個修訂版本的有效執行個體上限會根據流量分配固定。修訂版本 A 的執行個體數量上限為 10 個,修訂版本 B 為 10 個,修訂版本 C 則為 80 個。 |