将预留与承诺使用折扣相结合


承诺使用折扣 (CUD) 为 Compute Engine 资源提供大幅折扣,以换取 1 年期或 3 年期承诺使用合约(也称为承诺)。您承诺达到最低资源用量或最低支出金额,以获得资源使用费用的 CUD。但是,承诺不会为您的承诺资源预留可用区级容量。如需以折扣价格获取可用区级资源,并确保为它们预留容量,您必须购买承诺并为这些可用区级资源创建预留。

本文档介绍如何享受预留资源的 CUD,以及如何将预留附加到基于资源的承诺

准备工作

  • 查看预留的基础知识及其要求和限制。如需了解详情,请参阅 Compute Engine 可用区级资源的预留
  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

预留资源的 CUD

对于项目中任何符合条件的资源使用量,您都可以享受有效承诺的 CUD。如果您还有任何预留为该项目中的资源保留容量,则有效承诺中的 CUD 也适用于这些预留资源。如需使任何预留资源有资格享受 CUD,您需要满足以下要求:

  • 您没有获得任何其他形式的资源使用折扣。
  • 在承诺处于有效状态时,您的虚拟机必须使用预留。
  • 有效承诺与虚拟机使用的预留必须至少有以下匹配属性:

    • 应用的项目和区域
    • 机器家族系列

根据资源类型的不同,您可以通过以下任一方式享受预留资源的 CUD:

  • vCPU 和内存:如需获得一种或两种资源类型的 CUD,您可以购买包含所需资源类型的基于资源或基于支出的承诺。当项目中的虚拟机使用属性与此类有效承诺匹配的任何预留时,您将自动获得这些类型的预留资源的适用 CUD。如果您预留的资源超出承诺量,那么超出的资源不享受 CUD。

  • GPU 和本地 SSD 磁盘:如需获得一种或两种资源的 CUD,您必须执行以下操作:

    • 购买包含所需资源类型的基于资源的承诺。
    • 为所有承诺的资源创建预留并使用与承诺匹配的属性,并将这些预留附加到承诺。

    当项目中的虚拟机使用这些附加预留时,这些类型的预留资源将享受适用的 CUD。

将预留附加到基于资源的承诺

您可以将预留附加到任何基于资源的承诺,并确保在特定可用区中为您计划使用的承诺资源保留容量。您可以将多个预留附加到单个承诺;但但一个预留只能附加到一个承诺。购买承诺时,您可以通过以下方式之一将预留附加到该承诺:

  • 使用属性与承诺匹配的现有预留
  • 在购买承诺时创建新的匹配预留

在您购买包含附加预留的承诺后,只要承诺处于有效状态,预留就会一直保持有效状态。承诺使用合约到期时,Compute Engine 会自动删除所有附加预留。 删除这些预留不会影响使用这些预留的任何正在运行的虚拟机。正在运行的虚拟机将继续运行,您仍需要为这些虚拟机付费。

不需要附加预留的承诺资源

承诺的 vCPU 和内存不需要您将匹配的预留附加到承诺。但是,当您购买包含 vCPU 和/或内存的承诺时,您仍然可以选择附加指定这些资源的预留。如需了解如何仅为 vCPU 和/或内存购买承诺,而不附加预留,请参阅购买不含附加预留的承诺

需要附加预留的承诺资源

承诺的 GPU 和本地 SSD 磁盘需要您将匹配的预留附加到承诺。当您购买包含任何 GPU 和/或本地 SSD 磁盘的承诺时,你必须预留这些资源,并将这些预留附加到承诺。您可以使用单个预留或预留组合来这样做。购买此类承诺时,您还可以包含 vCPU 和/或内存。但是,您无需预留这些 vCPU 或内存。如需了解如何购买包含 GPU 和/或本地 SSD 磁盘的承诺,请参阅本文档中的购买包含附加预留的承诺

如需查看支持 GPU 和本地 SSD 磁盘 CUD 的机器系列的完整列表,请参阅基于资源的 CUD 文档中的承诺类型部分。

附加预留中允许的资源数量

对于 vCPU 和内存,您可以使预留指定多于或少于承诺数量的资源数量。如果您承诺的 vCPU 或内存多于您预留量,那么 Compute Engine 只会为这些预留的资源预留容量。但是,您仍然可以使用其他承诺的资源,具体取决于这些资源在您区域中的可用性。如果您预留的 vCPU 或内存多于承诺量,那么超出的预留资源不享受 CUD。

例如,如果您购买 4 个 vCPU 和 30 GB 内存的承诺,则可以选择执行以下操作之一:

  • 完全不附加任何预留。
  • 附加指定这些资源类型的任意组合的预留;例如:

    • 4 个 vCPU 和 30 GB 内存
    • 2 个 vCPU 和 50 GB 内存
    • 10 个 vCPU 和 10 GB 内存

但是,如果您的承诺包含任何 GPU 和/或本地 SSD 磁盘,则必须预留并附加所有这些资源。附加预留必须指定您承诺的 GPU 和本地 SSD 磁盘的确切数量和类型。因此,您的附加预留中也不能有任何其他数量或类型的 GPU 或本地 SSD 磁盘。例如,假设您购买了 30 GB 内存和 4 个 NVIDIA P100 GPU 的承诺。附加预留(或附加预留的组合)可以指定任意数量的 vCPU 或内存,但必须恰好指定 4 个 NVIDIA P100 类型的 GPU。在此示例中,您无法附加指定以下任何资源组合的预留:

  • 6 个 NVIDIA P100 GPU
  • 2 个 NVIDIA P100 GPU
  • 4 个 NVIDIA P100 GPU 和 2 个 NVIDIA V100 GPU
  • 4 个 NVIDIA P100 GPU 和 4 个本地 SSD 磁盘

购买包含附加预留的承诺使用合约

购买新承诺时,您可以通过以下任一方式将预留附加到承诺:

购买承诺后,您的承诺将于次日美国和加拿大太平洋时间(UTC-8,或夏令时期间为 UTC-7)上午 12 点生效。 从承诺购买到激活的这段时间内,承诺的状态保持为 NOT_YET_ACTIVE(在 Google Cloud 控制台中保持为 PENDING)。激活后,您的承诺状态将更改为 ACTIVE。例如,假设您在美国和加拿大太平洋时间(UTC-8 或 UTC-7)1 月 20 日晚上 10:00 购买了承诺。Compute Engine 会立即创建您的承诺,其状态为 NOT_YET_ACTIVE。但是,承诺仅在美国和加拿大太平洋时间(UTC-8 或 UTC-7)1 月 21 日零点才会变为 ACTIVE

要求

在购买包含附加预留的承诺之前,请先查看这些要求,并确保您的承诺和预留符合以下条件:

  • 您必须购买承诺并在同一项目和区域中创建附加的预留。
  • 您必须购买承诺并为同一机器家族系列中的资源创建附加的预留。
  • 您必须在附加预留上停用自动删除选项
  • 如果您的承诺具有 GPU,则预留中指定的 GPU 类型与承诺必须匹配。
  • 对于 GPU 和本地 SSD 磁盘,每种资源类型的预留资源数量必须与该资源类型的承诺资源数量完全一致。比方说,如果要购买 4 个 V100 GPU 的承诺,则承诺附加的预留必须指定总共 4 个 V100 GPU。但是,您预留的 vCPU 和内存的数量可能多于或少于您承诺中的数量。
  • 对于 GPU,请购买您要使用的特定 GPU 类型的承诺使用合约。例如,您可以为 NVIDIA P100 或 NVIDIA V100 购买承诺使用合约,但不能使用为 NVIDIA P100 GPU 购买的承诺使用合约来涵盖 NVIDIA V100 GPU。
  • 如果附加预留是共享预留,并且您希望在承诺项目以外使用该预留时获得适用的 CUD,则必须执行以下两项操作:

    • 仅在与承诺属于同一 Cloud Billing 账号的项目之间共享预留。
    • 为该 Cloud Billing 账号启用 CUD 共享

附加现有预留

您可以在购买承诺时使用 Google Cloud 控制台、Google Cloud CLI 或 REST 来附加现有预留。

控制台

