本頁面說明如何使用預設的 Cloud Run 自動調度資源行為,設定 Cloud Run 服務可使用的執行個體數量上限。如要手動調度服務資源,請參閱「手動調度資源」。
在 Cloud Run 中指定執行個體數量上限,即可限制服務因應傳入要求而擴充資源的程度,但如果發生流量暴增等情況,可能會短暫超出這項上限設定。
您可以使用這項設定來控管費用,或限制後端服務 (例如資料庫) 的連線數量。
如要瞭解服務可能適用的執行個體數量上限,請參閱「執行個體數量上限」。
如要進一步瞭解 Cloud Run 如何自動調度容器執行個體資源,請參閱「執行個體自動調度資源」。
在服務層級和修訂版本層級套用執行個體數量上限
您可以在服務層級或修訂版本層級設定執行個體數量上限。除非您有特定需求,必須在修訂版本層級限制執行個體,否則 Google 建議您使用服務層級的執行個體數量上限,限制服務的執行個體數量。根據預設,Cloud Run 會為每個修訂版本設定 100 個執行個體。如要讓服務調度資源至更多執行個體,請修改這個值。
套用執行個體數量上限後,設定會按照下列方式生效:
- 服務水準:立即
- 修訂版本層級:部署修訂版本時
已標記的修訂版本和服務層級執行個體數量上限
標記的修訂版本會啟動,但只有在屬於流量拆分的一部分時,才會計入服務層級的執行個體數量上限。
必要的角色
如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予您下列 IAM 角色:
- Cloud Run 服務的 Cloud Run 開發人員 (
roles/run.developer) - 服務身分的服務帳戶使用者 (
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」頁面:
從 Cloud Run 導覽選單中選取「Services」(服務):
如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。
如要設定現有服務,請按一下該服務,然後按一下「Scaling」(資源調度) 分頁標籤。
在「Service scaling」(服務資源調度) 下方,找到標示為「Maximum number of instances」(執行個體數量上限) 的欄位,並指定所需的容器執行個體數量上限,使用從
1到服務可能上限的任何整數值。如要移除服務層級限制,請刪除設定的值。這項設定會還原為預設值。按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。
gcloud
您可以使用下列指令,更新特定服務的執行個體數量上限:
gcloud run services update SERVICE --max MAX-VALUE
更改下列內容:
- SERVICE:服務名稱。
- MAX-VALUE:容器執行個體數量上限 (必要),可使用
1到服務上限之間的任何整數值。如要移除服務層級限制,請刪除設定的值。這項設定會還原為預設值。
您也可以在部署期間,使用下列指令設定執行個體數量上限:
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到服務上限之間的任何整數值。如要移除服務層級限制,請刪除設定的值。這項設定會還原為預設值。
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
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」(服務) 頁面:
按一下該服務,開啟「服務詳細資料」面板。
按一下「Scaling」(資源調度) 分頁標籤,查看目前的設定。
gcloud
使用下列指令:
gcloud run services describe SERVICE
在傳回的設定中,找出「Scaling: Auto (Min: MIN_VALUE, Max: MAX_VALUE)」的值。
設定修訂版本層級的執行個體數量上限
任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確變更。
根據預設,Cloud Run 修訂版本最多可擴充至 100 個執行個體。
修訂版本層級資源調度功能僅適用於先前已設定該功能的服務。
控制台
前往 Google Cloud 控制台的「Cloud Run」頁面:
從 Cloud Run 導覽選單中選取「Services」(服務):
如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「容器、網路、安全性」,展開服務設定頁面。
如要設定現有服務,請按一下該服務,然後按一下「Scaling」(資源調度) 分頁標籤。
在「Revision scaling」(修訂版本資源調度) 區段的「Maximum number of instances」(執行個體數量上限) 欄位中,指定容器執行個體數量上限。
按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。
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
gcloud run services replace指令預設會使用service.yaml檔案 (如有)。
查看修訂版本層級的執行個體數量上限設定
修訂版本層級資源調度功能僅適用於先前已設定該功能的服務。
如要查看 Cloud Run 服務目前的修訂版本層級執行個體數量上限設定,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下該服務,開啟「Service details」(服務詳細資料) 面板。
按一下「Scaling」(資源調度) 分頁標籤。
在「修訂版本資源調度」下方,查看「執行個體數量上限」。
gcloud
使用下列指令:
gcloud run services describe SERVICE
在傳回的設定中,找出「Max instances:」的值。
同時使用服務層級和修訂版本層級的執行個體數量下限或上限
下表說明將服務層級執行個體數量上限,與修訂版本層級執行個體數量下限或上限合併時,會出現的行為:
| 服務層級設定 | 修訂版本層級設定 | 行為 |
|---|---|---|
| 已設定服務層級執行個體數量上限 | 修訂版本層級的執行個體數量上限 | 有效執行個體數量上限,是修訂版本層級和服務層級執行個體數量上限中的較小值。 |
| 已設定服務層級執行個體數量上限 | 設定修訂版本層級的執行個體數量下限 | 如果服務層級的執行個體數量上限低於修訂版本層級的執行個體數量下限,修訂版本啟動的執行個體數量最多只會達到服務層級的執行個體數量上限,不會達到設定的修訂版本層級執行個體數量下限。 |
搭配流量拆分功能,使用服務層級的執行個體數量上限
如果您使用流量拆分,系統會根據流量拆分比例,將服務層級的執行個體數量上限分配給各個修訂版本。舉例來說,如果服務層級執行個體數量上限為 100,則 50/50 的流量拆分會為每個修訂版本分配 50 個服務層級執行個體數量上限。下表為設定情境範例:
| 範例設定 | 產生的行為 |
|---|---|
服務層級執行個體數量上限 (未設定修訂版本層級):100
|
每個修訂版本都會分配到一部分的服務層級執行個體數量上限。每個修訂版本的有效執行個體數量上限,會根據流量分配固定。修訂版本 A 的執行個體數量上限為 10,修訂版本 B 為 10,修訂版本 C 為 80。 |