預留 Compute Engine 區域資源

使用自訂或預先定義的機器類型 (包含或不含額外的 GPU 或本機 SSD) 為特定區域中的 VM 執行個體建立保留項目,以確保您在需要時能為工作負載提供資源。一旦建立保留項目,您就要立即開始支付預留資源的費用,而且預留資源將無限期維持可用,直到您將其刪除為止。

使用預留功能可確保您的專案有資源能因應未來增加的需求,包括預期或非預期的高峰、遷移大量 VM、備份和災難復原或預期的成長及緩衝處理。

請注意,不再需要預留資源時,請將保留項目刪除,以免繼續產生相關費用。由於保留項目和一般 VM 一樣都會耗用資源,因此系統將根據現有的隨選費率 (包括續用折扣) 計費。此外,保留項目也適用承諾使用折扣

事前準備

優點

使用預留功能有以下好處:

  • 儘管不是要立即使用,您也能保留機器以備不時之需。
  • 您隨時都可建立保留項目,不需要時可立即刪除,就不用再支付相關費用。

  • 保留項目的計費方式依所預留資源的費用而定。因此,預留的資源亦適用續用折扣和承諾使用折扣。

限制和規定

預留功能具有下列限制:

  • 預留功能僅適用於 Compute Engine、Cloud Dataproc 和 Google Kubernetes Engine VM 的使用情形。
  • 預留功能不適用於 f1-microg1-small 機器類型、先占 VM、單一用戶群節點或以上未列出的任何其他服務 (例如 Cloud SQL 和 Dataflow)。
  • 每次預留最多可保留 1000個 VM 執行個體。
  • 您的專案中必須具備足夠的配額,才能預留需要的資源。一旦預留成功,系統就會按規定收取該資源的配額費用。
  • 系統會在建立保留項目時分配資源。假如提出要求時區域中沒有足夠的資源,預留作業將出現容量不足錯誤並因此失敗。
  • 與承諾使用折扣合併使用時:
    • 針對 GPU 和本機 SSD 專用的承諾使用折扣,您必須在購買承諾時就建立保留項目。
    • 如果保留項目附加在承諾合約中,您就無法刪除保留項目。
    • 您只能購買 1 年的 K80 GPU 使用承諾。
  • 未附加至承諾使用折扣的保留項目可以預留一段時間,但將依一般執行個體的 1 分鐘最小計費單位來計費。

預留的運作方式

建立保留項目以預留您需要的 VM 執行個體。一旦建立好保留項目,系統就會預留這些資源供您隨時使用。您可以在建立期間選擇保留項目的使用方式。舉例來說,您可以將保留項目設為自動套用至符合預留屬性的新執行個體或現有執行個體 (預設行為),或是指定只有特定的 VM 執行個體可以使用保留項目。

不管是什麼情況,只有在 VM 執行個體的屬性與保留項目的屬性完全相符時,才能使用保留項目。具體來說,如果要讓執行個體使用保留項目,該執行個體就必須與保留項目的以下屬性相符:

  • 區域
  • vCPU
  • 最低 CPU 平台
  • 記憶體
  • GPU
  • 本機 SSD

如果 VM 執行個體與保留項目的屬性相符,除非另行指定,否則現有 VM 執行個體和新的 VM 執行個體都將根據預設行為來自動使用保留項目。根據預設,假設您已為 10 個 custom-8-10240 執行個體建立保留項目,且您目前有 5 個相符的 custom-8-10240 執行個體,則這 5 個執行個體將會使用其中 5 個保留項目。如果您另外建立 3 個相符的執行個體,這些執行個體會再使用另外 3 個保留項目。

只要在建立保留項目和執行個體時指定特定選項,就能覆寫這個預設行為。

  • 如要建立禁止自動使用的保留項目,請使用 specificReservationRequired 選項。這樣一來,除非您在建立執行個體時明確指定保留項目,否則系統將無法使用這些項目。
  • 如要指定讓執行個體使用保留項目,請在建立執行個體時或在執行個體範本中使用 reservationAffinity 選項。您可以指定執行個體自動使用任何相符的保留項目、不要自動使用相符的保留項目,或是只使用特定保留項目。

如果您停止或刪除了正在使用保留項目的執行個體,則該執行個體將不再計入保留項目,而預留的資源會再次恢復可用狀態。

假如您刪除了保留項目,但並未刪除正在使用預留資源的執行個體,則執行個體仍會保留,而您必須照常支付費用。

建立保留項目

請使用主控台、gcloud 指令列工具或 API 為 VM 執行個體建立保留項目。根據預設,凡是符合保留項目之屬性的 VM 執行個體都會自動使用該保留項目。如要建立禁止自動使用的保留項目,請使用 specificReservationRequired 選項。

您無須建立承諾即可保留資源。但您必須在購買承諾時就建立包含相關資源的保留項目,才能享有 GPU 或本機 SSD 專用的承諾使用折扣定價。詳情請參閱合併使用保留項目與承諾使用折扣

