限制 MIG 中 VM 的執行時間


本文件說明如何指定 VM 的時間限制,自動終止代管執行個體群組 (MIG) 中的虛擬機器 (VM)。並說明 MIG 中的 VM 如何執行時間限制。

您可以為 MIG 中的 VM 指定時間限制,藉此最佳化暫時性工作負載。當 VM 達到時間限制時,MIG 會自動終止 (刪除) 該 VM。透過時間限制限制 MIG 中 VM 的執行時間,有助於降低成本並釋出配額。

如要瞭解如何為獨立 VM 指定時間限制,請參閱「限制 VM 的執行時間」。如果您希望 MIG 根據工作負載自動新增或刪除 VM,請參閱「自動調度執行個體群組資源」。

事前準備

  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 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.

    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 中 VM 的執行時間

您可以在用於 MIG 的執行個體範本中指定時間限制,藉此限制 MIG 中的 VM 執行時間。當 MIG 根據範本建立 VM 時,系統會對每個 VM 套用時間限制

您可以指定下列兩種時間限制之一:

  • 以放送時間長度做為時間限制
  • 將時間限制設為終止時間

如要為 MIG 中的 VM 指定時間限制,請按照下列步驟操作:

  1. 建立含有 VM 執行時間長度的執行個體範本,或含有 VM 結束時間的執行個體範本

  2. 使用執行個體範本建立 MIG,或更新現有 MIG

限制

  • 您必須遵守限制獨立 VM 執行時間的限制條件

  • 建立執行個體範本來指定 MIG 中 VM 的時間限制時,會受到以下限制:

    • 您無法將終止動作設為 STOP。MIG 僅支援 DELETE
    • 您無法使用 Spot VM。
  • 您無法在使用限制 VM 執行時間的執行個體範本 MIG 中建立大小調整要求

  • 您無法在區域性 MIG 中使用 EVEN 目標分配型態,並啟用主動式執行個體重新分配功能,限制 VM 的執行時間。

建立含有 VM 執行時間長度的執行個體範本

如要在 VM 執行一段時間後自動終止 MIG,請在執行個體範本中設定最大執行時間 (maxRunDuration)。

主控台

  1. 前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本) 頁面

  2. 點選「建立執行個體範本」

  3. 按照以下方式選取「Location」(位置)

    • 如果您想跨區域使用執行個體範本,請選擇「Global」(全域)
    • 如要減少跨區域依附元件,請選擇「Regional」
  4. 如果您選擇了「Regional」(區域),請選取您要建立執行個體範本的「區域」

  5. 在「可用性政策」部分,展開「VM 佈建模式進階設定」

  6. 選取「Set a time limit for the VM」(設定 VM 的時間限制) 核取方塊。

  7. 在「時間限制類型」欄位中,選取「以小時計」 (預設值),即可將時間限制指定為時間長度。在下一個欄位中輸入時數。

  8. 在「On VM termination」清單中,選取「Delete」

  9. 針對其他欄位,請接受預設值或視需要進行修改。

  10. 按一下 [建立]。

gcloud

使用 instance-templates create 指令。如要在特定時間過後自動刪除 VM,請加入 --max-run-duration 標記,並將 --instance-termination-action 標記設為 DELETE,如下所示:

  gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --max-run-duration=DURATION \
      --instance-termination-action=DELETE

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • DURATION:要執行 VM 的時間長度。MIG 會在指定時間過後自動刪除 VM。

    將時間長度格式化為天數、小時、分鐘和秒數,後面分別加上 dhms。舉例來說,如果要指定 30 分鐘的時間長度,請指定 30m;如果要指定 1 天 2 小時 3 分鐘 4 秒的時間長度,請指定 1d2h3m4s。最短時間為 30 秒 (30s),最長時間為 120 天 (120d)。

Terraform

如要使用 Terraform 建立執行個體範本,請使用 google_compute_instance_template 資源。如要建立執行個體範本,讓系統在特定時間過後自動刪除 VM,您必須加入 max_run_duration 引數,並將 instance_termination_action 引數設為 DELETE

詳情請參閱 google_compute_instance_template 資源的 Terraform 說明文件

REST

請使用 instanceTemplates.insert 方法。如要在特定時間過後自動刪除 VM,請加入 maxRunDuration 欄位,並將 instanceTerminationAction 欄位設為 DELETE,如下所示:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "maxRunDuration":
      {
        "seconds": DURATION
      },
      "instanceTerminationAction": "DELETE"
    }
  }
}

更改下列內容:

  • PROJECT_ID:您要在其中建立執行個體範本的專案 ID
  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • MACHINE_TYPE:群組中 VM 的預先定義自訂機器類型。
  • IMAGE_PROJECT:包含圖片的映像檔專案,例如 debian-cloud
  • IMAGEIMAGE_FAMILY:指定下列其中一個:

    • IMAGE:作業系統映像檔的特定版本,例如 debian-10-buster-v20200309

    • IMAGE_FAMILY圖片群組。這會指定最新的非淘汰作業系統映像檔。舉例來說,如果您指定 family/debian-10,系統會使用 Debian 10 映像檔系列中的最新版本。

  • DURATION:要執行 VM 的時間長度。MIG 會在指定時間過後自動刪除 VM。

    將時間長度格式化為天數、小時、分鐘和秒數,後面分別加上 dhms。舉例來說,如果要指定 30 分鐘的時間長度,請指定 30m;如果要指定 1 天 2 小時 3 分鐘 4 秒的時間長度,請指定 1d2h3m4s。最短時間為 30 秒 (30s),最長時間為 120 天 (120d)。

建立含有 VM 終止時間的執行個體範本

如要在特定時間自動終止 MIG 中的 VM,請在執行個體範本中設定終止時間 (terminationTime)。您可以設定 MIG 終止 VM 的日期和時間。

主控台

  1. 前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本) 頁面

  2. 點選「建立執行個體範本」

  3. 按照以下方式選取「Location」(位置)

    • 如果您想跨區域使用執行個體範本,請選擇「Global」(全域)
    • 如要減少跨區域依附元件,請選擇「Regional」
  4. 如果您選擇了「Regional」(區域),請選取您要建立執行個體範本的「區域」

  5. 在「可用性政策」部分,展開「VM 佈建模式進階設定」

  6. 在「時間限制類型」欄位中,選取「依日期」,即可將時間限制指定為時間和日期。在下一個欄位中,按一下 「選取日期和時間」,然後選取自動結束的日期、時間和時區。

  7. 在「On VM termination」清單中,選取「Delete」

  8. 針對其他欄位,請接受預設值或視需要進行修改。

  9. 按一下 [建立]。

gcloud

使用 instance-templates create 指令。如要在特定時間自動刪除 VM,請加入 --termination-time 標記,並將 --instance-termination-action 標記設為 DELETE,如下所示:

  gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --termination-time=TIME \
      --instance-termination-action=DELETE

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • TIME:您希望這個 VM 自動終止的時間。您指定的時間必須是未來 30 秒後,最長為 120 天。將時間格式化為 RFC 3339 時間戳記

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    更改下列內容:

    • YYYY-MM-DD:日期格式為 4 位數年份、2 位數月份和 2 位數日期,中間以連字號分隔。
    • HH:MM:SS:以 24 小時制時間格式,以半形冒號分隔的 2 位小時、2 位分鐘和 2 位秒的時間。
    • OFFSET:時區以世界標準時間 (UTC) 偏移時間格式表示。舉例來說,如果要使用太平洋標準時間 (PST),也就是比世界標準時間早 8 小時,請指定 -08:00。或者,如要使用無偏移 (UTC+0),請指定 Z

REST

請使用 instanceTemplates.insert 方法。如要在特定時間自動刪除 VM,請加入 terminationTime 欄位,並將 instanceTerminationAction 欄位設為 DELETE,如下所示:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "terminationTime": TIME,
      "instanceTerminationAction": "DELETE"
    }
  }
}