在使用 Google Cloud 控制台购买承诺之前,请先选择要用于购买承诺的项目。如果为 Cloud Billing 账号启用了 CUD 共享,则您可以使用该 Cloud Billing 账号中的任何项目购买承诺。选择项目后,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往承诺使用折扣页面。

    转到“承诺使用折扣”

  2. 如需购买承诺,请点击 购买承诺。系统会打开购买承诺使用折扣页面,并显示硬件标签页。

  3. 名称字段中,输入承诺的名称。

  4. 区域字段中,选择您要在其中承诺使用 Compute Engine 资源的区域。

  5. 承诺类型字段中,选择承诺的资源的机器家族系列。以下承诺类型提供适用于 GPU 和/或本地 SSD 磁盘的选项:

    • 加速器优化的 A2,适用于 A2 机器类型资源
    • 加速器优化 A3,适用于 A3 High 机器类型资源
    • 加速器优化 A3 Mega,适用于 A3 Mega 机器类型资源
    • 计算优化的 C2,适用于 C2 机器类型资源
    • 计算优化的 C2D,适用于 C2D 机器类型资源
    • 通用 C3,适用于 C3 机器类型资源
    • 通用 C3D,适用于 C3D 机器类型资源
    • 通用 N1,适用于 N1 机器类型资源
    • 通用 N2,适用于 N2 机器类型资源
    • 通用 N2D,适用于 N2D 机器类型资源
    • 图形优化的 G2,适用于 G2 机器类型资源
    • 内存优化 M3,适用于 M3 机器类型资源
    • 存储优化 Z3,适用于 Z3 机器类型资源

  6. 时长字段中,选择承诺的期限。

  7. 核心数字段中,输入您要承诺使用的 vCPU 的数量。

  8. 内存字段中,输入您要承诺使用的内存量(以 GB 为单位)。

  9. 如需承诺使用 GPU,请在 GPU 部分中点击 添加 GPU,然后执行以下操作:

    1. GPU 类型字段中,选择 GPU 类型。
    2. GPU 数量字段中,输入 GPU 数量。
    3. 可选:如果您的 GPU 模型支持适用于图形工作负载的 NVIDIA RTX 虚拟工作站 (vWS),并且您计划运行图形密集型工作负载,请选中启用虚拟工作站 (NVIDIA GRID) 复选框。
  10. 如需承诺使用本地 SSD 磁盘,请在本地 SSD 部分中点击 添加 SSD,然后在 SSD 数量字段中指定磁盘数量。

  11. 如需将一个或多个现有预留附加到承诺,请在预留字段中选择附加现有预留

    Google Cloud 控制台会显示项目中其区域、机器类型和 GPU 类型与承诺一致的所有预留的列表。之后,执行以下操作:

    1. 可选。如需查看具有特定属性的预留,请在过滤条件菜单中,为所需的属性添加或移除过滤条件。
    2. 选择您要附加到承诺的所有预留。
  12. 如需完成购买承诺及附加预留的过程,请执行以下操作:

    1. 点击购买
    2. 购买承诺使用折扣对话框中,如果您同意服务专用条款,请再次点击购买

gcloud

如需通过附加现有预留来购买承诺,请运行 gcloud compute commitments create 命令。在您的命令中,添加 --existing-reservation 标志以指定要附加到承诺的现有预留。为要附加的每个现有预留添加一次此标志。您可以将任意数量的现有预留附加到承诺。

例如,如需通过附加两个预留来购买承诺,请运行以下命令:

gcloud compute commitments create COMMITMENT_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
    --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
    --plan=DURATION \
    --type=COMMITMENT_TYPE \
    --existing-reservation=name='RESERVATION_NAME_1',zone='RESERVATION_ZONE_1' \
    --existing-reservation=name='RESERVATION_NAME_2',zone='RESERVATION_ZONE_2'

替换以下内容:

  • COMMITMENT_NAME:承诺的名称。
  • REGION:承诺所在的区域。
  • PROJECT_ID:项目的 ID,您将在其中购买包含附加预留的承诺。
  • DURATION:承诺的期限,12-month36-month
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • accelerator-optimized(适用于 A2 机器类型资源)
    • accelerator-optimized-a3,适用于 A3 High 机器类型资源
    • accelerator-optimized-a3-mega,适用于 A3 Mega 机器类型资源
    • compute-optimized(适用于 C2 机器类型资源)
    • compute-optimized-c2d(适用于 C2D 机器类型资源)
    • compute-optimized-c3(适用于 C3 机器类型资源)
    • compute-optimized-c3d(适用于 C3D 机器类型资源)
    • general-purpose(适用于 N1 机器类型资源)
    • general-purpose-n2(适用于 N2 机器类型资源)
    • general-purpose-n2d(适用于 N2D 机器资源)
    • 适用于 G2 机器类型资源的 graphics-optimized
    • memory-optimized-m3(适用于 M3 机器类型资源)
    • storage-optimized-z3,适用于 Z3 机器类型资源

  • COMMITTED_VCPUS:您的承诺中包含的 vCPU 数量。该数字必须是正整数。

  • COMMITTED_MEMORY:您的承诺中包含的内存量,以 MB 或 GB 为单位。例如 10240MB10GB。如果您未指定单位,Compute Engine 将使用 GB 作为单位。您可以按 0.25 GB 的增量购买内存。

  • COMMITTED_LOCAL_SSD:您的承诺中包含的本地 SSD 空间,以 GB 为单位。每个本地 SSD 磁盘为 375 GB。

  • COMMITTED_ACCELERATOR_COUNT:您的承诺中包含的 GPU 数量。

  • COMMITTED_ACCELERATOR_TYPE:您的承诺中包含的 GPU 类型。

  • RESERVATION_NAME_1RESERVATION_NAME_2:要附加到承诺的现有预留的名称。

  • RESERVATION_ZONE_1RESERVATION_ZONE_2:要附加到承诺的现有预留的可用区。

示例:通过附加现有预留来购买承诺

假设项目 myprojectus-central1-aus-central1-b 可用区中有两个预留 res-01res-02。假设这些预留包含 4 个 NVIDIA P100 GPU 和 4 个本地 SSD 磁盘的总容量。如需在此项目的 us-central1 区域中为这些 GPU 和本地 SSD 磁盘购买新承诺,并将这些现有预留用作附加预留,请运行以下命令。请注意,示例承诺还包含 vCPU 和内存。

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --existing-reservation=name=res-01,zone=us-central1-a \
    --existing-reservation=name=res-02,zone=us-central1-b
    

REST

如需通过附加现有预留来购买承诺,请向 regionCommitments.insert 方法发出 POST 请求。在您的请求中添加 existingReservations 字段,以指定要附加到承诺的所有现有预留的逗号分隔列表。您可以将任意数量的现有预留附加到承诺。

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