主控台

  1. 前往 GCP Console 的「Committed Use Discounts」(承諾使用折扣) 頁面。

    前往「Committed Use Discounts」(承諾使用折扣) 頁面

  2. 按一下 [Create reservation] (建立保留項目),建立沒有上層使用承諾的獨立保留項目。

  3. 為您的保留項目命名。

  4. 如果您只有在建立已明確指定這個保留項目名稱的相符執行個體時,才想要使用這個保留項目的資源,請在「Use with VM instance」(搭配使用 VM 執行個體) 下選擇 [Select specific reservation] (選取特定保留項目)

  5. 選擇您要保留資源的 [Region] (地區) 和 [Zone] (區域)

  6. 指定您要保留的 [Number of VM instances] (VM 執行個體數量)

  7. 指定您要為每個執行個體保留的資源:

    • 如果您有執行個體範本,請按一下 [Use instance template] (使用執行個體範本),然後從清單中選取執行個體範本。
    • 如果沒有,請按一下 [Specify machine type] (指定機器類型)
      1. 如為預先定義的機器類型,請從下拉式選單中選取您所需的項目。
      2. 如為自訂機器類型 (包括最低 CPU 平台) 或如要新增 GPU,請按一下 [Customize] (自訂),然後選取您所需的項目。
      3. 您可以選擇指定要新增到各個執行個體的「Local SSD」(本機 SSD) 磁碟的數量,以及指定要使用的「Interface type」(介面類型)
  8. 按一下 [Create] (建立) 按鈕,建立保留項目。

gcloud

使用 gcloud compute reservations create 指令建立新的保留項目。

gcloud compute reservations create [RESERVATION_NAME] \
    --machine-type=[MACHINE_TYPE] \
    --min-cpu-platform [MINIMUM_CPU_PLATFORM] \
    --vm-count=[NUMBER_OF_VMS] \
    --accelerator=count=[NUMBER_OF_ACCELERATORS],type=[ACCELERATOR_TYPE] \
    --local-ssd=size=[SIZE_IN_GB],interface=[INTERFACE] \
    --require-specific-reservation \
    --zone=[ZONE]

其中:

  • [RESERVATION_NAME] 是要建立的保留項目的名稱。
  • [MACHINE_TYPE]機器類型,例如 n1-standard-1。如果是自訂機器類型,請使用 custom-[CPUS]-[MEMORY] 格式,其中:
    • [CPUS] 是 vCPU 的數量。
    • [MEMORY] 是該執行個體的總記憶體。請注意,記憶體必須是 256 MB 的倍數,且須以 MB 為單位來提供,例如 5 GB 的記憶體以 5120 MB 表示:custom-4-5120。如需相關限制的完整清單,請參閱自訂機器類型的規格
  • [MINIMUM_CPU_PLATFORM] 是每個執行個體可使用的最低 CPU
  • [NUMBER_OF_VMS] 是要預留的 VM 執行個體數量。
  • [NUMBER_OF_ACCELERATORS] 是每個執行個體要新增的 GPU 數量。
  • [ACCELERATOR_TYPE]加速器類型
  • [SIZE_IN_GB] 是要附加至每個執行個體的本機 SSD 大小 (以 GB 為單位)。容量必須是 375 的倍數。
  • [INTERFACE] 是本機 SSD 應使用的介面類型,各執行個體可用的有效選項包括 scsinvme
  • [ZONE] 是預留資源的所在區域。

或者,您可以新增 --require-specific-reservation 標記,藉此指示只有已明確指定這個保留項目的 VM 執行個體才能使用。如要進一步瞭解使用預留資源的設定選項,請參閱預留的運作方式

舉例來說,對於必須明確指定這項保留項目才能使用的 us-central1-a,如要在其中進行預留,請使用類似以下所列的指令。本範例預留了 10 台自訂機器,每台機器配備 8 個 Intel Haswell (或更新版本) vCPU、10 GB 記憶體、2 個 V100 GPU 和 375 GB 的本機 SSD:

gcloud compute reservations create my-reservation \
    --machine-type=custom-8-10240 \
    --min-cpu-platform "Intel Haswell" \
    --vm-count=10 \
    --accelerator=count=2,type=nvidia-tesla-v100 \
    --local-ssd=size=375,interface=scsi \
    --require-specific-reservation \
    --zone us-central1-c

如要查看所有可用標記的清單,請參閱 gcloud compute reservations create 參考資料。

API

在 API 中,對 reservations.insert 方法建構 POST 要求。在要求主體中加入下列參數:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations

{
  "name":"[RESERVATION_NAME]",
  "specificReservation":{
    "count":"[NUMBER_OF_VMS]",
    "instanceProperties":{
      "machineType":"[MACHINE_TYPE]",
      "minCpuPlatform": "[MINIMUM_CPU_PLATFORM]",
      "guestAccelerators":[
        {
          "acceleratorCount":"[NUMBER_OF_ACCELERATORS]",
          "acceleratorType":"[ACCELERATOR_TYPE]"
        }
      ],
      "localSsds":[
        {
          "diskSizeGb":"[SIZE_IN_GB]",
          "interface":"[INTERFACE]"
        }
      ]
    }
  }
}

