排程型自動調度資源功能可讓您在預期負載出現前預先排定容量,提高工作負載的可用性。如果您在代管執行個體群組 (MIG) 執行工作負載,可以針對週期性負載模式和一次性事件,排定所需的虛擬機器 (VM) 執行個體數量。如果工作負載需要較長的初始化時間,且您希望在預期的負載高峰前水平擴展,請使用自動調度資源排程。
本文說明如何建立、列出、編輯、停用、重新啟用及刪除現有 MIG 的資源調度排程。如要進一步瞭解 MIG 和自動調度資源,請參閱「建立代管執行個體群組」和「自動調度執行個體群組資源」。
事前準備
- 瞭解自動配置器的基本概念。
-
如果尚未設定驗證,請先完成設定。驗證機制會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用的是本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用的是 Cloud Shell,則不必執行這項操作。
如果系統傳回驗證錯誤,且您使用的是外部識別資訊提供者 (IdP),請確認您已使用聯合身分登入 gcloud CLI。
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「為本機開發環境設定驗證機制」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
限制
擴充排程受所有自動配置器的限制以及下列限制:
- 每個 MIG 最多可有 128 個調度排程。如要緩解這項限制,請刪除狀態為
OBSOLETE且不打算再次執行的資源調度排程。 - 縮放排程的時間長度至少須為 5 分鐘。
- 有狀態 MIG 不支援自動調度資源時間表。如要排定有狀態 MIG 的啟動和停止作業,可以使用外部自動化工作流程。例如,使用 Cloud Scheduler 觸發 Cloud Run functions,呼叫 MIG 專屬的
stopInstances和startInstances方法。
建立資源調度時間表
每個 MIG 最多可建立 128 個資源調度排程。詳情請參閱「調整排程設定」。
以下說明如何建立 MIG 的資源調度排程。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱。
按一下 [編輯]。
按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。
根據預設,自動調度資源設定會依據 CPU 使用率新增信號。如果只想根據排程調度 MIG 資源,請在新增排程後刪除預設的 CPU 使用率指標。
在「Autoscaling schedules」(自動調度資源排程) 專區,按一下「Manage」(管理)。
在「Scaling schedules」(調度資源排程) 窗格中,針對要新增的每個調度資源排程執行下列操作:
- 按一下「建立排程」。
- 在「建立縮放排程」窗格中,輸入名稱。
- 選用:輸入說明。
- 輸入排程運作時提供的所需執行個體數量下限。
如要指定縮放排程的開始時間和週期,可以使用預設介面。您也可以使用 Cron 運算式,設定開始時間和週期較為複雜的排程。請根據您要設定的方式,按照下列步驟操作:
預設介面
在「Start time」(開始時間) 欄位中,以
HH:MM AM/PM格式輸入開始時間,例如09:00 AM。按一下「時區」欄位。選取國家/地區,然後選取時區。
您可以使用「Search by country」(依國家/地區搜尋) 欄位,找出國家/地區或時區。例如,輸入
Australia/australian central即可找出澳洲的中部標準時區。在「Duration」(時間長度) 和「Unit of time」(時間單位) 欄位中,輸入時間長度並選取對應的時間單位。
在「Recurrence」(週期) 欄位中,選取排程的重複頻率。
你可以選擇「一次」或「每天」。如要指定排程僅在特定日期重複,請選擇「每週」或「每月」。選取其中一個選項後,請使用其他清單選取排程開始的星期幾或月份。
Cron 運算式
如要啟用,請按一下「使用 CRON 運算式」切換鈕。
在「CRON expression」(CRON 運算式) 欄位中,輸入指定開始時間和週期性的 cron 運算式。
按一下「時區」欄位。選取國家/地區,然後選取時區。
您可以使用「Search by country」(依國家/地區搜尋) 欄位,找出國家/地區或時區。例如,輸入
Australia/australian central即可找出澳洲的中部標準時區。在「Duration」(時間長度) 和「Unit of time」(時間單位) 欄位中,輸入時間長度並選取對應的時間單位。
按一下 [儲存]。「Scaling schedules」(資源調度排程) 窗格會列出您建立的排程。
時間表建立完畢後,請按一下「完成」。
系統會儲存時間表並套用至 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_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 所在的可用區或區域。
您可以建立只執行一次或定期重複執行的排程。
重複排程
這個範例指令會建立重複的時間表。這項排程指定 MIG 在每週一、週二、週三、週四和週五上午 8:30 至下午 5:00 (世界標準時間) 期間,至少要有 10 個 VM 執行個體。這個指令也會使用 --min-num-replicas 和 --max-num-replicas 旗標,將所選 MIG 所有自動調度資源信號的執行個體數量下限更新為 0,執行個體數量上限更新為 30。這個指令假設您已有一個名為 example-mig 的 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 日全天,針對 America/New_York 時區,至少包含 30 個 VM 執行個體。這個指令假設您已有一個名為 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"
},
...
}
}
}
更改下列內容:
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:選用:新調度資源排程的說明。
您可以建立只執行一次或定期重複執行的排程。
重複排程
這個 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 日全天,針對 America/New_York 時區包含至少 30 個 VM 執行個體。這項 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,以及名為 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 的排程清單。清單會顯示每個排程的設定和狀態資訊。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱。
在「Overview」(總覽) 分頁中,「Autoscaling」(自動調度資源) 圖塊會顯示 MIG 中設定的信號。
將滑鼠游標懸停在信號資訊旁的 圖示上,然後按一下「Manage」(管理)。
「Scaling schedules」(調整調度資源排程) 窗格會顯示現有的調整調度資源排程清單。
gcloud
如要取得 MIG 的詳細資料,包括其調度資源時間表的設定和狀態,請使用 gcloud compute instance-groups managed describe 指令。
gcloud compute instance-groups managed describe MIG_NAME \
[--zone=ZONE | --region=REGION]
更改下列內容:
MIG_NAME:現有自動調度資源政策的 MIG 名稱。ZONE或REGION:選用:MIG 所在的可用區或區域。
輸出內容會列出 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_NAME
更改下列內容:
PROJECT:您的專案 ID。ZONE:MIG 所在的可用區。AUTOSCALER_NAME:現有自動配置器的名稱。通常與 MIG 名稱相同。
輸出內容會列出 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"
},
...
},
...
}
編輯資源調度排程
您可以編輯現有的調度資源時間表,變更任何設定,但時間表名稱除外。您也可以停用或重新啟用縮放排程。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱。
按一下 [編輯]。
按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
在「Autoscaling schedules」(自動調度資源排程) 專區,按一下「Manage」(管理)。
「Scaling Schedules」(調整調度資源排程) 窗格會顯示現有調整調度資源排程的清單。
找出要編輯的調度資源時間表,勾選對應的核取方塊。
按一下「Scaling Schedules」(調整調度資源時程) 窗格頂端的「Edit」(編輯)。
在「Edit scaling schedule」(編輯調度資源排程) 窗格中,修改要變更的欄位。如要進一步瞭解各個欄位,請參閱「建立調度資源時間表」。
完成後,請按一下「儲存」。
變更可能需要幾分鐘才會生效。 如要監控排程狀態,請按一下「Scaling Schedules」(調整調度資源排程) 窗格頂端的 「Refresh」(重新整理)。
按一下「Done」(完成),關閉「Scaling schedules」(調度資源時間表) 窗格。
系統會儲存排程變更,並套用至 MIG。
點按「儲存」,離開編輯頁面。
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]
更改下列內容:
MIG_NAME:現有資源調度排程的 MIG 名稱。SCHEDULE_NAME:現有調度資源時間表的名稱。CRON_EXPRESSION:選用:這項排程的新開始時間和週期,格式為 cron 運算式。DURATION:選用:這項時間表的有效時間長度,以秒為單位。TIME_ZONE:選用:排程開始時間的新 IANA 時區,例如Europe/Paris。預設值為UTC。MIN_REQ_REPLICAS:選用。這項排程啟用時,提供的所需執行個體數量下限新值。DESCRIPTION:選用:擴充排程的新說明。ZONE或REGION:選用:MIG 所在的可用區或區域。
REST
如要更新 MIG 現有的資源調度排程,請對可用區 MIG 使用 autoscalers.patch 方法,或對區域 MIG 使用 regionAutoscalers.patch 方法。
舉例來說,如要編輯可用區 MIG 的排程,且該 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"
},
...
}
}
}
更改下列內容:
PROJECT:您的專案 ID。ZONE:MIG 所在的可用區。AUTOSCALER_NAME:現有自動配置器的名稱。通常與 MIG 名稱相同。SCHEDULE_NAME:現有調度排程的名稱。MIN_REQ_REPLICAS:選用。這項排程啟用時,提供的所需執行個體數量下限新值。CRON_EXPRESSION:選用:這項排程的新開始時間和週期,格式為 cron 運算式。TIME_ZONE:選用:排程開始時間的新 IANA 時區,例如Europe/Paris。預設值為UTC。DURATION:選用:這項時間表的有效時間長度,以秒為單位。DESCRIPTION:選用:擴充排程的新說明。
停用並重新啟用資源調度排程
擴充排程預設為啟用。如要避免時間表啟用,但想儲存其設定,請停用時間表。如要再次使用已停用的時間表,請重新啟用。
如果不需要儲存排程,或已達到這個 MIG 的 128 個排程上限,請刪除排程。如要停用 MIG 的自動調度資源功能,請關閉自動調度資源功能。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱。
按一下 [編輯]。
按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
在「Autoscaling schedules」(自動調度資源排程) 專區,按一下「Manage」(管理)。
「Scaling Schedules」(調整調度資源排程) 窗格會顯示現有調整調度資源排程的清單。
找出要停用或啟用的資源調度排程,然後勾選對應的核取方塊。
如要停用所選排程,請按照下列步驟操作:
- 按一下「Scaling Schedules」(資源調度排程) 窗格頂端的「Disable」(停用)。
- 在「停用排程」對話方塊中,按一下「停用」。
如要啟用所選排程,請按照下列步驟操作:
- 按一下「Scaling Schedules」(調整調度資源時程) 窗格頂端的 「Enable」(啟用)。
- 在「啟用排程」對話方塊中,按一下「啟用」。
變更可能需要幾分鐘才會生效。 如要監控排程狀態,請按一下「Scaling Schedules」(調整調度資源排程) 窗格頂端的 「Refresh」(重新整理)。
按一下「Done」(完成),關閉「Scaling schedules」(調度資源時間表) 窗格。
系統會儲存排程變更,並套用至 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]
更改下列內容:
MIG_NAME:現有資源調度排程的 MIG 名稱。SCHEDULE_NAME:要停用的調度資源排程名稱。ZONE或REGION:選用:MIG 所在的可用區或區域。
重新啟用資源調度時間表
如要重新啟用資源調度排程,請使用 --enable-schedule 旗標。
gcloud compute instance-groups managed update-autoscaling MIG_NAME \
--enable-schedule=SCHEDULE_NAME \
[--zone=ZONE | --region=REGION]
更改下列內容:
MIG_NAME:現有資源調度排程的 MIG 名稱。SCHEDULE_NAME:要重新啟用的資源調度排程名稱。ZONE或REGION:選用:MIG 所在的可用區或區域。
REST
如要停用或重新啟用 MIG 的資源調度排程,請對可用區 MIG 使用 autoscalers.patch 方法,或對區域 MIG 使用 regionAutoscalers.patch 方法。
停用資源調度排程
針對要停用的每個資源調度時間表,將 disabled 欄位設為 true。舉例來說,如要停用可用區 MIG 的排程,且該 MIG 已有自動調度資源政策,請發出下列呼叫:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME
{
"autoscalingPolicy": {
"scalingSchedules": {
"SCHEDULE_NAME": {
"disabled": true
},
...
}
}
}
更改下列內容:
PROJECT:您的專案 ID。ZONE:MIG 所在的可用區。AUTOSCALER_NAME:現有自動配置器的名稱。通常與 MIG 名稱相同。SCHEDULE_NAME:要停用的調度資源排程名稱。
重新啟用資源調度排程
針對要重新啟用的每個調度資源排程,將 disabled 欄位設為 false。舉例來說,如要為已有自動調度資源政策的可用區 MIG 重新啟用排程,請發出下列呼叫:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME
{
"autoscalingPolicy": {
"scalingSchedules": {
"SCHEDULE_NAME": {
"disabled": false
},
...
}
}
}
更改下列內容:
PROJECT:您的專案 ID。ZONE:MIG 所在的可用區。AUTOSCALER_NAME:現有自動配置器的名稱。通常與 MIG 名稱相同。SCHEDULE_NAME:要重新啟用的資源調度排程名稱。
刪除資源調度排程
刪除 MIG 的資源調度排程,即可將其移除。刪除不再需要的排程,例如OBSOLETE狀態的排程。
自動調度資源政策一律須有至少一個調度信號。如果沒有其他自動調度資源信號,則必須刪除整個自動調度資源政策,才能刪除所有調度排程。如要刪除所有資源調度排程,但保留自動調度資源政策,則必須先新增至少一個資源調度信號,才能刪除所有排程。
如要避免時間表生效,並儲存時間表供日後使用,請停用時間表。如要刪除 MIG 的自動調度資源設定,請刪除自動配置器。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
在清單中按一下 MIG 名稱。
按一下 [編輯]。
按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
在「Autoscaling schedules」(自動調度資源排程) 專區,按一下「Manage」(管理)。
「Scaling Schedules」(調整調度資源排程) 窗格會顯示現有調整調度資源排程的清單。
- 找出要刪除的資源調度時間表,然後勾選對應的核取方塊。
- 按一下「Scaling Schedules」(調整調度資源時程) 窗格頂端的 「Delete」(刪除)。
在「Delete schedules」(刪除排程) 對話方塊中輸入
delete,然後按一下「Delete」(刪除)。變更可能需要幾分鐘才會生效。 如要監控排程狀態,請按一下「Scaling Schedules」(調整調度資源排程) 窗格頂端的 「Refresh」(重新整理)。
按一下「Done」(完成),關閉「Scaling schedules」(調度資源時間表) 窗格。
系統會儲存排程變更,並套用至 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]
更改下列內容:
MIG_NAME:現有資源調度排程的 MIG 名稱。SCHEDULE_NAME:要刪除的調度資源排程名稱。ZONE或REGION:選用:MIG 所在的可用區或區域。
REST
如要刪除 MIG 的資源調度排程,請對可用區 MIG 使用 autoscalers.patch 方法,或對區域 MIG 使用 regionAutoscalers.patch 方法。針對要刪除的每個資源調度時間表,將時間表設定設為 null
舉例來說,如要刪除可用區 MIG 的排程,且該 MIG 已有自動調度資源政策,請發出下列呼叫:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME
{
"autoscalingPolicy": {
"scalingSchedules": {
"SCHEDULE_NAME": null
...
}
}
}
更改下列內容:
PROJECT:您的專案 ID。ZONE:MIG 所在的可用區。AUTOSCALER_NAME:現有自動配置器的名稱。通常與 MIG 名稱相同。SCHEDULE_NAME:要刪除的調度資源排程名稱。
概念
本節說明與建立及使用資源調度排程相關的概念,包括排程設定和運作方式。
資源調度排程設定
建立及修改 MIG 的資源調度排程時,每個資源調度排程都包含下列設定:
所需執行個體數量下限:這個擴充排程啟用時,MIG 中所需的 VM 數量。
這個排程運作時,MIG 至少會有這個數量的 VM,但實際數量可能更多,取決於其他自動調度資源設定。此外,MIG 大小一律受限於 MIG 自動調度資源設定中,所設的執行個體數量下限和上限。
時區:根據位置設定的 IANA 時區,用於解讀排程的開始時間。
IANA 時區資料庫定義了可用值清單,例如
Europe/Paris。如未提供時區,系統預設會使用UTC。部分 IANA 時區會實施日光節約時間。如要瞭解日光節約時間對擴充排程的影響,請參閱「日光節約時間」。時間長度:您希望調度資源排程生效的時間長度。
自開始時間起,調度資源時間表會在設定的時間長度內生效。最短時間為 5 分鐘。在這段期間,自動配置器會調度 MIG 資源,確保 VM 數量至少達到排程所需執行個體定義的數量。指定時間過後,如果不再需要目前的容量,自動配置器會在穩定期間後,按照設定的縮減控制項開始移除 VM 執行個體。
資源調度時間表是雙向的。除非您指定其他自動調度資源信號,否則 VM 會在您指定的停止時間移除,且群組大小會縮減至您設定的群組大小下限。
使用 Google Cloud CLI 或 REST 時,必須透過 cron 運算式設定縮放排程的開始時間和週期。不過,使用 Google Cloud 控制台時,您可以使用 Cron 運算式或下列設定,設定排程的開始時間和週期:
開始時間:您希望調整調度資源排程生效的時間。
在開始時間,只要 MIG 大小低於排程所需的執行個體,縮放排程就會開始建立 VM。請設定開始時間,讓新的 VM 有足夠時間啟動及初始化。舉例來說,如果工作負載從 VM 建立到開始提供服務需要 10 分鐘,請將開始時間設為比 VM 準備就緒時間早 10 分鐘。
重複:是否重複執行調度資源排程,以及重複頻率,定義如下:
- 一次:只在所選日期開始執行一次。
- 每天:每天開始的重複時間表。
- 每週:每週在選定的星期幾開始重複排程,例如每週一至週五。
- 每月:每月在指定日期 (例如每月第一天) 開始執行的重複排程。如果選擇 29、30 或 31 日,排程只會在有這些日期的月份觸發。
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,則排程會在第 1 個月開始,之後每 3 個月執行一次:1 月、4 月、7 月和 10 月。 |
編寫 cron 運算式時,請注意下列事項:
- 空格用於分隔 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 點開始。
重複排程與一次性排程
視您編寫 cron 運算式的方式而定,排程可能會執行一次或定期重複。如要建立只執行一次的時間表,必須指定年份欄位。舉例來說,Cron 運算式 0 0 30 1 * 2030 會設定排程,只在 2030 年 1 月 30 日午夜啟動一次。如要建立重複的時間表,請使用特殊字元描述時間表的重複時間。舉例來說,cron 運算式 30 8 * * Mon-Fri 會設定排程,在每週一、週二、週三、週四和週五上午 8:30 啟動。
排程狀態資訊
列出資源調度排程,查看其狀態。調度資源排程包含下列狀態資訊:
- 狀態 (
state):調整調度排程的目前狀態,以以下其中一種狀態表示:- 就緒 (
READY):時間表已就緒,但尚未啟用。 自動配置器正在等待這項排程的下一次執行時間。 - 有效 (
ACTIVE):這個時間表有效。自動配置器會嘗試為這個 MIG 提供至少達到這項排程指定數量的執行個體。 - Obsolete (
OBSOLETE):這個排程已過期,不會再次啟用。由於日後不會再發生,自動配置器會忽略這個排程。 - 已停用 (
DISABLED):這個排程已手動停用,因此無法啟用。自動配置器會忽略這項排程,直到重新啟用為止。
- 就緒 (
- 上次發生時間 (
lastStartTime):這個調度資源排程上次生效的時間戳記。這是上次啟用的實際日期和時間。舉例來說,假設您有一個已停用的擴充排程,每天上午 10 點開始,持續 2 小時,而您在今天上午 11 點重新啟用該排程,則lastStartTime為今天上午 11 點。 - 下次執行時間 (
nextStartTime):下次排定啟用這個排程的時間戳記。
時間表重疊
視開始時間、週期、持續時間和時區而定,兩個以上的縮放排程可能會重疊。如果有多個排程處於啟用狀態,自動配置器會從所有啟用中的調度資源排程,使用所需 VM 執行個體數量最多的排程。這有助於確保隨時有足夠的容量,可滿足任何有效排程的需求。舉例來說,假設您有一個每天上午 8 點到 10 點重複執行的排程,需要至少 10 個 VM,但同時也有一個一次性的全天排程,需要至少 20 個 VM,則自動配置器會在當天將 MIG 擴充至至少 20 個 VM。如果您有定期、週期性的容量需求,但有時需要更多容量來處理一次性事件,這項功能就非常實用。這樣一來,您就能安排容量,不必擔心其他 VM 需求較小的排程會覆寫容量。
此外,自動配置器一律會提供任何有效自動調度資源信號所需的最大 VM 執行個體數量。詳情請參閱「使用具有多個信號的自動調度資源政策」。
日光節約時間
日光節約時間 (DST) 的詳細資料會因擴充排程的位置型 IANA 時區而異。如果排程的時區採用日光節約時間,排程的開始時間會自動調整,與所選位置的時間保持同步。舉例來說,如果您建立的調度資源排程在每天上午 7 點開始,時區為 America/New_York,則這項排程會在紐約時間上午 7 點開始,並根據情況使用東部夏令時間或東部標準時間。
縮放排程一律會按照您設定的完整時間長度執行,但在夏令時間切換當天,開始和結束時間可能會略有不同。這是因為夏令時間切換有轉換期,也就是夏令時間第一天會跳過的時間範圍,以及夏令時間最後一天會出現兩次的時間範圍。舉例來說,如果所在時區的夏令時間從凌晨 2 點開始,且轉換時間為 1 小時,則時鐘會從凌晨 1:59:59 變更為凌晨 3 點,因此會略過凌晨 2 點到凌晨 2:59:59 的時間範圍。如果該時區的夏令時間在凌晨 2 點結束,時鐘會從凌晨 2:59:59 變更為凌晨 2 點,因此凌晨 2 點到凌晨 2:59:59 的時間範圍會重複。以下陳述式假設排程的時區採用 1 小時的日光節約時間轉換。
在日光節約時間的第一天 (跳過 1 小時),縮放排程會有以下異動:
- 在略過的小時內有效的排程仍會執行整個時間長度,但為了補償略過的小時,這些排程會比非日光節約時間轉換日的結束時間晚 1 小時結束。一般來說,時間表的結束時間是開始時間加上持續時間。不過,如果日光節約時間在時間表有效期間跳過 1 小時,且時間長度和開始時間保持不變,則該時間表的結束時間會比時間表的開始時間和時間長度總和多 1 小時。
- 如果排程設定在跳過的小時內開始,則在沒有夏令時間轉換的日子,也會比開始時間晚 1 小時開始。
在日光節約時間的最後一天 (重複 1 小時),調度資源排程會有下列異動:
- 在重複小時期間有效的排程仍會執行整個時間長度,但為了補償重複小時,這些排程會比非日光節約時間轉換日的結束時間提早 1 小時結束。一般來說,時間表的結束時間是時間表的開始時間加上時間長度。不過,如果夏令時間在時間表執行期間重複 1 小時,且時間長度和開始時間保持不變,則該時間表的結束時間會比時間表的開始時間和時間長度總和少 1 小時。
- 如果排程設定在轉換期間開始,則會在設定的時間開始,但不會在第二次重複的開始時間重新啟動。
大多數採用日光節約時間的時區,都會使用 1 小時的轉換期。不過,如果排程的時區使用不同的轉換期 (例如 Australia/Lord_Howe 時區使用 30 分鐘轉換期),則會發生相同行為。只要將「1 hour」替換為相關的日光節約時間轉換時間即可。
後續步驟
- 瞭解如何使用具有多個信號的自動調度資源政策。
- 瞭解如何管理自動配置器。
- 瞭解自動配置器制定的決策。
- 瞭解如何根據其他類型的自動調度資源信號,自動調度 MIG 資源: