排程式自動調度資源功能可讓您在預期負載出現前排定容量,藉此提高工作負載的可用性。如果您在代管執行個體群組 (MIG) 中執行工作負載,可以針對週期性負載模式和一次性事件,排定所需數量的虛擬機器 (VM) 執行個體。如果工作負載需要很長時間才能初始化,且您想在預期負載尖峰出現前擴充資源,請使用縮放時間表。
本文說明如何為現有 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
- 每個 MIG 最多可有 128 個資源調度排程。如要解決這項限制,請刪除狀態為「
OBSOLETE
」且您不打算再次執行的調度時間表。 - 縮放時間表的最低時間長度為 5 分鐘。
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
從清單中按一下 MIG 名稱。
按一下「Edit」(編輯)
。如果沒有自動調度資源設定:
- 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)。
- 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。如要只根據時間表調度 MIG,請在新增時間表後刪除預設的 CPU 使用率指標。
針對您要新增的每個縮放時間表,請執行下列操作:
- 展開「自動調整規模時間表」部分,按一下「管理時間表」,然後按一下「建立時間表」。
- 在「建立縮放排程」窗格中,輸入「名稱」。
- 選用:輸入說明。
- 輸入這項排程啟用時提供的執行個體數量下限。
- 使用預設介面指定縮放排程的開始時間和重複週期,或者使用 Cron 運算式設定開始時間和重複週期較為複雜的排程。
- 預設介面
- 在「開始時間」欄位中輸入或點選 ,選取開始時間。
- 在「Recurrence」(重複頻率) 欄位中,選取排程的重複頻率。如果選取「每週」或「每月」,請使用額外的下拉式選單,選取每週或每月的哪幾天開始執行時間表。
- Cron 運算式
- 如要啟用,請點選「使用 Cron 運算式」切換按鈕。
- 輸入 CRON 運算式。
- 預設介面
在「時區」欄位中選取時區。
在「時間長度」和「時間單位」欄位中輸入時間長度,並選取相應的時間單位。
按一下 [儲存]。「Scaling schedules」(擴充時間表) 窗格隨即開啟。
選用:如要建立其他縮放排程,請按一下
「建立排程」。
建立完時間表後,按一下「完成」。
如要關閉「Instance groups」(執行個體群組) 頁面,請按一下「Save」(儲存)。
MIG_NAME
:具有現有自動調度資源政策的 MIG 名稱。MIN_NUM_REPLICAS
:選用:此 MIG 的執行個體數量下限。Google 建議您將這個值設為在沒有任何資源調度排程時,所需的執行個體數量下限。如要將 MIG 縮減為零個執行個體,請將這個值設為0
,並確認符合必要條件。MAX_NUM_REPLICAS
:這個 MIG 可提供的執行個體數量上限。如果 MIG 採用現有的自動調度資源政策,則為選用。SCHEDULE_NAME
:新縮放排程的名稱。CRON_EXPRESSION
:這個排程的開始時間和重複頻率,格式為 cron 運算式。DURATION
:這項排程的有效時間長度 (以秒為單位)。TIME_ZONE
:(選填) 排程開始時間的 IANA 時區,例如Europe/Paris
。預設值為UTC
。MIN_REQ_REPLICAS
:這項排程生效時提供的最低必要執行個體數量。DESCRIPTION
:(選填) 新縮放時間表的說明。ZONE
或REGION
:選用:MIG 所在的可用區或地區。PROJECT
:您的專案 ID。ZONE
:MIG 所在的可用區。AUTOSCALER_NAME
:現有自動調度程式的名稱。這通常與 MIG 的名稱相同。MIN_NUM_REPLICAS
:選用:此 MIG 的執行個體數量下限。Google 建議您將這個值設為在沒有任何調度排程時,您需要的執行個體數量下限。如要將 MIG 調度為零個執行個體,請將這個值設為0
,並確認符合必要條件。MAX_NUM_REPLICAS
:這個 MIG 可提供的執行個體數量上限。如果 MIG 採用現有的自動調度資源政策,則為選用。SCHEDULE_NAME
:新縮放排程的名稱。MIN_REQ_REPLICAS
:此時間表啟用時提供的最低必要執行個體數量。CRON_EXPRESSION
:這個排程的開始時間和重複頻率,格式為 cron 運算式。TIME_ZONE
:(選填) 排程開始時間的 IANA 時區,例如Europe/Paris
。預設值為UTC
。DURATION
:這項排程的有效時間長度 (以秒為單位)。DESCRIPTION
:(選填) 新縮放時間表的說明。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
從清單中按一下 MIG 名稱。
按一下「Edit」(編輯)
。您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可顯示現有調整大小排程的清單。
MIG_NAME
:具有現有自動調度資源政策的 MIG 名稱。ZONE
或REGION
:選用:MIG 所在的可用區或地區。PROJECT
:您的專案 ID。ZONE
:MIG 所在的可用區。AUTOSCALER_NAME
:現有自動調度程式的名稱。這通常與 MIG 的名稱相同。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
從清單中按一下 MIG 名稱。
按一下「Edit」(編輯)
。您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可顯示現有調整大小排程的清單。
找出要編輯的縮放時間表,然後勾選對應的核取方塊。
在「縮放時間表」窗格頂端,按一下「編輯」
。在新的「編輯縮放時間表」窗格中,修改要變更的欄位。如要進一步瞭解每個欄位,請參閱建立縮放時間表。
完成後,按一下「儲存」。
MIG_NAME
:具有現有資源調度排程的 MIG 名稱。SCHEDULE_NAME
:現有縮放排程的名稱。CRON_EXPRESSION
:(選用) 這個時間表的新開始時間和重複頻率,格式為 cron 運算式。DURATION
:(選用) 這項時間表有效的新持續時間 (以秒為單位)。TIME_ZONE
:(選填) 排程開始時間的新 IANA 時區,例如Europe/Paris
。預設值為UTC
。MIN_REQ_REPLICAS
:選用:這項排程啟用時提供的最低必要執行個體數量。DESCRIPTION
:(選用) 縮放時間表的全新說明。ZONE
或REGION
:選用:MIG 所在的可用區或地區。PROJECT
:您的專案 ID。ZONE
:MIG 所在的可用區。AUTOSCALER_NAME
:現有自動調度程式的名稱。這通常與 MIG 的名稱相同。SCHEDULE_NAME
:現有縮放排程的名稱。MIN_REQ_REPLICAS
:選用:這項排程啟用時提供的最低必要執行個體數量。CRON_EXPRESSION
:(選用) 這個時間表的新開始時間和重複頻率,格式為 cron 運算式。TIME_ZONE
:(選填) 排程開始時間的新 IANA 時區,例如Europe/Paris
。預設值為UTC
。DURATION
:(選用) 這項時間表有效的新持續時間 (以秒為單位)。DESCRIPTION
:(選用) 縮放時間表的全新說明。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
從清單中按一下 MIG 名稱。
按一下「Edit」(編輯)
。您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可顯示現有調整大小排程的清單。
找出要停用或啟用的縮放排程,然後勾選對應的核取方塊。
停用或啟用所選時間表。
- 如要停用所選時間表,請按照下列步驟操作:
- 在「縮放時間表」窗格頂端,按一下「停用」 。
- 在隨即顯示的「停用時間表」對話方塊中,按一下「停用」。
- 如要啟用所選時間表,請按照下列步驟操作:
- 在「Scaling Schedules」窗格頂端,按一下「Enable」 。
- 在隨即顯示的「啟用時間表」對話方塊中,按一下「啟用」。
- 如要停用所選時間表,請按照下列步驟操作:
MIG_NAME
:具有現有資源調度排程的 MIG 名稱。SCHEDULE_NAME
:要停用的自動調度排程名稱。ZONE
或REGION
:選用:MIG 所在的可用區或地區。MIG_NAME
:具有現有資源調度排程的 MIG 名稱。SCHEDULE_NAME
:要重新啟用的自動調度排程名稱。ZONE
或REGION
:選用:MIG 所在的可用區或地區。PROJECT
:您的專案 ID。ZONE
:MIG 所在的可用區。AUTOSCALER_NAME
:現有自動調度程式的名稱。這通常與 MIG 的名稱相同。SCHEDULE_NAME
:要停用的自動調度排程名稱。PROJECT
:您的專案 ID。ZONE
:MIG 所在的可用區。AUTOSCALER_NAME
:現有自動調度程式的名稱。這通常與 MIG 的名稱相同。SCHEDULE_NAME
:要重新啟用的自動調度排程名稱。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
從清單中按一下 MIG 名稱。
按一下「Edit」(編輯)
。您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可顯示現有調整大小排程的清單。
找出要刪除的縮放時間表,然後勾選對應的核取方塊。
在「Scaling Schedules」(縮放時間表) 窗格頂端,按一下「Delete」(刪除)
。在隨即顯示的「刪除時間表」對話方塊中,按一下「刪除」。
MIG_NAME
:具有現有資源調度排程的 MIG 名稱。SCHEDULE_NAME
:要刪除的自動調度排程名稱。ZONE
或REGION
:選用:MIG 所在的可用區或地區。PROJECT
:您的專案 ID。ZONE
:MIG 所在的可用區。AUTOSCALER_NAME
:現有自動調度程式的名稱。這通常與 MIG 的名稱相同。SCHEDULE_NAME
:要刪除的自動調度排程名稱。所需執行個體數量下限:這項自動調整排程啟用時,MIG 中所需的 VM 數量。
這項排程開始時,MIG 至少會有這個數量的 VM,但可能會根據其他自動調度資源設定增加 VM 數量。此外,MIG 大小一律會受到 MIG 自動調度資源設定中設定的執行個體數量上下限限制。
時區:根據位置資訊判斷的 IANA 時區,用於解讀排程的開始時間。
可用值清單由 IANA 時區資料庫定義,例如
Europe/Paris
。如果沒有提供時區,系統預設會使用UTC
。部分 IANA 時區會採用日光節約時間。如要瞭解日光節約時間對縮放時間表的影響,請參閱「日光節約時間」。時間長度:您希望自動調度排程啟用的時間長度。
系統會在設定的時長內,從開始時間起啟用縮放時間表。時間長度下限為 5 分鐘。在這段期間,自動配置器會調度 MIG,確保 VM 數量至少達到排程定義的必要執行個體數量。如果指定時間過後不再需要目前的容量,自動調度器會在預設的 10 分鐘穩定期過後,開始移除 VM 執行個體,並遵循任何已設定的縮減控制項。
資源調度時間表是雙向的。系統會在您指定的停止時間移除 VM,並將群組大小縮減至您設定的最小群組大小,除非您已指定其他自動調度資源信號。
開始時間:您希望自動調幅排程啟用的時間。
在開始時間,只要 MIG 大小低於排程所需的執行個體數量,資源調度排程就會開始建立 VM。設定開始時間時,請預留足夠的時間讓新 VM 啟動及初始化。舉例來說,如果工作負載從建立 VM 到開始提供服務需要 10 分鐘,請將開始時間設為比 VM 準備就緒的時間早 10 分鐘。
週期:資源調度排程的重複頻率 (如有),可透過下列選項定義:
- 一次:只在所選日期開始的一次性排程。
- 每天:每天開始的重複排程。
- 每週:每週在所選日期開始的重複排程,例如每週一到週五。
- 每月:重複排程,每月在選定的日期開始,例如每月第一天。如果月份沒有 29 到 31 號,則這些日期不會生效。
- 空格用於分隔 cron 運算式的欄位。請注意,如果欄位使用特殊字元,請勿加入多餘的空白字元。
- 如果同時指定星期幾和日期 (兩個欄位都未設為
*
),排程會使用這些值的聯集,而非交集。舉例來說,排程0 8 1 * Mon
會在每週一和每月第一天的上午 8:00 開始作業。只有在星期一也是當月第一天時,該排程才不會在上午 8:00 開始。 - 您可以在 cron 運算式的每個欄位中使用零或多個特殊字元。舉例來說,如果您希望排程在 5 月以外的每個月啟動,可以將月份欄位設為
1-4,6-12
(兩個範圍的清單,不含空白字元)。 - 使用範圍 (
-
) 時,無法在星期幾欄位中使用0-7
或Sun-Sun
,如要指定每個星期幾,請改用*
、0-6
、1-7
、Sun-Sat
或Mon-Sun
。 - 使用步驟 (
/
) 時,請注意 cron 運算式是無狀態的,因此步驟有時可能不平均。舉例來說,如要每 6 小時執行一次排程,您可以將「小時」欄位設為*/6
,這與列出 6 的每個有效倍數 (0,6,12,18
) 的行為相同。由於 24 小時可分成 6 小時的間隔,因此步驟會是偶數。不過,如果將小時欄位設為*/7
,排程就不會一律以 7 小時為間隔啟動。*/7
的行為與列出每個有效的 7 倍數 (0,7,14,21
) 相同,也就是說,排程可以在凌晨 12 點、上午 7 點、下午 2 點和晚上 9 點開始。 - 狀態 (
state
):代表縮放排程的目前狀態,可能為下列其中一種:- 就緒 (
READY
):這項排程已準備就緒,但尚未啟用。 自動調度器正在等待下次排定時間。 - 有效 (
ACTIVE
):這項排程有效。自動調度器會嘗試為這個 MIG 提供至少排程指定的必要執行個體。 - 已過時 (
OBSOLETE
):這項時間表已過期,不會再次啟用。自動調度器會忽略這項排程,因為沒有未來的發生次數。 - 已停用 (
DISABLED
):這個排程已手動停用,因此無法啟用。自動調整工具會忽略這項排程,直到重新啟用為止。
- 就緒 (
- 上次發生時間 (
lastStartTime
):上次啟用這個自動調度時間表的時間戳記。這是指上次啟用的實際日期和時間。舉例來說,假設您已停用每日重複執行的縮放排程,開始時間為上午 10 點,持續時間為 2 小時。如果您在今天上午 11 點重新啟用排程,則lastStartTime
為今天上午 11 點。 - 下次發生時間 (
nextStartTime
):下次排定啟用這項時間表的日期和時間。 - 如果排程在跳過的那一小時內處於有效狀態,仍會持續執行完整時長,但為了補償跳過的那一小時,這些排程會在沒有日光節約時間轉換的日子,比結束時間晚 1 小時結束。一般來說,時間表的結束時間是時間表的開始時間和時長的總和。但如果排程啟用時日光節約時間跳過 1 小時,且時間長度和開始時間維持不變,則該排程的結束時間會比排程開始時間和時間長度的總和多 1 小時。
- 如果排程設定在跳過的那一小時啟動,在沒有 DST 轉換的日期,排程也會比啟動時間晚 1 小時。
- 在重複時段內啟用的排程仍會持續執行完整時長,但為了補償重複時段,這些排程會在沒有 DST 轉換的日期,比結束時間提早 1 小時結束。一般來說,排程的結束時間是排程的開始時間加上時長。不過,如果排程處於啟用狀態,且日光節約時間重複 1 小時,而時間長度和開始時間維持不變,則該排程的結束時間會比排程開始時間和時間長度的總和少 1 小時。
- 如果排程設定在轉換期間啟動,系統會在設定的時間啟動排程,但不會在第二次重複啟動時間時重新啟動。
- 瞭解如何使用含有多項信號的自動調度資源政策。
- 瞭解如何管理自動調度器。
- 瞭解如何解讀自動調度資源決策。
- 瞭解如何根據其他類型的自動調度資源信號,自動調度 MIG 資源:
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱 Set up authentication for a local development environment。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
限制
自動調度資源時間表會受到所有自動調度資源的限制,以及下列限制:
建立資源調度時間表
每個 MIG 最多可建立 128 個資源調度排程。詳情請參閱「調整排程設定」。
下列操作說明將說明如何為 MIG 建立資源調度排程。
主控台
gcloud
如要為沒有現有自動調度資源政策的 MIG 新增調度資源排程,請使用
gcloud compute instance-groups managed set-autoscaling
指令。gcloud compute instance-groups managed set-autoscaling MIG_NAME \ [--min-num-replicas=MIN_NUM_REPLICAS] \ --max-num-replicas=MAX_NUM_REPLICAS \ --set-schedule=SCHEDULE_NAME \ --schedule-cron="CRON_EXPRESSION" \ --schedule-duration-sec=DURATION \ [--schedule-time-zone="TIME_ZONE"] \ --schedule-min-required-replicas=MIN_REQ_REPLICAS \ [--schedule-description="DESCRIPTION"] \ [--zone=ZONE | --region=REGION]
如要為具有現有自動調度資源政策的 MIG 新增調度時間表,請使用
gcloud compute instance-groups managed update-autoscaling
指令。gcloud compute instance-groups managed update-autoscaling MIG_NAME \ [--min-num-replicas=MIN_NUM_REPLICAS] \ [--max-num-replicas=MAX_NUM_REPLICAS] \ --set-schedule=SCHEDULE_NAME \ --schedule-cron="CRON_EXPRESSION" \ --schedule-duration-sec=DURATION \ [--schedule-time-zone="TIME_ZONE"] \ --schedule-min-required-replicas=MIN_REQ_REPLICAS \ [--schedule-description="DESCRIPTION"] \ [--zone=ZONE | --region=REGION]
更改下列內容:
您可以建立一次性或週期性時間表。
週期性時間表
這個指令範例會建立重複執行的時間表。這項排程指定您希望 MIG 在每週一、二、三、四和五的上午 8:30 至下午 5:00 (世界標準時間) 至少包含 10 個 VM 執行個體。這個指令也會使用
--min-num-replicas
和--max-num-replicas
旗標,將所選 MIG 所有自動調度資源信號的執行個體數量下限更新為 0,上限更新為 30。這個指令會假設您有名為example-mig
的現有 MIG,以及現有的自動調度資源政策。gcloud compute instance-groups managed update-autoscaling example-mig \ --min-num-replicas=0 \ --max-num-replicas=30 \ --set-schedule=workday-capacity \ --schedule-cron="30 8 * * Mon-Fri" \ --schedule-duration-sec=30600 \ --schedule-min-required-replicas=10 \ --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
一次性排程
這個指令範例會建立只執行一次的時間表。這項排程指定您希望 MIG 在 2030 年 1 月 30 日全天,都包含至少 30 個 VM 執行個體 (以
America/New_York
時區為準)。這項指令假設您已有一個名為example-mig
的 MIG,位於us-east1-b
中,且已有自動調度資源政策。gcloud compute instance-groups managed update-autoscaling example-mig \ --set-schedule=example-onetime-schedule \ --schedule-cron="0 0 30 1 * 2030" \ --schedule-duration-sec=86400 \ --schedule-time-zone="America/New_York" \ --schedule-min-required-replicas=30 \ --schedule-description="Schedule a minimum of 30 VMs all day for January 30, 2030" \ --zone=us-east1-b
Terraform
如要為 MIG 新增資源調度排程,請使用
google_compute_autoscaler
資源。如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要為 MIG 建立具有資源調度排程的自動調度器,請使用區域 MIG 的
autoscalers.insert
方法,或區域 MIG 的regionAutoscalers.insert
方法。如要為沒有現有自動調度資源政策的區域 MIG 建立排程,請發出下列呼叫:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers/ { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "minNumReplicas": MIN_NUM_REPLICAS, "maxNumReplicas": MAX_NUM_REPLICAS, "scalingSchedules": { "SCHEDULE_NAME": { "minRequiredReplicas": MIN_REQ_REPLICAS, "schedule": "CRON_EXPRESSION", "timeZone": "TIME_ZONE", "durationSec": DURATION, "description": "DESCRIPTION" }, ... } } }
如要為具有現有自動調度資源政策的 MIG 建立排程,請使用區域性 MIG 的
autoscalers.patch
方法,或區域 MIG 的regionAutoscalers.patch
方法。舉例來說,如要為現有自動調度資源政策的區域 MIG 建立排程,請發出下列呼叫:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "minNumReplicas": MIN_NUM_REPLICAS, "maxNumReplicas": MAX_NUM_REPLICAS, "scalingSchedules": { "SCHEDULE_NAME": { "minRequiredReplicas": MIN_REQ_REPLICAS, "schedule": "CRON_EXPRESSION", "timeZone": "TIME_ZONE", "durationSec": DURATION, "description": "DESCRIPTION" }, ... } } }
更改下列內容:
您可以建立一次性或週期性時間表。
週期性時間表
這個 API 呼叫範例會建立重複的時間表。 這項排程指定您希望區域 MIG 在每週一、二、三、四和五的上午 8:30 至下午 5:00 (世界標準時間) 至少包含 10 個 VM 執行個體。這個 API 呼叫也會使用
minNumReplicas
和maxNumReplicas
欄位,將所選 MIG 的所有自動調度訊號,更新為執行個體數量下限為 0,執行個體數量上限為 30。這項 API 呼叫假設您有名為example-project
的現有專案,其中包含位於us-east1-b
的可用區 MIG,且具有名為example-autoscaler
的自動調度器,以及現有的自動調度政策。PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler { "autoscalingPolicy": { "minNumReplicas": 0, "maxNumReplicas": 30, "scalingSchedules": { "workday-capacity": { "minRequiredReplicas": 10, "schedule": "30 8 * * Mon-Fri", "durationSec": 30600, "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" } } } }
如要將這個範例用於區域 MIG,請使用
regionAutoscalers.patch
方法發出類似要求,並指定區域而非可用區。一次性排程
這個 API 呼叫範例會建立只執行一次的時間表。 這項排程指定您希望區域 MIG 在 2030 年 1 月 30 日全天,至少包含 30 個 VM 執行個體 (
America/New_York
時區)。這項 API 呼叫假設您有名為example-project
的現有專案,其中包含位於us-east1-b
的可用區 MIG,且具有名為example-autoscaler
的自動調度器,以及現有的自動調度政策。PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler { "autoscalingPolicy": { "scalingSchedules": { "example-onetime-schedule": { "minRequiredReplicas": 30, "schedule": "0 0 30 1 * 2030", "timeZone": "America/New_York", "durationSec": 86400, "description": "Schedule a minimum of 30 VMs all day for January 30, 2030" } } } }
如要將這個範例用於區域 MIG,請使用
regionAutoscalers.patch
方法發出類似要求,並指定區域而非可用區。多個時間表
這個 API 呼叫範例會使用
autoscalers.patch
方法,在單一呼叫中為兩個時間表 (workday-capacity
和january-30-2030-schedule
) 建立時間表。這項 API 呼叫假設您有名為example-project
的現有專案,其中包含位於us-east1-b
的區域 MIG,且該 MIG 有名為example-autoscaler
的自動調度器,以及現有的自動調度政策。PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler { "autoscalingPolicy": { "scalingSchedules": { "workday-capacity": { "minRequiredReplicas": 10, "schedule": "30 8 * * Mon-Fri", "durationSec": 30600, "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" }, "january-30-2030-schedule": { "minRequiredReplicas": 30, "schedule": "0 0 30 1 * 2030", "timeZone": "America/New_York", "durationSec": 86400, "description": "Schedule a minimum of 30 VMs all day for January 30, 2030" } } } }
如要將這個範例用於區域 MIG,請使用
regionAutoscalers.patch
方法發出類似要求,並指定區域而非可用區。建立時間表後,可能需要稍候幾分鐘,系統才會顯示狀態資訊。
列出資源調度時間表
您可以查看 MIG 的排程清單。清單會顯示每個排程的設定和狀態資訊。
主控台
完成後,按一下「完成」即可關閉清單。
gcloud
如要取得 MIG 的詳細資料,包括其自動調度時間表的設定和狀態,請使用
gcloud compute instance-groups managed describe
指令。gcloud compute instance-groups managed describe MIG_NAME \ [--zone=ZONE | --region=REGION]
更改下列內容:
輸出內容會列出 MIG 的所有縮放時間表,如下例所示。
... autoscalingPolicy: ... maxNumReplicas: 30 minNumReplicas: 0 ... scalingSchedules: example-onetime-schedule: description: Schedule a minimum of 30 VMs all day for January 30, 2030 disabled: false durationSec: 86400 minRequiredReplicas: 30 schedule: 0 0 30 1 * 2030 timeZone: America/New_York workday-capacity: description: Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC disabled: false durationSec: 30600 minRequiredReplicas: 10 schedule: 30 8 * * Mon-Fri timeZone: UTC ... scheduledScalingStatus: example-onetime-schedule: state: READY nextStartTime: '2030-01-30T00:00:00.000-05:00' lastStartTime: '' workday-capacity: state: READY nextStartTime: '2020-11-04T08:30:00.000-00:00' lastStartTime: '2020-11-03T08:30:00.000-00:00' ...
REST
如要取得自動配置器的詳細資料,包括資源調度時間表的設定和狀態,請使用區域 MIG 的
autoscalers.get
方法,或區域 MIG 的regionAutoscalers.get
方法。舉例來說,如要列出具有現有自動調度資源政策的區域 MIG 排程,請發出下列呼叫:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME
更改下列內容:
輸出內容會列出 MIG 的所有縮放時間表,如下例所示。
{ ... "autoscalingPolicy": { ... "minNumReplicas": 0, "maxNumReplicas": 30, ... "scalingSchedules": { "example-onetime-schedule": { "minRequiredReplicas": 30, "schedule": "0 0 30 1 * 2030", "timeZone": "America/New_York", "durationSec": 86400, "description": "Schedule a minimum of 30 VMs all day for January 30, 2030", "disabled": false }, "workday-capacity": { "minRequiredReplicas": 10, "schedule": "30 8 * * Mon-Fri", "timeZone": "", "durationSec": 30600, "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC", "disabled": false }, ... } }, "scheduledScalingStatus": { "example-onetime-schedule": { "state": "READY", "nextStartTime": "2030-01-30T00:00:00.000-05:00", "lastStartTime": '' }, "workday-capacity": { "state": "READY", "nextStartTime": "2020-11-04T08:30:00.000", "lastStartTime": "2020-11-03T08:30:00.000" }, ... }, ... }
編輯資源調度時間表
您可以編輯現有縮放時間表,變更時間表的任何設定,但無法變更時間表名稱。您也可以停用或重新啟用縮放時間表。
主控台
變更可能需要幾分鐘才會生效。 如要監控時間表的狀態,請按一下「縮放時間表」窗格頂端的「重新整理」
。完成後,按一下「完成」即可關閉清單。
gcloud
如要更新現有的縮放排程,請使用
gcloud compute instance-groups managed update-autoscaling
指令。使用--update-schedule
標記指出要更新的時間表名稱。視需要為變更加入其他旗標。gcloud compute instance-groups managed update-autoscaling MIG_NAME \ --update-schedule=SCHEDULE_NAME \ [--schedule-cron="CRON_EXPRESSION"] \ [--schedule-duration-sec=DURATION] \ [--schedule-time-zone="TIME_ZONE"] \ [--schedule-min-required-replicas=MIN_REQ_REPLICAS] \ [--schedule-description="DESCRIPTION"] \ [--zone=ZONE | --region=REGION]
更改下列內容:
REST
如要更新 MIG 的現有資源調度排程,請使用區域 MIG 的
autoscalers.patch
方法,或區域 MIG 的regionAutoscalers.patch
方法。舉例來說,如要編輯現有自動調度資源政策的區域 MIG 排程,請發出下列呼叫:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "scalingSchedules": { "SCHEDULE_NAME": { "minRequiredReplicas": MIN_REQ_REPLICAS, "schedule": "CRON_EXPRESSION", "timeZone": "TIME_ZONE", "durationSec": DURATION, "description": "DESCRIPTION" }, ... } } }
更改下列內容:
停用及重新啟用資源調度排程
系統預設會啟用縮放時間表。如要避免時間表處於啟用狀態,但想儲存其設定,請停用時間表。如要再次使用已停用的時間表,請重新啟用。
如果不需要儲存時間表,或已達到這個 MIG 的 128 個時間表上限,請刪除時間表。如要停用 MIG 的自動調度資源功能,請關閉自動調度資源功能。
主控台
變更可能需要幾分鐘才會生效。 如要監控時間表的狀態,請按一下「縮放時間表」窗格頂端的「重新整理」
。完成後,按一下「完成」即可關閉清單。
gcloud
如要停用或重新啟用縮放排程,請使用
gcloud compute instance-groups managed update-autoscaling
指令。停用資源調度時間表
如要停用縮放排程,請使用
--disable-schedule
旗標。gcloud compute instance-groups managed update-autoscaling MIG_NAME \ --disable-schedule=SCHEDULE_NAME \ [--zone=ZONE | --region=REGION]
更改下列內容:
重新啟用資源調度時間表
如要重新啟用縮放排程,請使用
--enable-schedule
旗標。gcloud compute instance-groups managed update-autoscaling MIG_NAME \ --enable-schedule=SCHEDULE_NAME \ [--zone=ZONE | --region=REGION]
更改下列內容:
REST
如要停用或重新啟用 MIG 的資源調度排程,請使用區域 MIG 的
autoscalers.patch
方法,或是地區 MIG 的regionAutoscalers.patch
方法。停用資源調度時間表
針對要停用的每個資源調度時間表,將
disabled
欄位設為true
。 舉例來說,如果區域 MIG 具有現有的自動調度資源政策,請發出下列呼叫來停用排程:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "scalingSchedules": { "SCHEDULE_NAME": { "disabled": true }, ... } } }
更改下列內容:
重新啟用資源調度時間表
針對要重新啟用的每個自動調度時間表,將
disabled
欄位設為false
。舉例來說,如要重新啟用具有現有自動調度資源政策的區域 MIG 排程,請發出下列呼叫:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "scalingSchedules": { "SCHEDULE_NAME": { "disabled": false }, ... } } }
更改下列內容:
刪除資源調度時間表
如要從 MIG 移除資源調度時間表,請刪除時間表。 刪除不再需要的排程,例如狀態為
OBSOLETE
的排程。自動調度資源政策一律至少要有一個調度信號。如果沒有其他自動調度資源信號,您就必須刪除整個自動調度資源政策,才能刪除所有調度資源時間表。如要刪除所有資源調度時間表,但保留自動調度資源政策,請先新增至少一個資源調度信號,再刪除所有時間表。
如要避免時間表啟用,並將其儲存以供日後使用,請停用時間表。如要刪除 MIG 的自動調度資源設定,請刪除自動調度器。
主控台
變更可能需要幾分鐘才會生效。 如要監控時間表的狀態,請按一下「縮放時間表」窗格頂端的「重新整理」
。完成後,按一下「完成」即可關閉清單。
gcloud
如要刪除縮放排程,請使用
gcloud compute instance-groups managed update-autoscaling
指令搭配--remove-schedule
旗標。gcloud compute instance-groups managed update-autoscaling MIG_NAME \ --remove-schedule=SCHEDULE_NAME \ [--zone=ZONE | --region=REGION]
更改下列內容:
REST
如要刪除 MIG 的資源調度排程,請使用區域 MIG 的
autoscalers.patch
方法,或是地區 MIG 的regionAutoscalers.patch
方法。針對要刪除的每個資源調度時間表, 將時間表設定設為null
舉例來說,如要刪除具有現有自動調度資源政策的區域 MIG 排程,請發出下列呼叫:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "scalingSchedules": { "SCHEDULE_NAME": null ... } } }
更改下列內容:
概念
本節說明建立及使用縮放時間表相關概念,包括時間表設定和運作方式詳細資料。
資源調度時間表設定
建立及修改 MIG 的資源調度排程時,每個資源調度排程都包含下列設定:
使用 Google Cloud CLI 或 REST 時,您必須使用 Cron 運算式設定縮放排程的開始時間和重複週期。不過,使用 Google Cloud 控制台時,您可以透過 Cron 運算式或下列設定,設定排程的開始時間和重複週期:
Cron 運算式
您可以使用 Cron 運算式設定縮放排程的開始時間和重複週期。Cron 是以時間為準的工作排程器,最初用於類似 Unix 的電腦作業系統。
語法
Cron 運算式是由五或六個以空白字元分隔的欄位組成的字串。下表定義了 cron 運算式的欄位,以及每個欄位的可能值。
分鐘 小時 日 月 星期幾 年 (選填) 0-59 0-23 1-31 1-12 (1 月至 12 月)
其中1
=Jan
,2
=Feb
, ...12
=Dec
0-6 (週日至週六) 或 1-7 (週一至週日)
其中0
=Sun
,1
=Mon
, ...6
=Sat
,7
=Sun
2000 年至 2036 年
或每年 (*
),如果未提供除了使用這些值,Cron 運算式中的每個欄位也可以使用特殊字元:
特殊字元 意義 範例 *
不限 如果月份欄位、星期幾欄位和年份欄位 (如有) 都設為 *
,則時間表會每天啟動。-
range 如果星期幾欄位設為 1-5
或Mon-Fri
,則排程會在每週一到週五啟動。,
list 如果將「月份」欄位設為 5,7,9
或May,Jul,Sep
,則排程會在每年 5 月、7 月和 9 月開始。/
步驟 如果將「月份」欄位設為 */3
,排程會在第一個月份開始,之後每 3 個月執行一次:1 月、4 月、7 月和 10 月。撰寫 cron 運算式時,請注意下列事項:
週期性時間表與一次性時間表
視您編寫 cron 運算式的方式而定,排程可能會執行一次或定期重複執行。如要建立只執行一次的排程,您必須指定年份欄位。舉例來說,cron 運算式
0 0 30 1 * 2030
會設定排程,在 2030 年 1 月 30 日午夜啟動一次。如要建立重複排程,請使用特殊字元說明排程的重複時間。舉例來說,cron 運算式30 8 * * Mon-Fri
會設定排程,在每週一、二、三、四、五的上午 8:30 開始執行。排程狀態資訊
列出縮放排程,查看排程狀態。縮放排程具有下列狀態資訊:
排程重疊
視開始時間、週期、時間長度和時區而定,兩個以上的縮放時間表可能會重疊。如果啟用多個排程,自動調度器會從所有啟用的資源調度排程中,選取所需 VM 執行個體數量最多的排程。這有助於確保容量充足,隨時滿足任何有效排程的需求。舉例來說,假設您有每天上午 8 點到 10 點的週期性排程,至少需要 10 個 VM,但也有至少需要 20 個 VM 的一次性全天排程,則自動調整功能會在當天將 MIG 擴充至至少 20 個 VM。如果您有規律的容量需求,但有時需要更多容量來處理一次性事件,這項功能就非常實用。這樣一來,您就能排定容量,不必擔心其他 VM 需求較小的排程會覆寫排定的容量。
此外,自動調度器一律會提供任何有效自動調度信號所需的最大 VM 執行個體數量。詳情請參閱「使用含有多項信號的自動調度資源政策」。
日光節約時間
日光節約時間 (DST) 的詳細資料會因縮放時間表的位置型 IANA 時區而異。如果排程的時區會實施日光節約時間,排程的開始時間會自動調整,與所選位置的時間保持同步。舉例來說,如果您建立的擴縮排程在時區
America/New_York
中每天早上 7 點開始,則這個排程會在紐約時間早上 7 點開始,並視情況使用東部夏令時間或東部標準時間。縮放時間表一律會在您設定的整個期間執行,但如果日光節約時間切換,開始和結束時間可能會略有不同。這是因為日光節約時間切換有轉換期,也就是日光節約時間第一天會跳過的時間範圍,以及日光節約時間最後一天會出現兩次的時間範圍。舉例來說,如果時區的 DST 在凌晨 2 點開始,且轉換時間為 1 小時,則時鐘會從凌晨 1:59:59 變更為凌晨 3 點,因此會略過凌晨 2 點到 2:59:59 的時間範圍。如果該時區的日光節約時間在凌晨 2 點結束,時鐘會從凌晨 2:59:59 變更為凌晨 2 點,因此凌晨 2 點到凌晨 2:59:59 的時間範圍會重複。下列陳述假設排程的時區使用 1 小時的日光節約時間轉換。
在日光節約時間的第一天 (跳過 1 小時),縮放時間表會有以下變更:
在日光節約時間的最後一天 (時間會重複 1 小時),縮放時間表會有以下變更:
大多數採用 DST 的時區都會使用 1 小時的轉換期。不過,如果排程時區使用不同的轉換期 (例如
Australia/Lord_Howe
時區,轉換期為 30 分鐘),則會出現相同行為。只要將「1 hour」換成相關的日光節約時間轉換時間即可。後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-10 (世界標準時間)。
-