其中:

  • [PROJECT_ID] 是要求的專案 ID。
  • [ZONE] 是預留資源的所在區域。
  • [RESERVATION_NAME] 是您要建立的保留項目的名稱。
  • [NUMBER_OF_VMS] 是要預留的 VM 執行個體數量。
  • [MACHINE_TYPE] 是預先定義或自訂的機器類型,例如 n1-standard-1。如果是自訂機器類型,請使用 custom-[CPUS]-[MEMORY] 格式,其中:
    • [CPUS] 是 vCPU 的數量。
    • [MEMORY] 是該執行個體的總記憶體。請注意,記憶體必須是 256 MB 的倍數,且須以 MB 為單位來提供,例如 5 GB 的記憶體以 5120 MB 表示:custom-4-5120。如需相關限制的完整清單,請參閱自訂機器類型的規格
  • [MINIMUM_CPU_PLATFORM] 是每個執行個體的最低 CPU
  • [NUMBER_OF_ACCELERATORS] 是每個執行個體要新增的 GPU 數量。
  • [ACCELERATOR_TYPE]加速器類型
  • [SIZE_IN_GB] 是要附加至每個執行個體的本機 SSD 大小 (以 GB 為單位)。容量必須是 375 的倍數。
  • [INTERFACE] 是本機 SSD 應使用的介面類型,各執行個體可用的有效選項包括 scsinvme

或者,您可以新增 specificReservationRequired 布林值欄位,藉此指示只有已明確指定這個保留項目名稱的 VM 執行個體才能使用。如要進一步瞭解在保留項目中使用執行個體的設定選項,請參閱預留的運作方式

舉例來說,對於必須明確指定這項保留項目才能使用的 us-central1-a,如要在其中預留資源,請建構類似以下所列的要求。本範例預留了 10 台自訂機器,每台機器配備 8 個 Intel Haswell (或更新版本) vCPU、10 GB 記憶體、2 個 V100 GPU 和 375 GB 的本機 SSD:

POST https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations

{
  "name": "reservation-1",
  "specificReservation":
  {
    "count": "10",
    "instanceProperties":
    {
      "machineType": "custom-8-10240",
      "minCpuPlatform": "Intel Haswell",
      "guestAccelerators":
      [
        {
          "acceleratorCount": 2,
          "acceleratorType": "nvidia-tesla-v100"
        }
      ],
      "localSsds":
      [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    }
  },
  "specificReservationRequired": true
}

使用預留執行個體

您在建立執行個體時,可以設定執行個體的「預留相依性」標記,藉此指定要讓執行個體使用任何可用的相符保留項目 (預設)、使用特定保留項目或完全不使用保留項目。如果要讓執行個體使用特定保留項目,就必須使用對應的「需要特定保留項目」標記來建立該保留項目。詳情請參閱預留的運作方式

從任何相符的保留項目使用執行個體

在這個模型中,如果執行個體的屬性與預留執行個體的屬性相符,則現有和新建立的執行個體都會自動計入保留項目費用。當您要建立及刪除大量 VM 並希望儘可能採用保留項目時,這個模型就非常實用。

建立保留項目時,請排除 --require-specific-reservation 標記,這樣相符的執行個體就能自動使用這些保留項目。

主控台

  1. 建立一個開放保留項目。

    1. 前往 GCP Console 的「Committed Use Discounts」(承諾使用折扣) 頁面。

      前往「Committed Use Discounts」(承諾使用折扣) 頁面

    2. 按一下 [Create reservation] (建立保留項目),建立沒有上層使用承諾的獨立保留項目。

    3. 為您的保留項目命名,例如:reservation-01

    4. 在「Use with VM instance」(搭配 VM 執行個體使用) 下,選取 [Use reservation automatically] (自動使用保留項目),這樣所有相符執行個體就能自動使用這個保留項目。

    5. 選擇您要保留資源的 [Region] (地區) 和 [Zone] (區域)

    6. 指定您要保留的 [Number of VM instances] (VM 執行個體數量)

    7. 視需要指定您要讓各個執行個體擁有的資源:vCPU 數量、最低 CPU 平台、記憶體大小、GPU 及本機 SSD。

    8. 按一下 [Create] (建立) 按鈕,建立保留項目。

  2. 建立一個指定任何開放保留項目,並與該保留項目執行個體屬性相符的 VM 執行個體。

    1. 前往「VM instances」(VM 執行個體) 頁面。

      前往「VM instances」(VM 執行個體) 頁面

    2. 選取您的專案並點選 [繼續]
    3. 點選 [建立執行個體] 按鈕。
    4. 指定執行個體的 [Name] (名稱)
    5. 指定與 reservation-01 屬性相符的機器類型。例如,如果您在保留項目中指定了最低 CPU 平台或 GPU,則您必須透過自訂作業來讓執行個體符合指定屬性,才能使用該保留項目。
    6. 如果保留項目包含本機 SSD,請在「Disks」(磁碟) 下按一下 [Add new disk] (新增磁碟),以新增符合該保留項目的本機 SSD
    7. 在「Management」(管理) 下,選取「Reservations」(保留項目) 下的 [Automatically use created reservation] (自動使用已建立的保留項目)
    8. 按一下 [Create] (建立)。

gcloud

  1. 建立一個名為 reservation-01 的開放保留項目。

    gcloud compute reservations create reservation-01 \
        --machine-type=n1-standard-32 \
        --min-cpu-platform "Intel Skylake" \
        --vm-count=2 \
        --zone=us-central1-a
    
  2. 建立一個指定任何開放保留項目並與 reservation-01 執行個體屬性相符的 VM 執行個體,包括區域、vCPU、最低 CPU 平台、記憶體、GPU 和本機 SSD 屬性。

    gcloud compute instances create instance-1 \
        --machine-type=n1-standard-32 \
        --min-cpu-platform "Intel Skylake" \
        --zone=us-central1-a \
        --reservation-affinity=any
    

API

  1. 建立一個名為 reservation-01 的開放保留項目。

    POST https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-01",
      "specificReservation":{
        "count":"2",
        "instanceProperties":{
          "machineType":"n1-standard-32",
          "minCpuPlatform": "Intel Haswell",
        }
      },
      "specificReservationRequired": false
    }
    
  2. 建立一個指定 any 開放保留項目並與 reservation-01 執行個體屬性相符的 VM 執行個體,包括區域、vCPU、最低 CPU 平台、記憶體、GPU 和本機 SSD 屬性

    POST https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-1",
      "machineType": "zones/us-central1-a/machineTypes/n1-standard-32",
      "minCpuPlatform": "Intel Haswell",
      "reservationAffinity":
      {
        "consumeReservationType": "ANY_RESERVATION"
      },
      ...
    }
    

從特定保留項目使用執行個體

在這個模型中,只有已指定特定保留項目名稱的新執行個體才能使用該保留項目。舉例來說,當您想為特殊事件保留特定容量以供備份使用,這個模型就很實用。

建立保留項目時,請指定不要自動使用保留項目。接著,建立 VM。請注意,VM 必須明確指定該保留項目,且屬性必須與此項目相符。

如果您使用執行個體範本在地區代管執行個體群組中建立 VM,請在各個適用區域中建立具有相同名稱的相同保留項目。接著,在群組的執行個體範本中指定保留項目名稱。

舉例來說,先建立名為 reservation-02 的指定保留項目,再建立要使用該保留項目資源的相符執行個體。

主控台

  1. 建立只有已明確指定該項目名稱的執行個體才能使用其中資源的保留項目。

    1. 前往 GCP Console 的「Committed Use Discounts」(承諾使用折扣) 頁面。

      前往「Committed Use Discounts」(承諾使用折扣) 頁面

    2. 按一下 [Create reservation] (建立保留項目),建立沒有上層使用承諾的獨立保留項目。

    3. 為您的保留項目命名,例如:reservation-02

    4. 在「Use with VM instance」(搭配 VM 執行個體使用) 下,勾選 [Select specific reservation] (選取特定保留項目){/0},藉此指示只有已明確指定這個保留項目名稱的 VM 執行個體才能使用。

    5. 選擇您要保留資源的 [Region] (地區) 和 [Zone] (區域)

    6. 指定您要保留的 [Number of VM instances] (VM 執行個體數量)

    7. 視需要指定您要讓各個執行個體擁有的資源:vCPU 數量、最低 CPU 平台、記憶體大小、GPU 及本機 SSD。

    8. 按一下 [Create] (建立) 按鈕,建立保留項目。

  2. 建立一個指定保留項目名稱,且和該保留項目執行個體屬性相符的 VM 執行個體。

    1. 前往「VM instances」(VM 執行個體) 頁面。

      前往「VM instances」(VM 執行個體) 頁面

    2. 選取您的專案並點選 [繼續]
    3. 點選 [建立執行個體] 按鈕。
    4. 指定執行個體的 [Name] (名稱)
    5. 指定與 reservation-01 屬性相符的機器類型。例如,如果您在保留項目中指定了最低 CPU 平台,則您必須透過自訂作業來讓執行個體符合指定屬性,才能使用該保留項目。
    6. 如果保留項目包含本機 SSD,請在「Disks」(磁碟) 下按一下 [Add new disk] (新增磁碟),以新增符合該保留項目的本機 SSD
    7. 在「Management」(管理) 下,選取「Reservations」(保留項目) 下具有相符屬性的可用保留項目,例如:reservation-02
    8. 按一下 [Create] (建立),建立執行個體。

gcloud

  1. 建立名稱為 reservation-02 且只有已明確指定該項目名稱的執行個體才能使用其中資源的保留項目。

    gcloud beta compute reservations create reservation-02 \
        --machine-type=n1-standard-32 \
        --min-cpu-platform "Intel Skylake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --require-specific-reservation
    
  2. 建立一個指定 reservation-02 名稱並與該保留項目執行個體屬性相符的 VM 執行個體,包括區域、vCPU、最低 CPU 平台、記憶體、GPU 和本機 SSD 屬性。

    gcloud compute instances create instance-2 \
        --machine-type=n1-standard-32 \
        --min-cpu-platform "Intel Skylake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=reservation-02
    

API

  1. 建立名稱為 reservation-02 且只有已明確指定該項目名稱的執行個體才能使用其中資源的保留項目。

    POST https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n1-standard-32",
          "minCpuPlatform": "Intel Haswell",
        }
      },
      "specificReservationRequired": true
    }
  2. 建立一個指定 reservation-02 名稱並與該保留項目執行個體屬性相符的 VM 執行個體,包括區域、vCPU、最低 CPU 平台、記憶體、GPU 和本機 SSD 屬性。

    POST https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n1-standard-32",
      "minCpuPlatform": "Intel Haswell",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "googleapis.com/reservation-name",
        "values":
        ["reservation-02"
        ]
      },
      ...
    }