更改下列內容:

  • PROJECT_ID:您要在其中建立執行個體範本的專案 ID
  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • MACHINE_TYPE:群組中 VM 的預先定義自訂機器類型。
  • IMAGE_PROJECT:包含圖片的映像檔專案,例如 debian-cloud
  • IMAGEIMAGE_FAMILY:指定下列其中一個:

    • IMAGE:作業系統映像檔的特定版本,例如 debian-10-buster-v20200309

    • IMAGE_FAMILY圖片群組。這會指定最新的非淘汰作業系統映像檔。舉例來說,如果您指定 family/debian-10,系統會使用 Debian 10 映像檔系列中的最新版本。

  • TIME:您希望這個 VM 自動終止的時間。您指定的時間必須是未來 30 秒後,最長為 120 天。將時間格式化為 RFC 3339 時間戳記

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    更改下列內容:

    • YYYY-MM-DD:日期格式為 4 位數年份、2 位數月份和 2 位數日期,中間以連字號分隔。
    • HH:MM:SS:以 24 小時制時間格式,以半形冒號分隔的 2 位小時、2 位分鐘和 2 位秒的時間。
    • OFFSET:時區以世界標準時間 (UTC) 偏移時間格式表示。舉例來說,如果要使用太平洋標準時間 (PST),也就是比世界標準時間早 8 小時,請指定 -08:00。或者,如要使用無偏移 (UTC+0),請指定 Z

MIG 中 VM 的時間限制運作方式

當您為 MIG 中的 VM 指定時間限制時,MIG 會在 VM 的終止時間戳記 (terminationTimestamp) 欄位中自動設定終止時間。

根據您指定的時間限制類型,VM 的終止時間戳記會設為以下格式:

  • 時間限制 (以執行時間長度為單位,maxRunDuration):

    VM 的 terminationTimestamp = VM 的最新建立或啟動時間 + maxRunDuration

    指定時間長度時,系統會根據 VM 的最新建立或啟動時間設定終止時間戳記。如果重新建立、重新啟動、繼續或取代 VM,系統會重新計算終止時間戳記。終止時間戳記可能會因每個 VM 的上次建立或啟動時間而異,因此 MIG 中的 VM 會有不同的終止時間戳記。舉例來說,如果 VM 已修復,系統會將修復期間的時間加到 VM 在修復期間重新建立的時間,藉此重新計算 VM 的終止時間戳記。

  • 使用時間限制做為結束時間 (terminationTime):

    VM 的 terminationTimestamp = terminationTime

    當您指定時間時,如果該時間是在未來,系統會將終止時間戳記設為該時間。如果終止時間已過,任何嘗試建立、重新啟動或取代 VM 的 MIG 動作都會失敗,並顯示錯誤。如要解決這類錯誤,您必須建立新的執行個體範本,並設定未來的終止時間,然後將該範本套用至 MIG。如果您想在新範本中使用現有的範本屬性,請根據現有範本建立執行個體範本

在 VM 重新整理期間,終止時間戳記不會變更。舉例來說,如果您將更新的干擾程度設為 REFRESH,則 MIG 每次更新虛擬機器時,都會保留終止時間戳記。

當您在 MIG 中暫停或停止 VM 時,系統會自動清除終止時間戳記,不論時間限制類型為何。您重新啟用或啟動 VM 時,系統會根據前述本節所述的時間限制類型,再次設定終止時間戳記。

設定時間限制時,自動調整大小功能的運作方式

自動調度資源功能可讓 MIG 根據負載的增減,自動新增或移除 VM。當 MIG 刪除已達到終止時間戳記的 VM 時,MIG 會建立新的 VM,以便透過自動調度資源功能維持建議的大小。新的 VM 會在指定的時限內執行。如果自動調度資源功能建議減少 VM 數量,MIG 會在 VM 達到時間限制前刪除 VM。

如果您已設定調整時間表,VM 只會在時間表結束或 VM 達到終止時間戳記時停止執行,兩者取其先。

後續步驟