{
  "name": "COMMITMENT_NAME",
  "plan": "DURATION",
  "type": COMMITMENT_TYPE,
  "resources":
  [
    {
      "amount": "COMMITTED_VCPUS",
      "type": "VCPU"
    },
    {
      "amount": "COMMITTED_MEMORY",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
      "amount": "COMMITTED_ACCELERATOR_COUNT",
      "type": "ACCELERATOR"
    }
    {
      "amount": "COMMITTED_LOCAL_SSD",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations": "RESERVATION_URLs"
}

替换以下内容:

  • COMMITMENT_NAME:承诺的名称。
  • REGION:承诺所在的区域。
  • PROJECT_ID:项目的 ID,您将在其中购买包含附加预留的承诺。
  • DURATION:承诺的期限,TWELVE_MONTHTHIRTY_SIX_MONTH
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • ACCELERATOR_OPTIMIZED(适用于 A2 机器类型资源)
    • ACCELERATOR_OPTIMIZED_A3,适用于 A3 High 机器类型资源
    • ACCELERATOR_OPTIMIZED_A3_MEGA,适用于 A3 Mega 机器类型资源
    • COMPUTE_OPTIMIZED(适用于 C2 机器类型资源)
    • COMPUTE_OPTIMIZED_C2D(适用于 C2D 机器类型资源)
    • COMPUTE_OPTIMIZED_C3(适用于 C3 机器类型资源)
    • COMPUTE_OPTIMIZED_C3D(适用于 C3D 机器类型资源)
    • GENERAL_PURPOSE(适用于 N1 机器类型资源)
    • GENERAL_PURPOSE_N2(适用于 N2 机器类型资源)
    • GENERAL_PURPOSE_N2D(适用于 N2D 机器资源)
    • 适用于 G2 机器类型资源的 GRAPHICS_OPTIMIZED
    • MEMORY_OPTIMIZED_M3(适用于 M3 机器类型资源)
    • STORAGE_OPTIMIZED_Z3,适用于 Z3 机器类型资源

  • COMMITTED_VCPUS:您的承诺中包含的 vCPU 数量。该数字必须是正整数。

  • COMMITTED_MEMORY:您的承诺中包含的内存量,以 MB 为单位。例如 10240MB。您可以按 256 MB 的增量购买内存。

  • COMMITTED_LOCAL_SSD:您的承诺中包含的本地 SSD 存储空间,以 GB 为单位。每个本地 SSD 磁盘为 375 GB。

  • COMMITTED_ACCELERATOR_COUNT:您的承诺中包含的 GPU 数量。

  • COMMITTED_ACCELERATOR_TYPE:您的承诺中包含的 GPU 类型。

  • RESERVATION_URLs:要附加到承诺的现有预留的网址的逗号分隔列表。例如,如需附加 res-1res-2 这两个预留,请指定以下网址:

    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/example-res-1",
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/reservations/example-res-2"
    

示例:通过附加现有预留来购买承诺

假设项目 myprojectus-central1-aus-central1-b 可用区中有两个预留 res-01res-02。假设这些预留包含 4 个 NVIDIA P100 GPU 和 4 个本地 SSD 磁盘的总容量。如需在此项目的 us-central1 区域中为这些 GPU 和本地 SSD 磁盘购买新承诺,并将这些现有预留用作附加预留,请发出以下 POST 请求。请注意,示例承诺还包含 vCPU 和内存。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE"
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    },
    {
      "amount": "1536000",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations":
  [
    "https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/reservations/res-01",
    "https://www.googleapis.com/compute/v1/projects/my-project/zone/us-central1-b/reservations/res-02"
  ]
}

创建要附加的新预留

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST,在购买承诺时创建附加预留。

控制台

在使用 Google Cloud 控制台购买承诺之前,请先选择要用于购买承诺的项目。如果为 Cloud Billing 账号启用了 CUD 共享,则您可以使用该 Cloud Billing 账号中的任何项目购买承诺。选择项目后,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往承诺使用折扣页面。

    转到“承诺使用折扣”

  2. 如需购买承诺,请点击 购买承诺。系统会打开购买承诺使用折扣页面,并显示硬件标签页。

  3. 名称字段中,输入承诺的名称。

  4. 区域字段中,选择您要在其中承诺使用 Compute Engine 资源的区域。

  5. 承诺类型字段中,选择承诺的资源的机器家族系列。以下承诺类型提供适用于 GPU 和/或本地 SSD 磁盘的选项:

    • 加速器优化的 A2,适用于 A2 机器类型资源
    • 加速器优化 A3,适用于 A3 High 机器类型资源
    • 加速器优化 A3 Mega,适用于 A3 Mega 机器类型资源
    • 计算优化的 C2,适用于 C2 机器类型资源
    • 计算优化的 C2D,适用于 C2D 机器类型资源
    • 通用 C3,适用于 C3 机器类型资源
    • 通用 C3D,适用于 C3D 机器类型资源
    • 通用 N1,适用于 N1 机器类型资源
    • 通用 N2,适用于 N2 机器类型资源
    • 通用 N2D,适用于 N2D 机器类型资源
    • 图形优化的 G2,适用于 G2 机器类型资源
    • 内存优化 M3,适用于 M3 机器类型资源
    • 存储优化 Z3,适用于 Z3 机器类型资源

  6. 时长部分,选择 1 年3 年作为承诺的期限。

  7. 核心数字段中,输入您要承诺使用的 vCPU 的数量。

  8. 内存字段中,输入您要承诺使用的内存量(以 GB 为单位)。

  9. 如需承诺使用 GPU,请在 GPU 部分中点击 添加 GPU,然后执行以下操作:

    1. GPU 类型字段中,选择 GPU 类型。
    2. GPU 数量字段中,输入 GPU 数量。
    3. 可选:如果您的 GPU 模型支持适用于图形工作负载的 NVIDIA RTX 虚拟工作站 (vWS),并且您计划运行图形密集型工作负载,请选中启用虚拟工作站 (NVIDIA GRID) 复选框。
  10. 如需承诺使用本地 SSD 磁盘,请在本地 SSD 部分中点击 添加 SSD,然后在 SSD 数量字段中指定磁盘数量。

  11. 如需创建新的预留并将其附加到承诺,请在预留字段中选择创建预留,然后执行以下操作。针对您要创建和附加的每个新预留重复此步骤。

    1. 点击添加预留。系统会显示新预留部分。
    2. 名称字段中,输入附加预留的名称。
    3. 区域字段中,选择与您的承诺相同的区域。
    4. 可用区字段中,选择您要在其中预留资源的可用区。
    5. 共享类型部分中,通过以下方式之一指定您希望如何共享此预留:

      • 如需创建单项目预留,请选择本地
      • 如需创建与多个项目共享的预留,请选择共享。然后,如需指定要与之共享此预留的项目,请点击 添加项目,然后从当前项目的组织中选择所需的项目。
    6. 搭配虚拟机实例使用字段中,通过以下方式之一选择您希望虚拟机如何使用预留:

      • 如需允许具有匹配属性的虚拟机自动使用此预留,请点击自动使用预留(默认)。
      • 如需只有在创建具有匹配属性且通过名称明确指向此预留的虚拟机时使用此预留的资源,请点击选择特定预留
    7. 资源详情部分中,执行以下操作:

      1. 虚拟机实例数量字段中,输入要预留的虚拟机实例数量。
      2. 机器配置部分中,通过以下方式之一指定预留虚拟机的属性:

        1. 如需使用现有实例模板指定虚拟机的属性,请选择使用实例模板

          实例模板字段中,选择一个实例模板,以指定与您的承诺相同的机器家族系列。如果您选择区域级实例模板,则该实例模板的区域也必须与您的承诺中指定的区域一致。

        2. 如需手动指定虚拟机的属性,请选择选择机器类型,然后执行以下操作:

          1. 选择适用于您为承诺指定的机器系列的机器家族:

            • 通用,适用于通用机器系列
            • 计算优化,适用于计算优化机器系列
            • 内存优化,适用于内存优化机器系列
            • GPU,适用于加速器优化机器系列
          2. 在包含系列列的表中,选择您为承诺指定的同一机器系列。

          3. 机器类型字段中,通过以下方式之一指定预定义或自定义机器类型:

            1. 如需选择预定义机器类型,请选择预设,然后选择所需的机器类型。
            2. 如需选择自定义机器类型,请选择自定义,然后指定所需的核心数内存
          4. 如需指定满足最低要求的 CPU 平台和/或 GPU,请展开 CPU 平台和 GPU 菜单,然后执行以下操作:

            1. 可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台列表中选择一个选项。
            2. 可选:如需预留 GPU,请点击 添加 GPU。然后,在 GPU 类型GPU 数量字段中,选择每个虚拟机的 GPU 类型和数量。

          5. 如需预留本地 SSD 磁盘,请执行以下操作:

            1. 磁盘数量字段中,选择每个虚拟机所需的本地 SSD 磁盘的数量。
            2. 接口类型字段中,选择本地 SSD 磁盘的接口。
    8. 如需完成为此预留指定属性,请点击完成

  12. 如需完成购买承诺及附加预留的过程,请执行以下操作:

    1. 点击购买
    2. 购买承诺使用折扣对话框中,如果您同意服务专用条款,请再次点击购买

gcloud

如需在购买承诺时创建附加预留,请运行 gcloud compute commitments create 命令

根据您要附加单个预留还是多个预留,通过以下方式之一运行该命令:

  • 如需创建单个预留并附加到承诺,请运行以下命令来定义附加预留的属性:

    gcloud compute commitments create COMMITMENT_NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --plan DURATION \
        --type COMMITMENT_TYPE
        --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
        --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
        --reservation=RESERVATION_NAME \
        --reservation-zone=RESERVATION_ZONE \
        --machine-type=RESERVED_MACHINE_TYPE \
        --require-specific-reservation=REQUIRE_SPECIFIC_RESERVATION_VALUE \
        --vm-count=NUMBER_OF_RESERVED_VMs \
        --accelerator=type=RESERVED_ACCELERATOR_TYPE,count=RESERVED_ACCELERATOR_COUNT \
        --local-ssd=interface=INTERFACE_1,size=375 \
        --local-ssd=interface=INTERFACE_2,size=375 \
        --minimum-cpu-platform=MINIMUM_CPU_PLATFORM \
        --share-setting=SHARE_SETTING \
        --share-with=CONSUMER_PROJECT_ID_1,CONSUMER_PROJECT_ID_2
    
  • 如需创建多个预留并附加到承诺,请使用 YAML 文件定义预留的属性,然后在用于购买承诺的命令中指定该 YAML 文件。(可选)您还可以使用此 YAML 文件方法创建单个预留并附加到承诺。如需使用此方法创建附加预留,请执行以下操作:

    1. 在当前目录中创建 YAML 文件,并指定每个附加预留的配置。例如,如需指定与两个指定 GPU、两个本地 SSD 磁盘和满足最低要求的 CPU 平台的项目共享的共享预留的配置,请在 YAML 文件中添加以下文本:

      - reservation: RESERVATION_NAME
        reservation_zone: RESERVATION_ZONE
        require_specific_reservation: REQUIRE_SPECIFIC_RESERVATION_VALUE
        vm_count: NUMBER_OF_RESERVED_VMs
        machine_type: RESERVED_MACHINE_TYPE
        accelerator:
        - count: RESERVED_ACCELERATOR_COUNT
          type: RESERVED_ACCELERATOR_TYPE
        localssd:
        - interface: INTERFACE_1
          size: 375
        - interface: INTERFACE_2
          size: 375
        project: OWNER_PROJECT_ID
        minimum-cpu-platform: MINIMUM_CPU_PLATFORM
        share-setting: SHARE_SETTING
        share-with:
        - CONSUMER_PROJECT_ID_1
        - CONSUMER_PROJECT_ID_2
      
      

      如需为多个预留指定配置,请为要创建的每个预留重复这些属性。您可以将任意数量的现有预留附加到承诺。

    2. 运行 gcloud compute commitments create 命令并添加 --reservation-from-file 标志。

      gcloud compute commitments create COMMITMENT_NAME \
          --region REGION \
          --project PROJECT_ID \
          --plan DURATION \
          --type COMMITMENT_TYPE \
          --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
          --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
          --reservations-from-file=YAML_FILE
      

将以下字段替换为承诺和附加预留的相应属性:

承诺

  • COMMITMENT_NAME:承诺的名称。
  • REGION:承诺所在的区域。
  • PROJECT_ID:项目的 ID,您将在其中购买包含附加预留的承诺。
  • DURATION:承诺的期限,12-month36-month
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • accelerator-optimized(适用于 A2 机器类型资源)
    • accelerator-optimized-a3,适用于 A3 High 机器类型资源
    • accelerator-optimized-a3-mega,适用于 A3 Mega 机器类型资源
    • compute-optimized(适用于 C2 机器类型资源)
    • compute-optimized-c2d(适用于 C2D 机器类型资源)
    • compute-optimized-c3(适用于 C3 机器类型资源)
    • compute-optimized-c3d(适用于 C3D 机器类型资源)
    • general-purpose(适用于 N1 机器类型资源)
    • general-purpose-n2(适用于 N2 机器类型资源)
    • general-purpose-n2d(适用于 N2D 机器资源)
    • 适用于 G2 机器类型资源的 graphics-optimized
    • memory-optimized-m3(适用于 M3 机器类型资源)
    • storage-optimized-z3,适用于 Z3 机器类型资源

  • COMMITTED_VCPUS:您的承诺中包含的 vCPU 数量。该数字必须是正整数。

  • COMMITTED_MEMORY:您的承诺中包含的内存量,以 MB 或 GB 为单位。例如 10GB10240MB。如果您未指定单位,Compute Engine 将使用 GB 作为单位。您可以按 0.25 GB 的增量购买内存。

  • COMMITTED_LOCAL_SSD:您的承诺中包含的本地 SSD 存储空间,以 GB 为单位。每个本地 SSD 磁盘为 375 GB。

  • COMMITTED_ACCELERATOR_COUNT:您的承诺中包含的 GPU 数量。

  • COMMITTED_ACCELERATOR_TYPE:您的承诺中包含的 GPU 类型。

  • YAML_FILE:包含附加预留配置的 YAML 文件的路径。

附加预留

  • RESERVATION_NAME:附加预留的名称。
  • RESERVATION_ZONE:附加预留的可用区。
  • REQUIRE_SPECIFIC_RESERVATION_VALUE:指定附加预留是否为明确指定的预留(truefalse)。如需详细了解明确指定的预留,请参阅预留的工作原理
  • NUMBER_OF_RESERVED_VMS:在附加预留中预留的虚拟机数量。
  • RESERVED_MACHINE_TYPE:附加预留中的虚拟机机器类型

    • 对于预定义机器类型,请使用 MACHINE_FAMILY-standard-CPUS 格式;例如 n2-standard-4
    • 对于自定义机器类型,请使用 MACHINE_FAMILY-custom-CPUS-MEMORY 格式;例如 n2-custom-4-5120。如需查看限制条件的完整列表,请参阅自定义机器类型的规范

      替换以下内容:

      • MACHINE_FAMILY:机器类型系列;例如,为 N2 虚拟机指定 n2
      • CPUSvCPUs 的数量。
      • MEMORY:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供;例如,如需创建配备 4 个 vCPU 和 5 GB 内存(大小为 5120 MB)的 N2 虚拟机,请使用 n2-custom-4-5120
  • RESERVED_ACCELERATOR_COUNT:您要在附加预留中为每个虚拟机添加的 GPU 数量。

  • RESERVED_ACCELERATOR_TYPE:您要在附加预留中添加的加速器类型

  • INTERFACE_1INTERFACE_2:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括 scsinvme。每个本地 SSD 磁盘为 375 GB。对要添加的每个本地 SSD 磁盘重复 local_ssd 参数。您最多可以指定 24 个本地 SSD 磁盘。

  • OWNER_PROJECT_ID:项目的 ID,您将在其中购买包含附加预留的承诺。如果要在多个使用方项目之间共享附加预留,请指定此字段。

  • MINIMUM_CPU_PLATFORM:您要为附加预留指定的满足最低要求的 CPU 平台。

  • SHARE_SETTING:附加预留的共享类型。如果要在多个使用方项目之间共享附加预留,请将此字段的值指定为 projects。如果要创建单项目预留,请排除此字段。

  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2:可以共享此预留的项目的项目 ID,例如 project-1project-2。您最多可以添加 100 个使用方项目。这些项目必须与所有者项目位于同一组织中。请勿添加创建此预留的项目的 ID,因为默认情况下,该项目可以使用此预留。如果要创建单项目预留,请排除这些字段。

只有在请求时目标可用区中有足够的指定机器类型资源和足够的配额时,Compute Engine 才会创建承诺和附加预留。如果您的购买成功,您会看到如下所示的成功消息:

Created[https://www.googleapis.com/compute/v1/projects/your-project/regions/your-region/commitments/your-commitment-name]

通过创建要附加的新预留来购买承诺的示例

以下示例场景和命令展示了如何通过创建要附加到承诺的新预留来为 GPU 和/或本地 SSD 磁盘购买承诺。

示例 1:通过附加单个新预留为 GPU 购买承诺

假设您要在 us-central1 区域中购买包含 4 个 NVIDIA V100 GPU 的承诺 commitment-01。您要创建新预留 reservation-01 作为这些 GPU 的附加预留。假设您还想要指定 Compute Engine 在 us-central1-a 可用区中的 2 个 n1-standard-32 虚拟机上使用这些预留的 GPU。如需购买此示例承诺及其附加预留,请运行以下命令:

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --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-32 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

示例 2:为 GPU 购买承诺,但不为 vCPU 或内存购买承诺

如需为 GPU 和本地 SSD 磁盘购买承诺并预留 GPU 和本地 SSD 磁盘,但不为 vCPU 或内存购买承诺,请指定 0 作为 vCPU 和内存数量的值。例如,假设您想要为 us-west2 区域中的单个 NVIDIA P4 GPU 购买承诺 commitment-02。您还希望创建新的预留作为附加预留,并指定 Compute Engine 在 us-west2-b 可用区中的 n1-standard-2 虚拟机上使用预留的 GPU。如需购买此示例承诺及其附加预留,请运行以下命令:

gcloud compute commitments create commitment-02 \
    --region=us-west2 \
    --project=myproject \
    --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-2 \
    --accelerator=type=nvidia-tesla-p4,count=1 \
    --vm-count=1

示例 3:通过附加多个新预留为 GPU 和本地 SSD 磁盘购买承诺

假设您想要为 us-central1 区域中的 1 个 NVIDIA V 100 GPU 和 2 个本地 SSD 磁盘购买承诺 commitment-03。您还希望在 us-central1-a 可用区中创建和附加两个预留。在第一个预留 res-01 中,您想要预留 1 个 n1-standard-2 虚拟机和 1 个 GPU。您希望将 res-01 设置为指定的预留,这表示您必须明确指定该预留的名称才能使用其预留的虚拟机。在第二个预留 res-02 中,您想要预留 1 个 n1-standard-8 虚拟机,并挂接 2 种本地 SSD 磁盘。

如需购买包含附加预留的此示例承诺,请先创建具有两个预留属性的 YAML 文件。

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

创建 YAML 文件后,如需完成购买承诺及其附加预留的操作,请运行以下命令。请注意,示例承诺还包含 vCPU 和内存资源。

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

REST

如需在购买承诺时创建附加预留,请向 regionCommitments.insert 方法发出 POST 请求。在请求中添加 reservations 字段,以定义要创建和附加的所有新预留的列表。您可以将任意数量的现有预留附加到承诺。

  • 如需通过手动指定所有虚拟机属性来创建新预留,请添加 instanceProperties 字段并排除 sourceInstanceTemplate 字段。

    例如,如需手动指定与两个指定 GPU、两个本地 SSD 磁盘和满足最低要求的 CPU 平台的项目共享的共享预留的配置,请发出以下请求:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "DURATION",
    "type": COMMITMENT_TYPE,
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      }
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": "RESERVED_ACCELERATOR_COUNT",
                "acceleratorType": "RESERVED_ACCELERATOR_TYPE"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_1"
              },
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_2"
              }
            ],
            "machineType": "RESERVED_MACHINE_TYPE",
            "minCpuPlatform": "MINIMUM_CPU_PLATFORM"
          }
        },
        "specificReservationRequired": REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap":
          {
            "CONSUMER_PROJECT_ID_1":
            {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2":
            {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        }
      }
    ]
    }
    
    
  • 如需通过指定实例模板创建新预留,请添加 sourceInstanceTemplate 字段并排除 instanceProperties 字段。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "DURATION",
    "type": COMMITMENT_TYPE,
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      }
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        },
        "specificReservationRequired": REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap":
          {
            "CONSUMER_PROJECT_ID_1":
            {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2":
            {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        }
      }
    ]
    }
    
    