建立不使用保留項目的執行個體

如要避免使用任何保留項目的資源,請在建立 VM 時將預留相依性標記設為「none」。

主控台

  1. 建立不使用保留項目資源的執行個體。
    1. 前往「VM instances」(VM 執行個體) 頁面。

      前往「VM instances」(VM 執行個體) 頁面

    2. 點選 [建立執行個體] 按鈕。
    3. 按照正常方式建立執行個體。
    4. 在「Management」(管理) 下,選取「Reservations」(保留項目) 下的 [Don't use] (請勿使用),確保這個執行個體不會使用任何現有預留項目。
    5. 按一下 [Create] (建立),建立執行個體。

gcloud

建立不使用保留項目資源的執行個體。

gcloud compute instances create instance-3 --reservation-affinity=none

API

建立不使用保留項目資源的執行個體。

POST https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances

{
  "machineType": "zones/us-central1-a/machineTypes/n1-standard-16",
  "name": "instance-3",
  "reservationAffinity":
  {
    "consumeReservationType": "NO_RESERVATION"
  },
  ...
}

列出並說明保留項目

您可以使用主控台、gcloud 指令列工具或 API 列出並查看有關保留項目的詳細資料。

主控台

  1. 前往 GCP Console 的「Committed Use Discounts」(承諾使用折扣) 頁面。

    前往「Committed Use Discounts」(承諾使用折扣) 頁面

  2. 按一下 [Reservations] (保留項目),查看保留項目清單。

保留項目清單包含有關各個保留項目的詳細資料。您可以使用「Machines used (total)」(使用的機器數 (總數)) 資料欄,判斷各個保留項目的使用率。

gcloud

使用 gcloud compute reservations list 指令列出您的保留項目:

gcloud compute reservations list [--filter="zone:('[ZONE]')"]

NAME             IN_USE_COUNT   COUNT   ZONE
reservation-04   25             50      us-central1-a
reservation-05   0              100     us-central1-b

使用 gcloud compute reservations describe 指令說明您的保留項目:

gcloud compute reservations describe [RESERVATION_NAME] --zone=[ZONE]

creationTimestamp: '2019-04-01T08:29:10.210-07:00'
id: '702162498650398927'
kind: compute#reservation
name: reservation-04
selfLink: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04
selfLinkWithId: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/702162498650398927
specificReservation:
  count: '50'
  inUseCount: '25'
  instanceProperties:
    machineType: n1-standard-1
specificReservationRequired: true
status: READY
zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a

您可以使用 countinUseCount 值來判斷各個保留項目的使用率。本範例共預留了 50 個執行個體,其中有 25 個正在使用中。

API

在 API 中,對 reservations.list 方法發出 GET 要求即可列出您的保留項目。

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations

透過呼叫 reservations.get 方法來說明保留項目。

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations/[RESERVATION_NAME]

{
 "id": "702162498650398927",
 "creationTimestamp": "2019-04-01T08:29:10.210-07:00",
 "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04",
 "selfLinkWithId": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/702162498650398927",
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
 "name": "reservation-04",
 "specificReservationRequired": false,
 "status": "READY",
 "kind": "compute#reservation",
 "specificReservation": {
  "instanceProperties": {
   "machineType": "n1-standard-32"
  },
  "count": "50",
  "inUseCount": "25"
 }
}

您可以使用 countinUseCount 值來判斷各個保留項目的使用率。本範例共預留了 50 個執行個體,其中有 25 個正在使用中。

修改保留項目

如果承諾合約中並未附加保留項目,您可以調整大小或刪除保留項目。

調整保留項目大小

您可以使用 gcloud 指令列工具或 API,針對未附加至承諾合約的保留項目重新調整其中預留的 VM 數量。

gcloud

使用 gcloud compute reservations update cmd 來調整保留項目大小,例如:

為 2 個 VM 建立保留項目:

gcloud compute reservations create reservation-01 \
    --machine-type=n1-standard-32 \
    --zone=us-central1-a \
    --vm-count=2

將保留項目從 2 個 VM 重新調整為 10 個 VM:

gcloud compute reservations update reservation-01 \
    --zone=us-central1-a \
    --vm-count=10

API

在 API 中,對 reservations.resize 方法建構 POST 要求,並在要求主體中納入新的 specificSkuCount。以下要求主體將預留的 VM 計數更新為 10

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations/[RESERVATION_NAME]/resize

{"specificSkuCount": "10"}

只要目標區域中有足夠的資源,且在要求時目標地區也有足夠的配額,提出的更新要求就會成功。

刪除保留項目

您可以使用主控台、gcloud 指令列工具或 API 來刪除未附加至承諾合約的保留項目。

主控台

  1. 前往 GCP Console 的「Committed Use Discounts」(承諾使用折扣) 頁面。

    前往「Committed Use Discounts」(承諾使用折扣) 頁面

  2. 按一下 [Reservations] (保留項目),查看保留項目清單。
  3. 找出您要刪除的各個保留項目,然後勾選名稱旁的核取方塊。

  4. 按一下 [Delete reservation] (刪除保留項目)

gcloud

您可以使用 delete 指令來釋放保留項目:

gcloud compute reservations delete [RESERVATION_NAME] --zone [ZONE]

API

在 API 中,對 reservation.delete 方法建構 DELETE 要求。

DELETE https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations/[RESERVATION_NAME]

一旦刪除指令執行成功,您就不再需要支付保留項目的費用,而系統也不會再為您預留資源。刪除保留項目並不會影響與該保留項目相關的任何運作中的執行個體,因此這些執行個體仍會繼續計費。

合併使用保留項目與承諾使用折扣

承諾使用折扣提供 1 年或 3 年的折扣價協議,但不會保留特定區域的容量。而如果使用預留功能,則就算預留的 VM 未執行,您還是能在特定區域保留容量。在承諾合約中附加保留項目,使用預留資源時即可享優惠計價。

根據預設,建立保留項目時,凡是核心和記憶體適用的承諾使用折扣都將自動套用至您的 VM 執行個體。但您必須在購買承諾時就建立這些資源的保留項目,才能享有 GPU 和本機 SSD 專用的承諾使用折扣價。

請注意,一旦購買承諾合約就無法取消。詳情請參閱承諾使用折扣

購買 GPU 或本機 SSD 承諾

如何針對 GPU 或本機 SSD 購買承諾產品:

  • 您必須購買一般用途 N1 承諾產品。只有搭配使用 N1 機器類型時,才能支援 GPU。
  • 您必須在購買承諾產品的同時,建立包含 GPUs 或本機 SSD 的保留項目
  • 您不需要承諾使用 vCPU 或記憶體。

您必須購買特定 GPU 類型適用的承諾產品。舉例來說,您可購買 Tesla P100s 或 Tesla V100s,但不能在購買 Tesla P100 GPU 的承諾產品後將其套用至其他 GPU 類型。

您必須按承諾使用的數量來預留 GPU 和本機 SSD 的數量。舉例來說,如果您要預留 4 個 V100 GPU,就必須同時承諾使用 4 個 V100 GPU。不過,您預留的 vCPU 和記憶體可多於或少於您的承諾數量。

如果您只想承諾使用 GPU 或本機 SSD,可以將 vCPU 和記憶體承諾指定為 0。但您附加到承諾的保留項目必須包含做為承諾的相同 GPU 和本機 SSD,以及您要預留的機器類型 (含有 vCPU 和記憶體)。

使用主控台、gcloud 工具或 API 來購買已附加保留項目的承諾產品。

主控台

  1. 前往 GCP 主控台的「承諾使用折扣」頁面。

    前往「Committed Use Discounts」(承諾使用折扣) 頁面

  2. 按一下 [Purchase commitment] (購買承諾產品) 以購買新的承諾產品。
  3. 為您的承諾產品命名,並選擇您要套用該承諾產品的地區。
  4. 在「Commitment type」(使用承諾類型) 部分,選取 [General Purpose] (一般用途)
  5. 選擇承諾產品的持續時間,可為 1 年或 3 年。
  6. 選擇承諾產品的輸入模式:

    • (建議) 自訂輸入可讓您自訂 vCPU 與記憶體數量。

    • 基本輸入可讓您選擇 vCPU 數量,Compute Engine 將會自動針對 vCPU 數目填入記憶體數量。

  7. 輸入您要購買的 vCPU 與記憶體數量。根據您選取的折扣類型,每個 vCPU 的記憶體數量必須符合特定比率。針對標準承諾使用折扣,請為每個 vCPU 使用 0.9 GB 至 6.5 GB 之間的記憶體量。總記憶體量必須為 256 MB 的倍數。

    如果您只想承諾使用並預留 GPU 或本機 SSD,而不承諾使用 vCPU 和記憶體,請將 vCPU 和記憶體承諾數量指定為 0

  8. 按一下 [Add GPUs] (新增 GPUs),然後選取您要承諾的 [GPU type] (GPU 類型) 和 [Number of GPUs] (GPUs 數量)

  9. 按一下 [Add local SSD] (新增本機 SSD),然後指定您要承諾的磁碟數量。

  10. 按一下 [Add new reservation] (新增保留項目),為將使用 GPU 和本機 SSD 的執行個體建立一或多個保留項目。

    1. 為您的保留項目命名。
    2. 在「Use with VM instance」(搭配使用 VM 執行個體) 下:
      • 如果您只有在建立已明確指定這個保留項目名稱的相符執行個體時,才想要使用這個保留項目的資源,請選取 [Select specific reservation] (選取特定保留項目)
      • 如要讓相符執行個體自動使用這個保留項目,請選取 [Use reservation automatically] (自動使用保留項目)
    3. 選擇您要保留資源的 [Region] (地區) 和 [Zone] (區域)
    4. 指定您要保留的 [Number of VM instances] (VM 執行個體數量)
    5. 指定您要為每個執行個體保留的資源:
      • 如果您有執行個體範本,請按一下 [Use instance template] (使用執行個體範本),然後從清單中選取執行個體範本。
      • 如果沒有,請按一下 [Specify machine type] (指定機器類型)
        1. 如為預先定義的機器類型,請從下拉式選單中選取您所需的項目。
        2. 如為自訂機器類型 (包括最低 CPU 平台) 或如要新增 GPU,請按一下 [Customize] (自訂),然後選取您所需的項目。
        3. 您可以選擇指定要新增到各個執行個體的「Local SSD」(本機 SSD) 磁碟的數量,以及指定要使用的「Interface type」(介面類型)
    6. 按一下 [Create] (建立) 按鈕,建立保留項目。
  11. 按一下 [Purchase] (購買) 按鈕以購買承諾產品。

  12. 閱讀購買條款,當您準備好購買承諾產品時,再按一次 [Purchase] (購買)

gcloud

使用 gcloud compute commmitments create 指令購買承諾產品,並加入相關標記來建立附加的保留項目。

舉例來說,以下承諾產品包含 4 個 GPU,以及可在 us-central1-a 的 2 個 n1-standard-32 執行個體中,供這 4 個 GPU 使用的新保留項目。

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-central1-a \
    --machine-type=n1-standard-16 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

如果您想要承諾使用並預留 GPU 或本機 SSD,而不承諾使用 vCPU 和記憶體,請將 vCPU 和記憶體承諾數量指定為 0

gcloud beta compute commitments create commitment-01 \
    --region=us-west2 \
    --resources=vcpu=0,memory=0 \ 
    --resources-accelerator=type=nvidia-tesla-p4,count=1 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-west2-b \
    --machine-type=n1-standard-1 \
    --accelerator=type=nvidia-tesla-p4,count=1 \
    --vm-count=1

如要在購買承諾產品時建立多個保留項目,請使用 YAML 檔案,例如:

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --resources=vcpu=96,memory=624,local-ssd=750 \
    --resources-accelerator=type=nvidia-tesla-v100,count=1 \
    --plan 12-month \
    --reservations-from-file=[YAML_FILE]

其中的 [YAML_FILE] 包含保留項目屬性。

舉例來說,以下 YAML 檔案包含 2 個保留項目。第一個保留項目 res-01 包含具有 1 個 GPU 的 1 個 n1-standard-1 執行個體,且此為指定保留項目,這表示您必須明確指定該保留項目的名稱,才能使用其中的預留執行個體。第二個保留項目 res-02 包含 1 個 n1-standard-1 VM 執行個體,當中有 2 種類型的附加本機 SSD。

- reservation: res-01
  reservation_zone: us-central1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-1
  accelerator:
  - count: 1
    type: nvidia-tesla-v100
- reservation: res-02
  reservation_zone: us-central1-a
  vm_count: 1
  machine_type: n1-standard-1
  local_ssd:
  - interface: scsi
    size: 375
  - interface: nvme
    size: 375

API

使用 regionCommitments.insert API 並加入 reservations 欄位,以定義保留項目的屬性。舉例來說,以下承諾產品包含 4 個 GPU,以及可在 us-central1-a 的 2 個執行個體中,供這 4 個 GPU 使用的保留項目。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

如果您只要承諾使用並預留 GPU 或本機 SSD,而不承諾使用 vCPU 和記憶體,請將 VCPUMEMORY 承諾數量指定為 0,例如:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
        {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

只要在提出要求時目標區域中有足夠的資源,以及足夠的配額,就能成功建立承諾產品。

建立了附加保留項目的承諾產品後,您就無法在承諾期間刪除該保留項目。等到承諾產品過期,Compute Engine 就會自動刪除所有附加的保留項目。

如果您需要在已承諾的保留項目間轉移 GPU 或本機 SSD,請參閱修改承諾中附加的保留項目

修改承諾中附加的保留項目

如果承諾附加了一或多個具有 GPU 或本機 SSD 的保留項目,您可以使用 gcloud 工具或 API 在這些保留項目中轉移 GPU 或本機 SSD。舉例來說,您可以將 GPU 從特定保留項目轉移至另一個新的保留項目。

限制:

  • 您只能在兩個保留項目之間移動資源,其中一個是來源保留項目,另一個是目的地保留項目。來源保留項目必須已存在,而目的地則可以是現有保留項目或新的保留項目。
  • 來源和目的地保留項目必須位於同一個區域。
  • 您無法修改現有保留項目中的資源屬性,只能將現有資源從特定保留項目轉移到另一個保留項目。
  • GPU 和本機 SSD 的總數量必須維持不變。
  • 每次要求只能變更 100 個 VM。如果您想更新更多的 VM,請多次呼叫 API,或與 Google Cloud 支援服務小組聯絡。
  • 您無法轉移 vCPU 或記憶體,或修改附加保留項目的其他屬性。

gcloud

使用 gcloud compute commitments update-reservations 指令。

建立具有一個保留項目的承諾:res-1 有 4 個 n1-standard-1 執行個體,每個執行個體包含 1 個 P100 GPU (4 個 vCPU 和 4 個 P100 GPU)。預留資源總數包含 4 個 P100 GPU。

gcloud compute commitments create my-commitment-with-reservations \
    --region=asia-east1 \
    --resources=vcpu=10,memory=32GB \
    --resources-accelerator=type=nvidia-tesla-p100,count=4 \
    --plan 12-month \
    --reservations-from-file=one-reservation.yaml

其中,one-reservation.yaml 包含:

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 4
  machine_type: n1-standard-1
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

更新承諾,以將部分資源從 res-1 轉移到第二個新的保留項目 res-2。在本範例中:

  • 修改 res-1,讓 2 個 n1-standard-1 執行個體各有 2 個 P100 GPU (2 個 vCPU 和 2 個 P100 GPU)。
  • 新增 res-2,讓 2 個 n1-standard-2 執行個體各有 1 個 P100 GPU (4 個 vCPU 和 2 個 P100 GPU)。

承諾合約中預留的 GPU 總數維持為 4 個。

gcloud compute commitments update-reservations my-commitment-with-reservations \
    --region=us-central1 \
    --reservations-from-file=two-reservations.yaml

其中,two-reservations.yaml 包含:

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 2
  machine_type: n1-standard-1
  accelerator:
  - count: 1
    type: nvidia-tesla-p100
- reservation: res-2
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 2
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

API

使用 regionCommitments.updateReservations 方法。

例如,建立具有下列保留項目的承諾:

  • res-1 有 4 個 n1-standard-1 執行個體,其各有 1 個 nvidia-tesla-p100 GPU (4 個 vCPU 和 4 個 P100 GPU)。

在本範例中,總計預留資源包含 4 個 P100 GPU。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/us-central1/commitments

{
  "name": "my-commitment-with-reservation",
  "plan": "TWELVE_MONTH",
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "4",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-1"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ],
  "resources":
  [
    {
      "amount": "10",
      "type": "VCPU"
    },
    {
      "amount": "32768",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ]
}

更新承諾,以將部分資源從 res-1 轉移到第二個新的保留項目 res-2。在本範例中:

  • 修改 res-1,讓 2 個 n1-standard-1 執行個體各有 2 個 P100 GPU (2 個 vCPU 和 2 個 P100 GPU)。
  • 新增 res-2,讓 2 個 n1-standard-2 執行個體各有 1 個 P100 GPU (4 個 vCPU 和 2 個 P100 GPU)。

承諾合約中預留的 GPU 總數維持為 4 個。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/us-central1/commitments/my-commitment-with-reservation/updateReservations

{
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-1"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    },
    {
      "name": "res-2",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ]
}

查看保留項目使用情形報表

利用使用情形匯出功能,將 Compute Engine 的詳細使用情形報表匯出至 Cloud Storage 值區。如需操作說明,請參閱查看使用情形報告

使用情形報表會顯示:

  • 使用中的預留資源。此類別的項目包括一般 vCPU、記憶體、GPU 和本機 SSD 資源。
  • 未使用的預留資源。此類別的項目包括一般 SKU 名稱和「保留項目」資源 URI。
  • 總計預留資源。此類別的項目包括「保留項目」SKU 名稱和「保留項目」資源 URI。執行這些項目不會產生任何費用。 請使用這些項目來計算有多少使用中的保留項目。
判定結果 MeasurementId 格式 Resource URI 格式
使用中的預留資源 com.google.cloud/services/compute-engine/[SKU_NAME] https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/[RESOURCE_TYPE]/[RESOURCE_NAME]

例如:https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance
未使用的預留資源 com.google.cloud/services/compute-engine/[SKU_NAME] https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations/[RESERVATION_NAME]

例如:https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-a/reservations/my-reservation
總計預留資源 com.google.cloud/services/compute-engine/Reservation[SKU_NAME] https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations/[RESERVATION_NAME]

例如:https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-a/reservations/my-reservation

例如,在以下來自 my-reservation 保留項目之使用情形報表的程式碼片段中:

  • 第 1 列顯示目前正在使用的預留 RAM。這一列的 ResourceId 顯示 my-instance 執行個體使用了這個 RAM。
  • 第 2 列顯示未使用的預留 RAM。這一列的 ResourceId 顯示 my-reservation 保留了這個預留 RAM;目前尚無任何執行個體使用。
  • 第 3 列顯示保留項目的總計預留 RAM。
Report Date,MeasurementId,Quantity,Unit,Resource URI,ResourceId,Location
2019-06-06,com.google.cloud/services/compute-engine/VmimageN1StandardRam,166970074857472,byte-seconds,https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/instances/my-instance,1775485842510981624,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/VmimageN1StandardRam,166970074857472,byte-seconds,https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/ReservationN1StandardRam,333940149714944,byte-seconds,https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
...

保留項目帳單

保留項目的計費方式依所預留資源的費用而定,且續用折扣、承諾使用折扣和自訂定價的適用條件如同一般 VM。

請參考下列範例:

  • 您在 us-central1 中有 3 個 vCPU 承諾
  • 您目前在 us-central1-a 中執行 5 個 vCPU
  • 您在 us-central1-a 有 10 個 vCPU 保留項目

有一些承諾使用折扣的保留項目範例

則計費方式如下:

涵蓋於 vCPU 數量
承諾使用折扣價格 3
隨選價格 (2 個已使用的 vCPU 保留項目和 5 個未使用的 vCPU 保留項目) 7

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件