依據時間表調度資源


以時間表為準的自動調度資源功能可在預期負載出現前預先排定容量,藉此提高工作負載的可用性。如果您在代管執行個體群組 (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

    1. 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.

    2. Set a default region and zone.

    Terraform

    To use the Terraform samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.

    1. Install the Google Cloud CLI.
    2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. 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.

    For more information, see Set up authentication for a local development environment.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the 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.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

限制

調度資源時間表受所有自動配置器的限制以及以下限制的限制:

  • 每個 MIG 最多可設定 128 個資源調度排程。如要降低這項限制,請刪除狀態為 OBSOLETE 且您不打算再次執行的資源調度排程。
  • 縮放時間表的時間長度下限為 5 分鐘。

建立資源調度時間表

每個 MIG 最多可建立 128 個資源調度排程。詳情請參閱「調整排程設定」。

下列操作說明將說明如何為 MIG 建立資源調度排程。

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下「Edit」(編輯)

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下方,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。如果您只想根據時間表調度 MIG,請在新增時間表後刪除預設的 CPU 使用率指標。
  5. 針對您要新增的每個縮放時間表,請執行下列操作:

    1. 展開「自動調整大小時間表」部分,按一下「管理時間表」,然後點選「建立時間表」
    2. 在「Create scaling schedule」(建立調整大小排程) 窗格中,輸入名稱
    3. 選用:輸入說明
    4. 輸入這項排程在啟用時提供的所需執行個體數量下限
    5. 您可以使用預設介面指定調整排程的開始時間和重複週期,如果要設定開始時間和重複週期較為複雜的排程,則可以使用Cron 運算式
      • 預設介面
        1. 在「開始時間」欄位中輸入或點選 ,選取開始時間。
        2. 在「Recurrence」欄位中,選取排程重複的頻率。如果選取「每週」或「每月」,請使用額外的下拉式選單,選取時間表開始的星期幾或月份。
      • Cron 運算式
        1. 如要啟用,請按一下「Use CRON expression」切換按鈕。
        2. 輸入 CRON 運算式
    6. 在「時區」欄位中選取時區。

    7. 在「Duration」(時間長度) 和「Unit of time」(時間單位) 欄位中,輸入時間長度並選取對應的時間單位。

    8. 按一下 [儲存]。「Scaling schedules」窗格隨即開啟。

    9. 選用步驟:如要建立其他調整排程,請按一下 「建立排程」

  6. 建立時程表後,請按一下「完成」

  7. 如要關閉「Instance groups」頁面,請按一下「Save」

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 建議您將這個值設為在沒有有效的資源調度排程時所需的執行個體數量下限。當您將這個值設為 0,並使用排程或 Cloud Monitoring 指標設定自動調度資源,且每個群組都有單一時序資料,您的 MIG 就能縮減為 0 個 VM。如果政策有其他信號,需要個別 VM 的資料 (例如 CPU 使用率),就無法縮放至 0 個 VM。
  • MAX_NUM_REPLICAS:可為此 MIG 提供的執行個體數量上限。如果 MIG 已設有自動調度資源政策,則可選擇不使用。
  • SCHEDULE_NAME:新調整排程的名稱。
  • CRON_EXPRESSION:這項排程的開始時間和週期,格式為 cron 運算式
  • DURATION:此時間表的持續時間,以秒為單位。
  • TIME_ZONE:選用:排程開始時間的 IANA 時區,例如 Europe/Paris。預設值為 UTC
  • MIN_REQ_REPLICAS:這項排程在啟用時提供的最低必要執行個體數量。
  • DESCRIPTION:選用:新調整時間表的說明。
  • ZONEREGION:選用:MIG 所在的可用區或區域。

您可以建立一次性或週期性執行的時間表。

週期性時間表

這個範例指令會建立重複的時間表。這份時程表會指定您希望 MIG 在每週一、週二、週三、週四和週五的世界標準時間 (UTC) 上午 8 點 30 分至下午 5 點,至少包含 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 日的整天,針對 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 資源。

resource "google_compute_autoscaler" "default" {
  provider = google-beta
  name     = "my-autoscaler"
  zone     = "us-central1-f"
  target   = google_compute_instance_group_manager.default.id

  autoscaling_policy {
    max_replicas    = 5
    min_replicas    = 1
    cooldown_period = 60

    scaling_schedules {
      name                  = "every-weekday-morning"
      description           = "Increase to 2 every weekday at 7AM for 12 hours."
      min_required_replicas = 2
      schedule              = "0 7 * * MON-FRI"
      time_zone             = "America/New_York"
      duration_sec          = 43200
    }
  }
}

如要瞭解如何套用或移除 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 建議您將這個值設為在沒有有效的資源調度排程時所需的執行個體數量下限。當您將這個值設為 0,並使用排程或 Cloud Monitoring 指標設定自動調度資源,且每個群組都有單一時序資料,您的 MIG 就能縮減為 0 個 VM。如果政策有其他信號,需要個別 VM 的資料 (例如 CPU 使用率),就無法縮放至 0 個 VM。
  • 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 點 (世界標準時間) 包含至少 10 個 VM 執行個體。這個 API 呼叫也會使用 minNumReplicasmaxNumReplicas 欄位,將所選 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 呼叫會在單一呼叫中,針對兩個時程表 (workday-capacityjanuary-30-2030-schedule) 使用 autoscalers.patch 方法。這個 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 的排程清單。這份清單會顯示每個時間表的設定狀態資訊

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下「Edit」(編輯)

  4. 您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可查看現有調整大小排程的清單。

完成後,按一下「完成」即可關閉清單。

gcloud

如要取得 MIG 的詳細資料,包括其縮放時間表的設定和狀態,請使用 gcloud compute instance-groups managed describe 指令

gcloud compute instance-groups managed describe MIG_NAME \
    [--zone=ZONE | --region=REGION]

更改下列內容:

  • MIG_NAME:具有現有自動調度資源政策的 MIG 名稱。
  • ZONEREGION:選用: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 的時間表,因為該區域 MIG 已設有自動調度資源政策:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=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"
    },
    ...
  },
...
}

編輯資源調度時間表

您可以編輯現有的調整時間表,變更時間表的名稱以外的任何設定。您也可以停用或重新啟用調整時間表

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下「Edit」(編輯)

  4. 您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可查看現有調整大小排程的清單。

  5. 找出要編輯的縮放時間表,然後勾選對應的核取方塊。

  6. 按一下「縮放時間表」窗格頂端的 「編輯」

  7. 在新的「編輯調整時間表」窗格中,修改要變更的欄位。如要進一步瞭解每個欄位,請參閱「建立調整時間表」。

  8. 完成後,按一下「儲存」

變更可能需要幾分鐘才會生效。如要監控排程狀態,請按一下「Scaling Schedules」窗格頂端的 「Refresh」

完成後,按一下「完成」即可關閉清單。

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:選用:縮放時程的新說明。
  • ZONEREGION:選用: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 停用自動調度資源功能,請關閉自動調度資源

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下「Edit」(編輯)

  4. 您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可查看現有調整大小排程的清單。

  5. 找出要停用或啟用的調整排程,然後勾選對應的核取方塊。

  6. 停用或啟用所選時間表。

    • 如要停用所選時間表,請按照下列步驟操作:
      1. 在「縮放時間表」窗格頂端,按一下 「停用」
      2. 在隨即顯示的「停用排程」對話方塊中,按一下「停用」
    • 如要啟用所選時間表,請按照下列步驟操作:
      1. 在「調整時間表」窗格頂端,按一下 「啟用」
      2. 在新的「啟用時間表」對話方塊中,按一下「啟用」

變更可能需要幾分鐘才會生效。如要監控排程狀態,請按一下「Scaling Schedules」窗格頂端的 「Refresh」

完成後,按一下「完成」即可關閉清單。

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:要停用的調整排程名稱。
  • ZONEREGION:選用: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:您要重新啟用的調整排程名稱。
  • ZONEREGION:選用:MIG 所在的可用區或區域。

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
      },
      ...
    }
  }
}

更改下列內容:

  • 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 的自動調度資源設定,請刪除自動配置器

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下「Edit」(編輯)

  4. 您可以在「自動調度資源時間表」下方查看時間表總數。按一下「管理排程」,即可查看現有調整大小排程的清單。

  5. 找出要刪除的調整大小排程,然後勾選對應的核取方塊。

  6. 按一下「Scaling Schedules」窗格頂端的 「Delete」

  7. 在新的「Delete schedules」(刪除時間表) 對話方塊中,按一下「Delete」

變更可能需要幾分鐘才會生效。如要監控排程狀態,請按一下「Scaling Schedules」窗格頂端的 「Refresh」

完成後,按一下「完成」即可關閉清單。

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:要刪除的縮放排程名稱。
  • ZONEREGION:選用: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 數量。在指定時間過後,如果不再需要目前的容量,自動調度資源功能就會在預設的10 分鐘穩定期過後,並依照任何已設定的縮減控制項,開始移除 VM 執行個體。

    資源調度時間表是雙向的。系統會在您指定的停止時間移除 VM,並將群組大小縮減至您設定的最低群組大小,除非您指定其他自動調度資源信號。

