如果您使用代管執行個體群組 (MIG),請參閱本文,瞭解如何建立、設定及刪除 MIG 的自動調度器。
事前準備
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
建立自動配置器
隨著您想要使用的自動調度資源政策不同,建立自動配置器的方式也會略有差異。如需建立自動配置器的操作說明,請參閱:
取得自動配置器相關資訊
如要取得特定自動配置器的詳細資訊,請使用 Console、
gcloud compute instance-groups managed describe
子指令,或區域或地區自動配置器 REST 資源的get
方法。主控台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
- 按一下 [Details] (詳細資料) 即可查看群組的詳細資料,包括群組的自動調度資源設定。
gcloud
使用
instance-groups managed describe
指令:gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME
如果群組已附加自動配置器,這個指令會傳回自動配置器的詳細資料:
... autoscaler: autoscalingPolicy: coolDownPeriodSec: 60 cpuUtilization: utilizationTarget: 0.6 maxNumReplicas: 20 minNumReplicas: 10 mode: ON scaleInControl: timeWindowSec: 300 maxScaledInReplicas: fixed: 3 calculated: 3 ...
REST
請使用
instanceGroupManagers.get
方法。如果是區域 MIG,請將zones/ZONE
替換為regions/REGION
。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME
如果群組已附加自動調度器,要求會傳回自動調度器資源的連結。
200 OK { ... "status": { ... "autoscaler": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group" }, }
如要擷取自動配置器資源的詳細資料,請使用區域 MIG 的
autoscalers.get
方法,或區域 MIG 的regionAutoscalers.get
方法。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/example-autoscaler
200 OK { "kind": "compute#autoscaler", "id": "8744945839459481093", "creationTimestamp": "2018-09-28T13:02:50.553-07:00", "name": "example-group", "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group", "autoscalingPolicy": { "minNumReplicas": 10, "maxNumReplicas": 20, "mode": "ON", "scaleInControl": { "timeWindowSec": 60, "maxScaledInReplicas": { "calculated": 3, "percent": 15 } }, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.6 } }, "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group", "status": "ACTIVE" }
更新自動配置器
更新自動配置器後,變更可能需要一段時間才會生效,新的自動配置器設定可能需要數分鐘,才會反映在系統上。
主控台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
- 按一下「編輯」即可查看及更新群組目前的設定,包括群組的自動調度資源設定。
- 完成時請按一下 [Save] (儲存)。
gcloud
gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --max-num-replicas MAX_NUM ...
如需建立自動調度器的操作說明,請參閱建立自動調度器。
REST
如要更新自動配置器資源,請使用區域 MIG 的
autoscalers.patch
方法,或區域 MIG 的regionAutoscalers.patch
方法。提供要求主體,並在其中包含新的設定。PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler { "autoscalingPolicy": { "maxNumReplicas": 20 } }
200 OK { "kind": "compute#operation", "id": "4244494732310423322", "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f", "operationType": "compute.autoscalers.patch", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler", "targetId": "340775527929467142", "status": "RUNNING", ... }
執行任何會修改資料的要求時,系統均會傳回 zoneOperations 或 regionOperations 資源,您可查詢作業來檢查變更的狀態。
使用預測式自動調度資源功能
預測式自動調度資源功能會使用歷來資料,在預期負載出現前擴充群組。如果工作負載符合下列條件,這項功能就能發揮最佳效用:
- 應用程式需要很長時間才能初始化,例如您設定的初始化期間超過 2 分鐘。
- 工作負載會隨著每日或每週週期而有規律地變化。
詳情請參閱根據預測結果執行資源調度。
關閉或限制自動配置器
關閉自動配置器來暫時避免自動配置器為 MIG 進行資源調度,或限制自動配置器,使其只能為 MIG 進行向外擴充的資源調度。這項功能相當適合用於下列作業:
- 在不受資源規模縮減干擾的情況下調查 VM 執行個體。
- 重新設定 MIG 的多個屬性,且進行部分重新設定期間,系統不會觸發資源調度動作。
- 維持 MIG 容量,以在將工作負載重新導向至新的 MIG 時,可快速復原。
- 稍後再啟用預測式自動調度資源。預測式自動調度資源功能需要自動調度資源政策,才能開始收集負載記錄,以做為預測依據。即使自動調度器模式設為
OFF
,系統仍會偵測這項記錄。
如果重新啟用自動配置器,自動配置器會自動恢復正常運作狀態。
請按照本節的說明設定自動調度器的模式。可用的模式如下:
- 關閉:暫時停用自動調度資源功能。使用此模式可防止系統自動變更 MIG 的大小。自動調度資源設定會保持不變,以供日後重新啟用自動調度資源功能。
- 僅向外擴充:將自動調度資源限制為僅限新增 VM 執行個體。使用此模式可避免群組縮小,並讓群組可在負載增加時佈建額外的 VM。
- 開啟:根據政策啟用所有自動調度資源作業。
主控台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
- 按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
- 在「Autoscaling」(自動調度資源) 下,設定「Autoscaling mode」(自動調度資源模式) 來停用或限制自動調度資源,或重新開啟自動配置器。
- 完成時請按一下 [Save] (儲存)。
gcloud
如要停用、限制或重新啟用自動配置器,請使用
update-autoscaling
指令搭配--mode
旗標。gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --mode MODE
更改下列內容:
MODE
:off
會停用自動配置器,但會保持其設定。only-scale-out
,將自動調度器限制為只能新增 VM 執行個體on
會根據本身的政策重新啟用所有自動配置器活動
REST
如要更新自動配置器資源模式,請使用區域 MIG 的
autoscalers.patch
方法,或區域 MIG 的regionAutoscalers.patch
方法。提供要求主體,並在其中包含autoscalingPolicy.mode
屬性。PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler { "autoscalingPolicy": { "mode":"MODE" } }
更改下列內容:
MODE
:OFF
會停用自動配置器,但會保持其設定。ONLY_SCALE_OUT
,將自動配置器限制為只能新增執行個體ON
會根據本身的政策重新啟用所有自動配置器活動
將自動調度資源模式設為
ONLY_SCALE_OUT
時,自動調度器的行為如下:- 無論負載減少或自動調度資源設定變更,自動調度器都不會減少 MIG 的
targetSize
值。 - 如果您手動變更區域 MIG 的目標大小,且該大小小於自動調度器建議的大小,自動調度器就會覆寫您手動提供的大小。
- 您無法手動變更地區 MIG 的目標大小。
- 如果自動調度資源模式設為
ONLY_SCALE_OUT
,且您將autoscalingPolicy.maxNumReplicas
欄位設為低於群組目前targetSize
值的值,自動調度資源不會減少群組中的執行個體數量。自動調度器會照常持續重新計算群組的建議大小,並可能減少群組的建議大小,以符合新的上限,但群組不會縮減。 - 「
autoscalers.status
」欄位會回報警告:「Autoscaling operates in a restricted mode: ONLY_SCALE_OUT.」(自動調度資源功能處於受限模式:ONLY_SCALE_OUT)。
將自動調度資源模式設為
OFF
時,自動調度資源的行為如下:- 自動調度器不會因應負載或自動調度器設定的變更,變更 MIG 的
targetSize
值。自動調度器會照常持續重新計算群組的建議大小,並可能為了符合新的上限而縮減群組的建議大小,但不會縮減群組。 - 您可以手動變更可用區或區域性 MIG 的目標大小。自動調度資源政策的
minNumReplicas
和maxNumReplicas
值不會影響您設定的大小。 - 如果您為啟用主動式執行個體重新分配功能的地區 MIG 停用自動調度資源功能,且 MIG 的執行個體在各區域間分布不均,則群組會主動刪除或建立區域中的執行個體,以重新建立均勻分布的狀態。
- 「
autoscalers.status
」欄位會顯示警告:「Autoscaling operates in a restricted mode: OFF.」(自動調度資源功能處於受限模式:關閉)。
控管自動調度資源的向內縮減率
如果您的工作負載需要數分鐘才能啟動,請設定縮減資源配置的控制功能,藉此降低資源配置驟降事件引發的回應延遲和服務中斷風險。具體來說,如果您預期負載下降後很快就會暴增,可以限制縮減率。限制縮減率可防止自動調度器減少的 MIG 大小超過工作負載可容許的 VM 執行個體數量。
設定向內縮減控制項
您可以視需要設定向內縮減控制項。根據預設,縮小控制項不會設定。如果未設定,自動調度器仍會依預設穩定機制運作。也就是說,系統會將建議大小維持在可處理穩定期觀察到的尖峰負載的程度。
主控台
如要為自動調度資源的 MIG 設定縮減控制項,請按照下列步驟操作:
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下自動調度 MIG 的名稱,開啟該群組的總覽頁面。
按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
在「Autoscaling」(自動調度資源) 下方,按一下「Scale-in controls」(向內縮減控制項),然後選取「Enable scale-in controls」(啟用向內縮減控制項)。
在「Don't scale in by more than」(縮減規模時,移除的執行個體數量不得超過) 下方,指定一次可從群組中移除的執行個體數量或百分比上限。
在「Over the course of」(在以下時間內) 下方,指定可從群組中移除執行個體的頻率。
按一下 [儲存]。
gcloud
建立或更新自動調度器時,您可以設定縮減控制項。
建立自動調度器時設定縮減控制項
為 MIG 建立自動調度器時,請使用
gcloud compute instance-groups managed set-autoscaling
指令搭配--scale-in-control
標記,設定縮減控制項。舉例來說,請使用下列指令為example-group
設定自動調度資源功能:gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME \ --target-cpu-utilization 0.6 \ --max-num-replicas 50 \ --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW
更新自動調度器時設定縮減控制項
使用
--scale-in-control
旗標搭配gcloud compute instance-groups managed update-autoscaling
指令,更新 MIG 現有自動調整程式中的縮減控制項。舉例來說,如要為example-group
的現有自動調度資源設定縮減控制項,請使用下列指令:gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW
更改下列內容:
INSTANCE_GROUP_NAME
:要更新的 MIG 名稱。MAX_SCALE_IN_REPLICAS
:可從尖峰大小扣除的 VM 數量上限,取自指定的尾端時間範圍。系統會一次擴充指定數量的 VM 執行個體,因此服務應能承受一次失去這麼多 VM。您可以指定 VM 數量或百分比。請使用%
符號表示百分比,例如:50%
。TIME_WINDOW
:用於取得尖峰大小的尾隨時間範圍。自動調度資源功能不會將副本數縮減至低於這段時間內尖峰大小的副本數上限。請以秒為單位指定這個值,且必須介於 [60, 3600] 間隔內。
舉例來說,假設您將時間範圍設為 1800 秒 (30 分鐘)。計算 MIG 目前的建議大小時,自動調度器會使用下列邏輯:
- 取用過去 30 分鐘的尖峰大小 (例如 100 個 VM)
- 以
max-scaled-in-replicas
為例 (例如 10 部 VM) - 將建議大小的下限設為:尖峰大小減去
max-scaled-in-replicas
(100 - 10 = 90 部 VM)
REST
在區域或地區自動調度資源的
autoscalingPolicy.scaleInControl
結構中設定maxScaledInReplicas
和timeWindowSec
欄位,即可設定縮減控制項。這些欄位沒有預設值,您必須為這兩個欄位提供值。建立或更新自動調度器時,您可以設定縮減控制項。
建立自動調度器時設定縮減控制項
如果是區域 MIG,請使用
autoscalers.insert
方法。如果是區域 MIG,請使用regionAutoscalers.insert
方法。POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME", "autoscalingPolicy": { "minNumReplicas": 1, "maxNumReplicas": 5, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.8 }, "scaleInControl": { "maxScaledInReplicas": { "fixed": MAX_SCALE_IN_REPLICAS }, "timeWindowSec": TIME_WINDOW } } }
如要進一步瞭解如何建立自動調度器,請參閱下列文章:
更新自動調度器時設定縮減控制項
如果是區域 MIG,請使用
autoscalers.patch
方法。如果是區域 MIG,請使用regionAutoscalers.patch
方法。PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "minNumReplicas": 1, "maxNumReplicas": 5, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.8 }, "scaleInControl": { "maxScaledInReplicas": { "fixed": MAX_SCALE_IN_REPLICAS }, "timeWindowSec": TIME_WINDOW } } }
更改下列內容:
AUTOSCALER_NAME
:要建立的自動調度程式名稱。您可以將自動調度器命名為要使用的 MIG,也可以命名為其他名稱。INSTANCE_GROUP_NAME
:要新增自動調度資源功能的 MIG 名稱。如果是區域 MIG,請將zones/ZONE
替換為regions/REGION
。MAX_SCALE_IN_REPLICAS
:可從建議目標大小上限扣除的 VM 數量上限,取自指定的尾端時間範圍。系統會一次擴充指定數量的 VM 執行個體,因此您的服務應能承受一次失去這麼多 VM。您可以指定 VM 數量或百分比。使用maxScaledInReplicas.percentage
指定百分比值。TIME_WINDOW
:用來取得建議大小上限的後方時間範圍。自動調度資源不會將副本數量縮減至低於建議大小 (取自這段時間範圍內的建議大小峰值) 的上限。請在 [60, 3600] 間隔內以秒為單位指定這個值,例如:1800
。
舉例來說,假設您將時間範圍設為 1800 秒 (30 分鐘)。計算 MIG 目前的建議大小時,自動調度器會使用下列邏輯:
- 取用過去 30 分鐘的尖峰大小 (例如 100 個 VM)
- 以
max-scaled-in-replicas
為例 (例如 10 部 VM) - 將建議大小的下限設為:尖峰大小減去
max-scaled-in-replicas
(100 - 10 = 90 部 VM)
如要進一步瞭解向內縮減控制項的運作方式,請參閱「瞭解自動配置器決策」。
取得向內縮減控制項的目前設定
如要取得縮減控制項的目前設定,請參閱取得自動調度器相關資訊。
移除向內縮減控制項
您可以使用 Google Cloud CLI 或 Compute Engine API 移除縮減控制項,解除對縮減作業時間和規模的限制。
如果沒有縮減控制項,自動調度器仍會依預設穩定機制運作。具體來說,這項功能會維持建議大小,以滿足穩定期觀察到的尖峰負載。
主控台
如要移除自動調度資源 MIG 的向內縮減控制項,請按照下列步驟操作:
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下自動調度 MIG 的名稱,開啟該群組的總覽頁面。
按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
在「Autoscaling」(自動調度資源) 底下,按一下「Scale-in controls」(向內縮減控制項),然後取消勾選「Enable scale-in controls」(啟用向內縮減控制項) 核取方塊。
按一下 [儲存]。
gcloud
使用
--clear-scale-in-control
旗標和gcloud compute instance-groups managed update-autoscaling
指令移除縮減控制項。舉例來說,請使用下列指令,從example-group
的自動調度資源設定中移除縮減控制項:gcloud compute instance-groups managed update-autoscaling example-group \ --clear-scale-in-control
REST
如要移除縮減控制項,請對區域性 MIG 使用
autoscalers.patch
方法,或對區域性 MIG 使用regionAutoscalers.patch
方法,並提供縮減控制項的空白設定。PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "scaleInControl": null } }
更改下列內容:
AUTOSCALER_NAME
:要更新的自動調度程式名稱。如要取得現有自動調度器及其目標 MIG 的清單,請使用autoscalers.aggregatedList
方法。
刪除自動配置器
您可以永久刪除自動配置器資源及其記錄。如要暫時停止自動調度資源,並保留自動調度資源設定和記錄,請改為停用自動調度資源功能。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
在「Autoscaling」(自動調度資源) 下,從「Autoscaling mode」(自動調度資源模式) 下拉式清單中選取「Delete autoscaling configuration」(刪除自動調度資源設定),即可停止自動配置器並刪除其設定。
完成時請按一下 [Save] (儲存)。
gcloud
使用
stop-autoscaling
指令停止自動配置器,並刪除其設定。gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME
停止自動配置器後,系統會將其從 MIG 中刪除。如要重新啟動自動配置器,則必須使用
set-autoscaling
指令重新建立自動配置器。如果您使用 gcloud CLI 刪除 MIG,所有連結至 MIG 的自動配置器也會遭到刪除。
REST
如要停止自動調度器並刪除其設定,請使用區域 MIG 的
autoscalers.delete
方法,或使用區域 MIG 的regionAutoscalers.delete
方法。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME
意見回饋
我們想要瞭解您的用途、難題和自動調度相關意見。請前往以下網址,並與我們的團隊分享您的寶貴意見:mig-discuss@google.com。
後續步驟
- 瞭解自動配置器如何做出決策。
- 瞭解如何使用多個自動調度資源信號來調度群組資源。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-08 (世界標準時間)。
-