将以下字段替换为承诺和附加预留的相应属性:

承诺

  • COMMITMENT_NAME:承诺的名称。
  • REGION:承诺所在的区域。
  • PROJECT_ID:项目的 ID,您将在其中购买包含附加预留的承诺。
  • DURATION:承诺的期限,TWELVE_MONTHTHIRTY_SIX_MONTH
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • ACCELERATOR_OPTIMIZED(适用于 A2 机器类型资源)
    • ACCELERATOR_OPTIMIZED_A3,适用于 A3 High 机器类型资源
    • ACCELERATOR_OPTIMIZED_A3_MEGA,适用于 A3 Mega 机器类型资源
    • COMPUTE_OPTIMIZED(适用于 C2 机器类型资源)
    • COMPUTE_OPTIMIZED_C2D(适用于 C2D 机器类型资源)
    • COMPUTE_OPTIMIZED_C3(适用于 C3 机器类型资源)
    • COMPUTE_OPTIMIZED_C3D(适用于 C3D 机器类型资源)
    • GENERAL_PURPOSE(适用于 N1 机器类型资源)
    • GENERAL_PURPOSE_N2(适用于 N2 机器类型资源)
    • GENERAL_PURPOSE_N2D(适用于 N2D 机器资源)
    • 适用于 G2 机器类型资源的 GRAPHICS_OPTIMIZED
    • MEMORY_OPTIMIZED_M3(适用于 M3 机器类型资源)
    • STORAGE_OPTIMIZED_Z3,适用于 Z3 机器类型资源

  • COMMITTED_VCPUS:您的承诺中包含的 vCPU 数量。该数字必须是正整数。

  • COMMITTED_MEMORY:您的承诺中包含的内存量,以 MB 为单位。例如 10240MB。您可以按 256 MB 的增量购买内存。

  • COMMITTED_LOCAL_SSD:您的承诺中包含的本地 SSD 存储空间,以 GB 为单位。每个本地 SSD 磁盘为 375 GB。

  • COMMITTED_ACCELERATOR_COUNT:您的承诺中包含的 GPU 数量。

  • COMMITTED_ACCELERATOR_TYPE:您的承诺中包含的 GPU 类型。

附加预留

  • RESERVATION_NAME:附加预留的名称。
  • RESERVATION_ZONE:附加预留的可用区。
  • REQUIRE_SPECIFIC_RESERVATION_VALUE:指定附加预留是否为明确指定的预留(truefalse)。如需详细了解明确指定的预留,请参阅预留的工作原理
  • NUMBER_OF_RESERVED_VMS:在附加预留中预留的虚拟机数量。
  • RESERVED_MACHINE_TYPE:附加预留中的虚拟机机器类型

    • 对于预定义机器类型,请使用 MACHINE_FAMILY-standard-CPUS 格式;例如 n2-standard-4
    • 对于自定义机器类型,请使用 MACHINE_FAMILY-custom-CPUS-MEMORY 格式;例如 n2-custom-4-5120。如需查看限制条件的完整列表,请参阅自定义机器类型的规范

      替换以下内容:

      • MACHINE_FAMILY:机器类型系列;例如,为 N2 虚拟机指定 n2
      • CPUSvCPUs 的数量。
      • MEMORY:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供;例如,如需创建配备 4 个 vCPU 和 5 GB 内存(大小为 5120 MB)的 N2 虚拟机,请使用 n2-custom-4-5120
  • RESERVED_ACCELERATOR_COUNT:您要在附加预留中为每个虚拟机添加的 GPU 数量。

  • RESERVED_ACCELERATOR_TYPE:您要在附加预留中添加的加速器类型

  • INTERFACE_1INTERFACE_2:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括 scsinvme。每个本地 SSD 磁盘为 375 GB。对要添加的每个本地 SSD 磁盘重复 localSsds 参数。您最多可以指定 24 个本地 SSD 磁盘。

  • MINIMUM_CPU_PLATFORM:您要为附加预留指定的满足最低要求的 CPU 平台。

  • INSTANCE_TEMPLATE_NAME:您要用于创建附加预留的实例模板的名称。

  • SHARE_SETTING:附加预留的共享类型。如果要在多个使用方项目之间共享附加预留,请将此字段的值指定为 SPECIFIC_PROJECTS。如果要创建单项目预留,请排除此字段。

  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2:可以共享此预留的项目的项目 ID,例如 project-1project-2。您最多可以添加 100 个使用方项目。这些项目必须与所有者项目位于同一组织中。请勿添加创建此预留的项目的 ID,因为默认情况下,该项目可以使用此预留。如果要创建单项目预留,请排除这些字段。

只有在请求时目标可用区中有足够的指定机器类型资源和足够的配额时,Compute Engine 才会创建承诺和附加预留。如果购买成功,Compute Engine 会为您的 REST API 请求返回 200 状态。

通过创建要附加的新预留来购买承诺的示例

以下示例场景和命令展示了如何通过创建要附加到承诺的新预留来为 GPU 和/或本地 SSD 磁盘购买承诺。

示例 1:通过附加单个新预留为 GPU 购买承诺

假设您要在 us-central1 区域中购买包含 4 个 NVIDIA V100 GPU 的承诺 commitment-01。您要创建新预留 reservation-01 作为这些 GPU 的附加预留。假设您还想要指定 Compute Engine 在 us-central1-a 可用区中的 2 个 n1-standard-8 虚拟机上使用这些预留的 GPU。如需购买此示例承诺及其附加预留,请发出以下 POST 请求:

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE"
  "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"
    }
  ]
}

示例 2:为 GPU 购买承诺,但不为 vCPU 或内存购买承诺

如需为 GPU 和本地 SSD 磁盘购买承诺并预留 GPU 和本地 SSD 磁盘,但不为 vCPU 或内存购买承诺,请指定 0 作为 vCPU 和内存数量的值。例如,假设您想要为 us-west2 区域中的单个 NVIDIA P4 GPU 购买承诺 commitment-02。您还希望创建新的预留作为附加预留,并指定 Compute Engine 在 us-west2-b 可用区中的 n1-standard-2 虚拟机上使用预留的 GPU。如需购买此示例承诺及其附加预留,请发出以下 POST 请求:

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west2/commitments

{
  "name": "commitment-02",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p4",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 4,
              "acceleratorType": "nvidia-tesla-p4"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-west2-b"
    }
  ]
}

示例 3:通过附加多个新预留为 GPU 和本地 SSD 磁盘购买承诺

假设您想要为 us-central1 区域中的 1 个 NVIDIA V 100 GPU 和 2 个本地 SSD 磁盘购买承诺 commitment-03。您还希望在 us-central1-a 可用区中创建和附加两个预留。在第一个预留 res-01 中,您想要预留 1 个 n1-standard-2 虚拟机和 1 个 GPU。您希望将 res-01 设置为指定的预留,这表示您必须明确指定该预留的名称才能使用其预留的虚拟机。在第二个预留 res-02 中,您想要预留 1 个 n1-standard-8 虚拟机,并挂接 2 种本地 SSD 磁盘。如需购买带有附加预留的此示例承诺,请发出以下 POST 请求。请注意,示例承诺还包含 vCPU 和内存资源。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-03",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "1",
      "type": "ACCELERATOR"
    },
    {
      "amount": "768000",
      "type": "LOCAL_SSD"
    }
  ],
  "reservations":
  [
    {
      "name": "res-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "us-central1-a"
    },
    {
      "name": "res-02",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "SCSI"
            },
            {
              "diskSizeGb": "375",
              "interface": "NVME"
            }
          ]
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

更换附加到承诺使用合约的预留

如果您要修改使用承诺资源的虚拟机的类型和数量,请将承诺的现有附加预留替换为新预留。

替换预留将始终是新创建的预留。如需替换附加预留,您必须指定要用作替换的预留的属性。然后,Compute Engine 会自动创建具有这些属性的新预留,并使用它来替换附加预留。您无法使用现有预留来替换附加预留。

允许的更改

将承诺使用合约的现有附加预留替换为新预留时,您可以请求进行以下任一更改:

  • 您可以预留其他机器类型的虚拟机。但是,您仍必须预留同一机器系列中的虚拟机,以便继续享受预留资源的 CUD。
  • 您可以更改要预留的虚拟机数量。
  • 只要预留的 GPU 和本地 SSD 磁盘的总数保持不变,就可以更改每个虚拟机附加的 GPU 和本地 SSD 磁盘的数量。
  • 您可以将替换后的预留指定为本地预留或共享预留。

要求

将承诺的附加预留替换为新预留时,您的请求必须满足以下所有要求:

  • 一次只能用一个新的附加预留替换一个附加预留。如需替换附加预留,请通过将虚拟机数量设置为 0 来移除现有的附加预留,并定义要替换它的新附加预留。
  • 新预留必须与承诺位于同一项目中。
  • 新预留必须与已移除预留位于同一可用区。
  • 新预留中指定的 GPU 数量和类型必须与已移除预留匹配。
  • 新预留中指定的本地 SSD 磁盘的数量和类型必须与已移除预留匹配。
  • 每个请求最多只能更改 100 个虚拟机。如需进行涉及 100 多个虚拟机的更改,请将更改分成多个较小的请求,或与 Google Cloud 支持团队联系。

您替换预留的请求还取决于当时的容量可用性。如果请求的容量不可用,则请求将失败并返回资源可用性错误,您可以尝试通过修改或推迟请求来解决这个问题。 如需了解详情,请参阅排查资源可用性问题的文档。

如果替换附加预留的请求失败,则附加预留和现有预留资源不会受影响。如需保留容量,请等至替换资源的请求成功后,对虚拟机进行相应的更改。

替换附加预留的步骤

您可以使用 Google Cloud CLI 或 REST 替换承诺的预留。

gcloud

如需替换附加到承诺的预留,请执行以下操作:

  1. 在当前目录中创建一个 YAML 文件,其中包含以下附加预留的配置:

    • 您要替换的当前预留。

      如需检索此预留的详细信息,请参阅查看预留详细信息

    • 新替换预留。

    YAML 文件的内容如下所示:

    - reservation: CURRENT_RESERVATION_NAME
      reservation_zone: CURRENT_RESERVATION_ZONE
      vm_count: 0
      machine_type: CURRENT_RESERVATION_MACHINE_TYPE
      accelerator:
      - count: CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS
        type: CURRENT_RESERVATION_ACCELERATOR_TYPE
      localssd:
      - interface: CURRENT_RESERVATION_INTERFACE_1
        size: 375
      - interface: CURRENT_RESERVATION_INTERFACE_2
        size: 375
      project: CURRENT_RESERVATION_PROJECT_ID
      share-setting: CURRENT_RESERVATION_SHARE_SETTING
      share-with:
      - CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1
      - CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2
    - reservation: REPLACEMENT_RESERVATION_NAME
      reservation_zone: REPLACEMENT_RESERVATION_ZONE
      vm_count: REPLACEMENT_RESERVATION_NUMBER_OF_VMs
      machine_type: REPLACEMENT_RESERVATION_MACHINE_TYPE
      accelerator:
      - count: REPLACEMENT_RESERVATION_ACCELERATOR_COUNT
        type: REPLACEMENT_RESERVATION_ACCELERATOR_TYPE
      localssd:
      - interface: REPLACEMENT_RESERVATION_INTERFACE_1
        size: 375
      - interface: REPLACEMENT_RESERVATION_INTERFACE_2
        size: 375
      project: REPLACEMENT_RESERVATION_PROJECT_ID
      share-setting: REPLACEMENT_RESERVATION_SHARE_SETTING
      share-with:
      - REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
      - REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2
    
    

    将以下内容替换为当前预留和替换预留的相应属性:

    当前预留

    对于当前预留,以下所有属性必须与您查看预留时完全相同。忽略当前预留还没有的任何属性的字段。

    • CURRENT_RESERVATION_NAME:当前附加预留的名称。
    • CURRENT_RESERVATION_ZONE:当前附加预留的可用区。
    • CURRENT_RESERVATION_MACHINE_TYPE:当前附加预留的机器类型
    • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS:当前附加预留中预留的 GPU 数量。
    • CURRENT_RESERVATION_ACCELERATOR_TYPE:当前附加预留中预留的加速器类型
    • CURRENT_RESERVATION_INTERFACE_1CURRENT_RESERVATION_INTERFACE_2:在当前附加预留中每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括 scsinvme。每个本地 SSD 磁盘为 375 GB。对所有预留的本地 SSD 磁盘重复 local_ssd 参数。
    • CURRENT_RESERVATION_PROJECT_ID:包含承诺和附加预留的当前项目的项目 ID。如果在多个使用方项目之间共享当前附加预留,请指定此字段。
    • CURRENT_RESERVATION_SHARE_SETTING:当前预留的共享类型。如果在多个使用方项目之间共享当前附加预留,请将此字段的值指定为 projects
    • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2:您与之共享当前附加预留的项目的项目 ID,例如 project-1project-2

    替换预留

    对于替换预留,根据需要设置以下属性。确保指定这些属性时满足所有要求。忽略您不想使用的任何其他字段。

    • REPLACEMENT_RESERVATION_NAME:新替换预留的名称。
    • REPLACEMENT_RESERVATION_ZONE:新替换预留的可用区。
    • REPLACEMENT_RESERVATION_NUMBER_OF_VMS:您要在新替换预留中预留的虚拟机数量。
    • REPLACEMENT_RESERVATION_MACHINE_TYPE:新替换预留中的虚拟机所需的机器类型

      • 对于预定义机器类型,请使用 MACHINE_FAMILY-standard-CPUS 格式;例如 n2-standard-4
      • 对于自定义机器类型,请使用 MACHINE_FAMILY-custom-CPUS-MEMORY 格式;例如 n2-custom-4-5120。如需查看限制条件的完整列表,请参阅自定义机器类型的规范

      替换以下内容:

      • MACHINE_FAMILY:机器类型系列;例如,为 N2 虚拟机指定 n2
      • CPUSvCPUs 的数量。
      • MEMORY:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供;例如,如需创建配备 4 个 vCPU 和 5 GB 内存(大小为 5120 MB)的 N2 虚拟机,请使用 n2-custom-4-5120
    • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS:您要在替换预留中为每个虚拟机添加的 GPU 数量。

    • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE:您要在替换预留中添加的加速器类型

    • REPLACEMENT_RESERVATION_INTERFACE_1REPLACEMENT_RESERVATION_INTERFACE_2:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括 scsinvme。 每个本地 SSD 磁盘为 375 GB。对要添加的每个本地 SSD 磁盘重复 local_ssd 参数。您最多可以指定 24 个本地 SSD 磁盘。

    • REPLACEMENT_RESERVATION_PROJECT_ID:包含承诺和附加预留的当前项目的项目 ID。如果要在多个使用方项目之间共享替换预留,请指定此字段。

    • REPLACEMENT_RESERVATION_SHARE_SETTING:替换预留的共享类型。如果要在多个使用方项目之间共享替换预留,请将此字段的值指定为 projects

    • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2:可以共享此预留的项目的项目 ID,例如 project-1,project-2。您最多可以添加 100 个使用方项目。 这些项目必须与所有者项目位于同一组织中。请勿添加 REPLACEMENT_RESERVATION_PROJECT_ID,默认情况下,它可以使用此预留。

  2. 运行 gcloud beta compute commitments update-reservations 命令并使用 --reservations-from-file 标志指定 YAML 文件的路径。

    gcloud beta compute commitments update-reservations COMMITMENT_NAME \
        --project= PROJECT_ID \
        --region= REGION \
        --reservations-from-file= YAML_FILE
    

    替换以下内容:

    • COMMITMENT_NAME:含附加预留的承诺的名称。
    • PROJECT_ID:含附加预留的承诺的项目 ID。
    • REGION:承诺所在的区域。
    • YAML_FILE:包含当前预留和替换预留的配置的 YAML 文件的路径。

替换附加到承诺的预留的示例

为了演示这一点,本部分显示含附加预留的承诺示例,以及如何替换附加预留示例

含附加预留的承诺示例

例如,假设您要使用以下命令更新购买的 my-commitment-with-reservations 承诺的附加预留:

  gcloud beta compute commitments create my-commitment-with-reservations \
      --region=asia-east1 \
      --resources=vcpu=16,memory=60GB,local-ssd=3000 \
      --resources-accelerator=type=nvidia-tesla-p100,count=4 \
      --plan=12-month \
      --type=general-purpose \
      --reservations-from-file=one-reservation.yaml

在本示例中,假设运行此命令时,one-reservation.yaml 是当前目录中的一个文件,其中包含以下内容,用于定义名为 res-1 的附加预留。

  - reservation: res-1
    reservation_zone: asia-east1-a
    vm_count: 4
    machine_type: n1-standard-4
    accelerator:
    - count: 1
      type: nvidia-tesla-p100
    local_ssd:
    - interface: scsi
      size: 375
    - interface: scsi
      size: 375

my-commitment-with-reservations 承诺及附加预留 res-1 生成了以下承诺的资源和预留的资源:

资源类型 承诺中的资源
(my-commitment-with-reservations)
当前附加预留中的资源
(res-1)
vCPU 和内存 16 个 vCPU 和 60 GB 16 个 vCPU 和 60 GB
(4 个预留的 n1-standard-4 虚拟机)*
GPU 4 个 P100 GPU 4 个 P100 GPU
(每个虚拟机 1 个 P100 GPU,适用于 4 个虚拟机)*
本地 SSD 磁盘数量 3000 GB 或 8 个本地 SSD 磁盘 3000 GB 或 8 个本地 SSD 磁盘
(每个虚拟机 750 GB 或 2 个本地 SSD 磁盘,适用于 4 个虚拟机)*

*具体来说,附加预留示例 res-1 预留 4 个 n1-standard-4 虚拟机,每个虚拟机具有 1 个 P100 GPU 和 2 个接口类型为 scsi 的本地 SSD 磁盘。n1-standard-4 机器类型为每个虚拟机使用 4 个 vCPU 和 15 GB。

替换附加预留示例

假设您要将附加预留 res-1 替换为新的附加预留 res-2,并将预留资源更改为以下内容:

资源类型 承诺中的资源
(my-commitment-with-reservations)
当前附加预留中的资源
(res-1)
替换附加预留中的资源
(res-2)
vCPU 和内存 16 个 vCPU 和 60 GB 16 个 vCPU 和 60 GB
(4 个预留的 n1-standard-4 虚拟机)*
16 个 vCPU 和 60 GB
(2 个预留和共享的 n1-standard-8 虚拟机)
GPU 4 个 P100 GPU 4 个 P100 GPU
(每个虚拟机 1 个 P100 GPU,适用于 4 个虚拟机)*
4 个 P100 GPU
(每个虚拟机 2 个 P100 GPU,适用于 2 个虚拟机)
本地 SSD 磁盘数量 3000 GB 或 8 个本地 SSD 磁盘 3000 GB 或 8 个本地 SSD 磁盘
(每个虚拟机 750 GB 或 2 个本地 SSD 磁盘,适用于 4 个虚拟机)*
3000 GB 或 8 个本地 SSD 磁盘
(每个虚拟机 1500 GB 或 4 个本地 SSD 磁盘,适用于 2 个虚拟机)*

*具体来说,附加预留示例 res-1 预留 4 个 n1-standard-4 虚拟机,每个虚拟机具有 1 个 P100 GPU 和 2 个接口类型为 scsi 的本地 SSD 磁盘。n1-standard-4 机器类型为每个虚拟机使用 4 个 vCPU 和 15 GB。

具体而言,替换附加预留定义了 res-2,它预留 2 个 n1-standard-8 虚拟机,每个虚拟机具有 1 个 P100 GPU 和 4 个接口类型为 scsi 的本地 SSD 磁盘。此外,res-2 已与其他 2 个项目(project-1project-2)共享,并且归当前项目 my-project 所有。n1-standard-8 机器类型为每个虚拟机使用 8 个 vCPU 和 30 GB。

如需将附加预留 res-1 替换为 my-commitment-with-reservations 承诺的 res-2,请执行以下操作:

  1. 在当前目录中创建一个名为 two-reservations.yaml 的文件,该文件包含以下内容:

    - reservation: res-1
      reservation_zone: asia-east1-a
      vm_count: 0
      machine_type: n1-standard-4
      accelerator:
      - count: 1
        type: nvidia-tesla-p100
      local_ssd:
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
    - reservation: res-2
      reservation_zone: asia-east1-a
      vm_count: 2
      machine_type: n1-standard-8
      accelerator:
      - count: 2
        type: nvidia-tesla-p100
      project: my-project
      share-setting: projects
      share-with:
      - project-1
      - project-2
      local_ssd:
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
      - interface: scsi
        size: 375
    
  2. 运行以下命令:

    gcloud beta compute commitments update-reservations my-commitment-with-reservations \
        --region=asia-east1 \
        --reservations-from-file=two-reservations.yaml
    

REST

如需替换附加到承诺的预留,请使用 regionCommitments.updateReservations 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/COMMITMENT_ZONE/commitments/COMMITMENT_NAME/updateReservations

{
  "reservations":
  [
    {
      "name": "REPLACEMENT_RESERVATION_NAME",
      "specificReservation":
      {
        "count": "REPLACEMENT_RESERVATION_NUMBER_OF_VMS",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": "REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS",
              "acceleratorType": "REPLACEMENT_RESERVATION_ACCELERATOR_TYPE"
            }
          ],
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "REPLACEMENT_RESERVATION_INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "REPLACEMENT_RESERVATION_INTERFACE_2"
            }
          ],
          "machineType": "REPLACEMENT_RESERVATION_MACHINE_TYPE"

        }
      },
      "zone": "REPLACEMENT_RESERVATION_ZONE",
      "shareSettings":
      {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap":
        {
          "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1":
          {
            "projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1"
          },
          "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2":
          {
            "projectId": "REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2"
          }
         }
      }
    },
    {
      "name": "CURRENT_RESERVATION_NAME",
      "specificReservation":
      {
        "count": "0",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": "CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS",
              "acceleratorType": "CURRENT_RESERVATION_ACCELERATOR_TYPE"
            }
          ],
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "CURRENT_RESERVATION_INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "CURRENT_RESERVATION_INTERFACE_2"
            }
          ],
          "machineType": "CURRENT_RESERVATION_MACHINE_TYPE"

        }
      },
      "zone": "CURRENT_RESERVATION_ZONE",
      "shareSettings":
      {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap":
        {
          "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1":
          {
            "projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1"
          },
          "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2":
          {
            "projectId": "CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2"
          }
         }
      }
    }
  ]
}

将以下内容替换为承诺、当前预留和替换预留的相应属性:

承诺

  • COMMITMENT_NAME:含附加预留的承诺的名称。
  • PROJECT_ID:含附加预留的承诺的项目 ID。这也是当前预留和附加预留的项目 ID。
  • COMMITMENT_ZONE:含附加预留的承诺的可用区。