使用 Google Cloud CLI 或 REST 時,您必須使用 cron 運算式設定調整排程的開始時間和重複週期。不過,使用 Google Cloud 主控台時,您可以使用 Cron 運算式或下列設定,設定排程的開始時間和重複週期:

  • 開始時間:您希望縮放排程生效的時間。

    在開始時間,當 MIG 大小低於排程所需的執行個體時,資源調度排程就會開始建立 VM。設定開始時間,讓新的 VM 有足夠的時間啟動和初始化。舉例來說,如果工作負載從建立 VM 到開始服務需要 10 分鐘,請將開始時間設為比需要 VM 就緒時間早 10 分鐘。

  • 週期:系統是否會根據下列選項定義重複執行資源調度作業,以及重複的頻率:

    • 一次:一次性排程,只會在所選日期開始。
    • 每天:每天開始的週期性排程。
    • 每週:每週在所選星期幾開始的週期性排程,例如每週一到週五。
    • 每月:每月在所選日期執行的週期性排程,例如每月的第一天。月份的最後幾天 (29 到 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=Sun1=Mon、... 6=Sat7=Sun
2000-2036

或每年 (*) (如未提供)

除了使用這些值之外,Cron 運算式中的每個欄位也可以使用特殊字元:

特殊字元 意義 範例
* 不限 如果「日」欄位、「星期幾」欄位和「年」欄位 (如果有) 都設為 *,則時間表會每天開始。
- range 如果星期欄位設為 1-5Mon-Fri,則排程會在每週的星期一至星期五開始。
, list 如果月份欄位設為 5,7,9May,Jul,Sep,則排程會在每年 5 月、7 月和 9 月開始。
/ 步驟 如果月份欄位設為 */3,則排程會在第一個月開始,之後每 3 個月執行一次:1 月、4 月、7 月和 10 月。

編寫 cron 運算式時,請考量以下事項:

  • 空格用於分隔 Cron 運算式的欄位。請注意,請勿在使用特殊字元的欄位中新增多餘的空格。
  • 當您同時指定一週中的某一天和某一天 (如果兩個欄位都未設為 *) 時,排程會使用這些值的聯集,而非交集。舉例來說,排程 0 8 1 * Mon 會在每週一和每月第一天上午 8:00 開始執行。該排程不會只在星期一 (也是該月份的第一天) 的早上 8:00 開始。
  • 您可以在 Cron 運算式的每個欄位中使用零或多個特殊字元。舉例來說,如果您希望排程在 5 月以外的每個月開始,可以將月份欄位設為 1-4,6-12 (兩個範圍的清單,不含空格)。
  • 使用範圍 (-) 時,您無法使用 0-7Sun-Sun 指定星期幾欄位。如要指定每個星期幾,請改用 *0-61-7Sun-SatMon-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 日午夜 12 點執行一次。如要建立重複的時間表,請使用特殊字元說明該時間表的重複週期。舉例來說,Cron 運算式 30 8 * * Mon-Fri 會將排程設為每週一、二、三、四和五的上午 8:30 開始。

排程狀態資訊

列出縮放排程,查看其狀態。縮放排程包含下列狀態資訊:

  • 狀態 (state):縮放時間表的目前狀態,以下列其中一個狀態表示:
    • 已就緒 (READY):這個排程已就緒,但尚未啟用。自動配置器正在等待下一次排程。
    • 有效 (ACTIVE):這個時間表目前有效。自動配置器會嘗試為這個 MIG 提供至少這個排程指定的必要執行個體。
    • 已淘汰 (OBSOLETE):這個排程已過期,不會再啟用。自動配置器會忽略這項排程,因為未來不會再發生。
    • 已停用 (DISABLED):這個排程已手動停用,因此無法啟用。自動配置器會忽略這個排程,直到重新啟用為止。
  • 上次發生時間 (lastStartTime):上次啟用此調整時間表的時間戳記。這是上次啟用服務的實際日期和時間。舉例來說,如果您有一份已停用的縮放排程,且該排程每天重複執行、上午 10 點開始,且持續 2 小時,而您在今天上午 11 點重新啟用排程,則 lastStartTime 就是今天上午 11 點。
  • 下次發生時間 (nextStartTime):下次設定此排程生效的時間戳記。

重疊的時間表

視開始時間、重複週期、時間長度和時區而定,兩個以上的調整時程可能會重疊。當有多個有效的調度排程時,自動配置器會從所有有效的調度排程中,使用最多數量的 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 小時內啟用的排程仍會在整個時間範圍內執行,但為了彌補跳過的 1 小時,這些排程會在沒有日光節約時間轉換的日期比原先的結束時間晚 1 小時結束。一般來說,時段的結束時間是時段的開始時間和時間長度的總和。不過,如果在排程啟用期間夏令時間跳過 1 小時,且持續時間和開始時間保持不變,則該排程的結束時間會比排程的開始時間和持續時間總和多 1 小時。
  • 在跳過的 1 小時內開始的排程,在沒有 DST 轉換的日期也會比預定時間晚 1 小時開始。

在日光節約時間的最後一天 (重複 1 小時),縮放時間表會發生以下變更:

  • 在重複時段中啟用的排程仍會在整個時間範圍內執行,但為了補償重複的時段,這些排程會在沒有 DST 轉換的日期比原先的結束時間提早 1 小時結束。一般來說,時段的結束時間是時段的開始時間和時間長度的總和。不過,如果在排程啟用期間夏令時間重複 1 小時,且持續時間和開始時間保持不變,則該排程的結束時間會比排程的開始時間和持續時間總和少 1 小時。
  • 在轉換期間開始的排程會在預設時間開始,但不會在重複發生的第二個開始時間重新啟動。

大多數採用 DST 的時區都會使用 1 小時的轉換期間。不過,如果排程的時區使用不同的轉換週期 (例如使用 30 分鐘轉換週期的 Australia/Lord_Howe 時區),您可以預期會看到相同的行為。只要將「1 小時」替換為相關的夏令時間轉換時間即可。

後續步驟