当前预留

对于当前预留,以下所有属性必须与您查看预留时完全相同。忽略当前预留尚未指定的任何属性的字段。

  • CURRENT_RESERVATION_NAME:当前附加预留的名称。
  • CURRENT_RESERVATION_ZONE:当前附加预留的可用区。
  • CURRENT_RESERVATION_MACHINE_TYPE:当前附加预留的机器类型
  • CURRENT_RESERVATION_NUMBER_OF_ACCELERATORS:当前附加预留中预留的 GPU 数量。
  • CURRENT_RESERVATION_ACCELERATOR_TYPE:当前附加预留中预留的加速器类型
  • CURRENT_RESERVATION_INTERFACE_1CURRENT_RESERVATION_INTERFACE_2:在当前附加预留中每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括 scsinvme。每个本地 SSD 磁盘为 375 GB。对所有预留的本地 SSD 磁盘重复 localSsds 参数。
  • CURRENT_RESERVATION_SHARE_SETTING:当前预留的共享类型。如果在多个使用方项目之间共享当前附加预留,请将此参数的值指定为 projects
  • CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2:您与之共享当前附加预留的项目的项目 ID,例如 project-1project-2

替换预留

对于替换预留,根据需要设置以下属性。确保指定这些属性时满足所有要求。忽略您不想使用的任何其他字段。

  • REPLACEMENT_RESERVATION_NAME:新替换预留的名称。
  • REPLACEMENT_RESERVATION_ZONE:新替换预留的可用区。
  • REPLACEMENT_RESERVATION_NUMBER_OF_VMS:您要在新替换预留中预留的虚拟机数量。
  • REPLACEMENT_RESERVATION_MACHINE_TYPE:新替换预留中的虚拟机所需的机器类型

    • 对于预定义机器类型,请使用 MACHINE_FAMILY-standard-CPUS 格式;例如 n2-standard-4
    • 对于自定义机器类型,请使用 MACHINE_FAMILY-custom-CPUS-MEMORY 格式;例如 n2-custom-4-5120。如需查看限制条件的完整列表,请参阅自定义机器类型的规范

    替换以下内容:

    • MACHINE_FAMILY:机器类型系列;例如,为 N2 虚拟机指定 n2
    • CPUSvCPUs 的数量。
    • MEMORY:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供;例如,如需创建配备 4 个 vCPU 和 5 GB 内存(大小为 5120 MB)的 N2 虚拟机,请使用 n2-custom-4-5120
  • REPLACEMENT_RESERVATION_NUMBER_OF_ACCELERATORS:您要在替换预留中为每个虚拟机添加的 GPU 数量。

  • REPLACEMENT_RESERVATION_ACCELERATOR_TYPE:您要在替换预留中添加的加速器类型

  • REPLACEMENT_RESERVATION_INTERFACE_1REPLACEMENT_RESERVATION_INTERFACE_2:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括 scsinvme。 每个本地 SSD 磁盘为 375 GB。对要添加的每个本地 SSD 磁盘重复 localSsds 参数。您最多可以指定 24 个本地 SSD 磁盘。

  • REPLACEMENT_RESERVATION_SHARE_SETTING:替换预留的共享类型。如果要在多个使用方项目之间共享替换预留,请将此参数的值指定为 projects

  • REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2:可以共享此预留的项目的项目 ID,例如 project-1,project-2。您最多可以添加 100 个使用方项目。 这些项目必须与所有者项目位于同一组织中。请勿添加 PROJECT_ID,默认情况下,它可以使用此预留。

替换附加到承诺的预留的示例

为了演示这一点,本部分显示含附加预留的承诺示例,以及如何替换附加预留示例

含附加预留的承诺示例

例如,假设您想要通过发出以下 POST 请求,替换购买的 my-commitment-with-reservations 承诺的附加预留 res-1

  POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments

  {
    "name": "my-commitment-with-reservations",
    "plan": "TWELVE_MONTH",
    "reservations":
    [
      {
        "name": "res-1",
        "specificReservation":
        {
          "count": "4",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": "1",
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-4"
          }
        },
        "zone": "asia-east1-a"
      }
    ],
    "resources":
    [
      {
        "amount": "16",
        "type": "VCPU"
      },
      {
        "amount": "61440",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "nvidia-tesla-p100",
        "amount": "4",
        "type": "ACCELERATOR"
      }
      {
        "amount": "3072000",
        "type": "LOCAL_SSD"
      }
    ],
    "type": "GENERAL_PURPOSE"
  }

my-commitment-with-reservations 承诺及附加预留 res-1 生成了以下承诺的资源和预留的资源:

资源类型 承诺中的资源
(my-commitment-with-reservations)
当前附加预留中的资源
(res-1)
vCPU 和内存 16 个 vCPU 和 60 GB 16 个 vCPU 和 60 GB
(4 个预留的 n1-standard-4 虚拟机)*
GPU 4 个 P100 GPU 4 个 P100 GPU
(每个虚拟机 1 个 P100 GPU,适用于 4 个虚拟机)*
本地 SSD 磁盘数量 3000 GB 或 8 个本地 SSD 磁盘 3000 GB 或 8 个本地 SSD 磁盘
(每个虚拟机 750 GB 或 2 个本地 SSD 磁盘,适用于 4 个虚拟机)*

*具体来说,附加预留示例 res-1 预留 4 个 n1-standard-4 虚拟机,每个虚拟机具有 1 个 P100 GPU 和 2 个接口类型为 scsi 的本地 SSD 磁盘。n1-standard-4 机器类型为每个虚拟机使用 4 个 vCPU 和 15 GB。

替换附加预留示例

假设您要将附加预留 res-1 替换为新的附加预留 res-2,并将预留资源更改为以下内容:

资源类型 承诺中的资源
(my-commitment-with-reservations)
当前附加预留中的资源
(res-1)
替换附加预留中的资源
(res-2)
vCPU 和内存 16 个 vCPU 和 60 GB 16 个 vCPU 和 60 GB
(4 个预留的 n1-standard-4 虚拟机)*
16 个 vCPU 和 60 GB
(2 个预留和共享的 n1-standard-8 虚拟机)
GPU 4 个 P100 GPU 4 个 P100 GPU
(每个虚拟机 1 个 P100 GPU,适用于 4 个虚拟机)*
4 个 P100 GPU
(每个虚拟机 2 个 P100 GPU,适用于 2 个虚拟机)
本地 SSD 磁盘数量 3000 GB 或 8 个本地 SSD 磁盘 3000 GB 或 8 个本地 SSD 磁盘
(每个虚拟机 750 GB 或 2 个本地 SSD 磁盘,适用于 4 个虚拟机)*
3000 GB 或 8 个本地 SSD 磁盘
(每个虚拟机 1500 GB 或 4 个本地 SSD 磁盘,适用于 2 个虚拟机)*

*具体来说,附加预留示例 res-1 预留 4 个 n1-standard-4 虚拟机,每个虚拟机具有 1 个 P100 GPU 和 2 个接口类型为 scsi 的本地 SSD 磁盘。n1-standard-4 机器类型为每个虚拟机使用 4 个 vCPU 和 15 GB。

具体而言,替换附加预留定义了 res-2,它预留 2 个 n1-standard-8 虚拟机,每个虚拟机具有 1 个 P100 GPU 和 4 个接口类型为 scsi 的本地 SSD 磁盘。此外,res-2 已与其他 2 个项目(project-1project-2)共享,并且归当前项目 my-project 所有。n1-standard-8 机器类型为每个虚拟机使用 8 个 vCPU 和 30 GB。

如需将 my-commitment-with-reservations 承诺的附加预留 res-1 替换为 res-2,请使用 regionCommitments.updateReservations 方法发出以下 POST 请求:

  POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservations/updateReservations

  {
    "reservations":
    [
      {
        "name": "res-2",
        "specificReservation":
        {
          "count": "2",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": 2,
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-8"
          }
        },
        "zone": "asia-east1-a"
      },
      {
        "name": "res-1",
        "specificReservation":
        {
          "count": "0",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": 1,
                "acceleratorType": "nvidia-tesla-p100"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              },
              {
                "diskSizeGb": "375",
                "interface": "scsi"
              }
            ],
            "machineType": "n1-standard-4"
          }
        },
        "zone": "asia-east1-a"
      }
    ]
  }

后续步骤