购买包含附加预留的硬件承诺

Compute Engine 为您的可预测工作负载提供基于资源的承诺使用折扣 (CUD)。当您为任何 GPU 或大多数本地 SSD 磁盘购买承诺时,您必须预留这些资源,并将预留附加到承诺。

本文档介绍了如何使用 Google Cloud 控制台、gcloud CLI 或 REST 购买附加了预留的基于资源的承诺。

如需详细了解附加预留的工作原理,请参阅将预留附加到基于资源的承诺

如需购买不含附加预留的 vCPU 和内存承诺,请参阅购买不含附加预留的基于资源的承诺

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init
  • 设置默认区域和可用区
  • REST

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

      安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI

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

所需的角色

如需获得购买承诺和创建预留所需的权限,请让您的管理员为您授予项目的 Compute Admin (roles/compute.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含购买承诺和创建预留所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

购买承诺和创建预留需要以下权限:

  • compute.commitments.create
  • compute.reservations.create

您也可以使用自定义角色或其他预定义角色来获取这些权限。

默认情况下,项目所有者有权购买基于资源的承诺。不过,所有者可以创建包含或排除特定用户的自定义角色。请了解访问权限控制,以确保您有权购买基于资源的承诺。

购买包含附加预留的基于硬件资源的承诺

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

购买承诺后,您的承诺将于次日美国和加拿大太平洋时间(UTC-8,或夏令时期间为 UTC-7)上午 12 点生效。 Compute Engine 会为项目中购买承诺的每个区域维护项目安全锁。当您为项目中的任何区域购买新承诺时,Compute Engine 会将该区域的安全锁与新创建的承诺相关联。

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

要求

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

  • 您必须购买承诺并在同一项目和区域中创建附加的预留。
  • 您必须购买承诺并为同一机器家族系列中的资源创建附加的预留。
  • 如果承诺指定了任何需要附加预留的资源类型,则必须在附加预留上停用自动删除选项。详细了解需要附加预留的资源类型
  • 如果您的承诺具有 GPU,则预留中指定的 GPU 类型与承诺必须匹配。
  • 对于 GPU 和大多数本地 SSD 磁盘,每种资源类型的预留资源数量必须与该资源类型的承诺资源数量完全一致。不过,如果您在承诺中指定了任何本地 Titanium SSD 磁盘以用于 C4、C4A、C4D、C4N、H4D 或 Z3 机器类型,则不适用此要求。

    例如,如果您要为 4 个 V100 GPU 和 2 个本地 SSD 磁盘购买承诺,则承诺附加的预留必须指定总共 4 个 V100 GPU 和 2 个本地 SSD。您预留的 vCPU 数量和内存量可能多于或少于您承诺的数量。但是,如果您在承诺中指定了 4 个 C4A vCPU 和 2 个本地 Titanium SSD 磁盘,则无需将任何预留附加到该承诺。

  • 对于 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. 区域字段中,选择您要购买承诺的区域。

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

    • 对于 A2 机器类型,请选择加速器优化 A2
    • 对于 A3 Edge 和 A3 High 机器类型,请选择加速器优化 A3
    • 对于 A3 Mega 机器类型,请选择加速器优化 A3 Mega
    • 对于 G2 机器类型,请选择图形优化 G2
    • 对于 G4 机器类型,请选择图形优化 G4
    • 对于 C2 机器类型,请选择计算优化 C2
    • 对于 C2D 机器类型,请选择计算优化 C2D
    • 对于 C3 机器类型,请选择通用 C3
    • 对于 C3D 机器类型,请选择通用 C3D
    • 对于 C4 机器类型,请选择通用 C4
    • 对于 C4A 机器类型,请选择通用 C4A
    • 对于 C4D 机器类型,请选择通用 C4D
    • 对于 C4N 机器类型,请选择网络优化型 C4N
    • 对于 N1 机器类型,请选择通用 N1
    • 对于 N2 机器类型,请选择通用 N2
    • 对于 N2D 机器类型,请选择通用 N2D
    • 对于 M1 机器类型,请选择内存优化 M1/M2
    • 对于 M3 机器类型,请选择内存优化 M3
    • 对于 Z3 机器类型,请选择存储优化 Z3

  6. 如需将一个或多个现有预留附加到承诺,请执行以下操作:

    1. 选中关联新的或现有预留复选框。

    2. 点击关联现有预留。系统随即会显示附加现有预留窗格,其中会显示您项目中的预留。此列表会经过过滤,以匹配您指定的区域和承诺类型。

    3. 附加现有预留窗格中,选中您要附加的每个预留对应的复选框。

    4. 查看所选预留的资源摘要,然后点击附加

    附加预留后,Compute Engine 会自动填充承诺详细信息部分中的字段,以匹配所附加预留中的资源数量和类型。如果您在附加预留之前,在承诺详细信息部分中手动输入了任何资源的值,则您的值会被预留中的值覆盖。

  7. 合约详情部分中,执行以下操作:

    1. 核心数字段中,验证预填充的值。您也可以指定其他数量的 vCPU。

    2. 内存字段中,验证预填充的内存量(以 GB 为单位)。您也可以指定其他金额。只能以 0.25 GB 为增量来指定内存量。如需为承诺指定自定义内存值,请改用 gcloud CLI 或 REST。

    3. 展开 GPU 和本地 SSD 部分,并验证承诺和附加预留中的类型和数量是否一致,如下所示:

      1. GPU 类型字段中,验证预填充的 GPU 类型。

      2. GPU 数量字段中,验证预填充的 GPU 数量。

      3. 本地 SSD 字段中,验证预填充的磁盘数量。

      如果您手动为上述任一字段指定了与附加预留不同的值,则无法购买承诺。对于所有 GPU 和大多数本地 SSD 磁盘,承诺和附加预留的总数量和类型必须一致。

  8. 条款部分中,执行以下操作:

    1. 如需指定承诺的方案,请选择 1 年3 年。方案决定了 CUD 费率和承诺的预设期限。

    2. 查看开始日期字段,其中显示了您的承诺生效的日期和时间。此字段会自动设置为当前日期后一天的凌晨 0 点(美国和加拿大太平洋时间)。

    3. 可选。如需将承诺的期限延长到承诺方案定义的预设期限之外,请在结束日期字段中为承诺指定自定义结束日期。如需了解详情,请参阅延长承诺期限

    4. 可选。如果您希望承诺在期限结束时自动续订,请选中自动续订承诺复选框。

  9. 摘要窗格中,查看您的承诺详细信息和任何潜在的配额限制。

  10. 如需完成购买承诺的过程,请执行以下操作:

    1. 前往页面底部。

    2. 查看披露声明部分,其中包含有关费用、折扣资格条件以及条款及条件的信息。

    3. 如需确认您接受承诺价格服务专用条款,请选中相应复选框。

    4. 点击购买

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=PLAN \
    --type=COMMITMENT_TYPE \
    --custom-end-time=CUSTOM_END_DATE \
    --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,您将在其中购买包含附加预留的承诺。
  • PLAN:承诺方案,用于确定 CUD 费率和预设期限。指定 12-month36-month
  • CUSTOM_END_DATE:可选。期限的自定义结束日期,其格式必须为 YYYY-MM-DD。例如,如需指定自定义结束日期为 2024 年 4 月 20 日,请将其格式设置为 2024-04-20
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • 对于 A2 机器类型,请使用 accelerator-optimized
    • 对于 A3 Edge 和 A3 High 机器类型,请使用 accelerator-optimized-a3
    • 对于 A3 Mega 机器类型,请使用 accelerator-optimized-a3-mega
    • 对于 G2 机器类型,请使用 graphics-optimized
    • 对于 G4 机器类型,请使用 graphics-optimized-g4
    • 对于 C2 机器类型,请使用 compute-optimized
    • 对于 C2D 机器类型,请使用 compute-optimized-c2d
    • 对于 C3 机器类型,请使用 compute-optimized-c3
    • 对于 C3D 机器类型,请使用 compute-optimized-c3d
    • 对于 N1 机器类型,请使用 general-purpose
    • 对于 C4 机器类型,请使用 general-purpose-c4
    • 对于 C4A 机器类型,请使用 general-purpose-c4a
    • 对于 C4D 机器类型,请使用 general-purpose-c4d
    • 对于 C4N 机器类型,请使用 network-optimized-c4n
    • 对于 N1 机器类型,请使用 general-purpose-n2
    • 对于 N2D 机器类型,请使用 general-purpose-n2d
    • 对于 M1 机器类型,请使用 memory-optimized
    • 对于 M3 机器类型,请使用 memory-optimized-m3
    • 对于 Z3 机器类型,请使用 storage-optimized-z3

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

  • COMMITTED_MEMORY:您的承诺中包含的内存量,以 MB 或 GB 为单位。例如 10240MB10GB。对于 gcloud CLI,您可以指定内存(以 MB 或 GB 为单位)。如果您未指定单位,Compute Engine 将使用 GB 作为默认单位。不过,请注意,当您使用 REST 时,Compute Engine 会使用 MB 作为默认单位。

  • COMMITTED_LOCAL_SSD:您的承诺中包含的本地 SSD 空间,以 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 磁盘购买新承诺,并将这些现有预留用作附加预留,请运行以下命令。承诺指定了 96 个 vCPU、624 GB 内存、4 个 NVIDIA P100 GPU 和 1,500 GB 本地 SSD 存储空间(相当于 4 个本地 SSD 磁盘)。本地 SSD 存储空间值必须以 GB 为单位指定(例如 375GB)。对于 gcloud CLI,您可以以 MB 或 GB 为单位指定内存。如果您未指定单位,Compute Engine 将使用 GB 作为默认单位。不过,请注意,使用 REST 时,Compute Engine 会使用 MB 作为默认单位。

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624GB,local-ssd=1500 \
    --resources-accelerator=type=nvidia-tesla-p100,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": "PLAN",
  "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"
    }
  ],
  "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
  "existingReservations": "RESERVATION_URLs"
}

替换以下内容:

  • COMMITMENT_NAME:承诺的名称。
  • REGION:承诺所在的区域。
  • PROJECT_ID:项目的 ID,您将在其中购买包含附加预留的承诺。
  • PLAN:承诺方案,用于确定 CUD 费率和预设期限。指定 TWELVE_MONTHTHIRTY_SIX_MONTH
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • 对于 A2 机器类型,请使用 ACCELERATOR_OPTIMIZED
    • 对于 A3 Edge 和 A3 High 机器类型,请使用 ACCELERATOR_OPTIMIZED_A3
    • 对于 A3 Mega 机器类型,请使用 ACCELERATOR_OPTIMIZED_A3_MEGA
    • 对于 G2 机器类型,请使用 GRAPHICS_OPTIMIZED
    • 对于 G4 机器类型,请使用 GRAPHICS_OPTIMIZED_G4
    • 对于 C2 机器类型,请使用 COMPUTE_OPTIMIZED
    • 对于 C2D 机器类型,请使用 COMPUTE_OPTIMIZED_C2D
    • 对于 C3 机器类型,请使用 COMPUTE_OPTIMIZED_C3
    • 对于 C3D 机器类型,请使用 COMPUTE_OPTIMIZED_C3D
    • 对于 N1 机器类型,请使用 GENERAL_PURPOSE
    • 对于 C4 机器类型,请使用 GENERAL_PURPOSE_C4
    • 对于 C4A 机器类型,请使用 GENERAL_PURPOSE_C4A
    • 对于 C4D 机器类型,请使用 GENERAL_PURPOSE_C4D
    • 对于 C4N 机器类型,请使用 NETWORK_OPTIMIZED_C4N
    • 对于 N1 机器类型,请使用 GENERAL_PURPOSE_N2
    • 对于 N2D 机器类型,请使用 GENERAL_PURPOSE_N2D
    • 对于 M1 机器类型,请使用 MEMORY_OPTIMIZED
    • 对于 M3 机器类型,请使用 MEMORY_OPTIMIZED_M3
    • 对于 Z3 机器类型,请使用 STORAGE_OPTIMIZED_Z3

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

  • COMMITTED_MEMORY:您的承诺中包含的内存量。对于 REST,Compute Engine 使用 MB 作为默认单位。不过,请注意,使用 gcloud CLI 时,Compute Engine 会使用 GB 作为默认单位。

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

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

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

  • CUSTOM_END_DATE:可选。期限的自定义结束日期,其格式必须为 YYYY-MM-DD。例如,如需指定自定义结束日期为 2024 年 4 月 20 日,请将其格式设置为 2024-04-20

  • END_TIME:美国和加拿大太平洋时间(UTC-8 或 UTC-7)凌晨 0 点,采用世界协调时间 (UTC) 的偏移量格式。仅当您为承诺指定了自定义结束日期时,才需要指定此值。请指定以下某个值:

    • 夏令时期间:07:00:00
    • 其他时间段:08:00:00
  • 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 请求。相应承诺指定了 96 个 vCPU、624 GB 内存、4 个 NVIDIA P100 GPU 和 1,500 GB 本地 SSD 存储空间。请注意,本地 SSD 存储空间值必须以 GB 为单位指定。对于内存,您必须以 MB 为单位指定值。不过,请注意,使用 gcloud CLI 时,Compute Engine 会将 GB 用作内存的默认单位。

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-p100",
      "amount": "4",
      "type": "ACCELERATOR"
    },
    {
      "amount": "1500",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations":
  [
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/res-01",
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/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. 区域字段中,选择您要购买承诺的区域。

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

    • 对于 A2 机器类型,请选择加速器优化 A2
    • 对于 A3 Edge 和 A3 High 机器类型,请选择加速器优化 A3
    • 对于 A3 Mega 机器类型,请选择加速器优化 A3 Mega
    • 对于 G2 机器类型,请选择图形优化 G2
    • 对于 G4 机器类型,请选择图形优化 G4
    • 对于 C2 机器类型,请选择计算优化 C2
    • 对于 C2D 机器类型,请选择计算优化 C2D
    • 对于 C3 机器类型,请选择通用 C3
    • 对于 C3D 机器类型,请选择通用 C3D
    • 对于 C4 机器类型,请选择通用 C4
    • 对于 C4A 机器类型,请选择通用 C4A
    • 对于 C4D 机器类型,请选择通用 C4D
    • 对于 C4N 机器类型,请选择网络优化型 C4N
    • 对于 N1 机器类型,请选择通用 N1
    • 对于 N2 机器类型,请选择通用 N2
    • 对于 N2D 机器类型,请选择通用 N2D
    • 对于 M1 机器类型,请选择内存优化 M1/M2
    • 对于 M3 机器类型,请选择内存优化 M3
    • 对于 Z3 机器类型,请选择存储优化 Z3

  6. 如需创建新的预留并将其附加到承诺,请执行以下操作:

    1. 选中关联新的或现有预留复选框。

    2. 点击创建新预留。系统会显示创建新预留窗格。

    3. 名称字段中,输入预留的名称。

    4. 可选:在说明字段中,输入说明。

    5. 可用区字段中,选择您希望预留的资源可用的可用区。

    6. 共享类型部分中,指定您希望如何共享此预留:

      • 如需创建单项目预留,请选择本地
      • 如需创建与多个项目共享的预留,请选择共享。然后,点击添加项目,并选择所需项目。
    7. Google Cloud 服务部分中,指定是否与其他服务(例如 Google Kubernetes Engine 或 Vertex AI)共享此预留。

    8. 搭配虚拟机实例使用部分中,选择您希望虚拟机如何使用预留:

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

      1. 虚拟机实例数量字段中,输入虚拟机数量。

      2. 机器配置部分中,通过选择机器类型来指定属性。从列表中选择一种机器类型,或选择自定义以指定核心数量和内存量。

      3. 可选:如果您想预留 GPU,请点击添加 GPU,然后为每个虚拟机指定 GPU 类型GPU 数量

      4. 可选:如果您想预留本地 SSD 磁盘,请指定磁盘数量接口类型

      5. 可选:如果您想指定组布置政策,请在组布置政策列表中选择或创建政策。

    10. 如需完成为此预留指定属性,请点击创建并附加

    11. 可选:如果您想创建并附加更多新的预留,请再次点击创建新预留,然后重复执行这些步骤。

    附加预留后,Compute Engine 会自动填充承诺详细信息部分中的字段,以匹配所附加预留中的资源数量和类型。如果您在附加预留之前,在承诺详细信息部分中手动输入了任何资源的值,则您的值会被预留中的值覆盖。

  7. 合约详情部分中,执行以下操作:

    1. 核心数字段中,验证预填充的值。您也可以指定其他数量的 vCPU。

    2. 内存字段中,验证预填充的内存量(以 GB 为单位)。您也可以指定其他金额。只能以 0.25 GB 为增量来指定内存量。如需为承诺指定自定义内存值,请改用 gcloud CLI 或 REST。

    3. 展开 GPU 和本地 SSD 部分,并验证承诺和附加预留中的类型和数量是否一致,如下所示:

      1. GPU 类型字段中,验证预填充的 GPU 类型。

      2. GPU 数量字段中,验证预填充的 GPU 数量。

      3. 本地 SSD 字段中,验证预填充的磁盘数量。

      如果您手动为上述任一字段指定了与附加预留不同的值,则无法购买承诺。对于所有 GPU 和大多数本地 SSD 磁盘,承诺和附加预留的总数量和类型必须一致。

  8. 条款部分中,执行以下操作:

    1. 如需指定承诺的方案,请选择 1 年3 年。方案决定了 CUD 费率和承诺的预设期限。

    2. 查看开始日期字段,其中显示了您的承诺生效的日期和时间。此字段会自动设置为当前日期后一天的凌晨 0 点(美国和加拿大太平洋时间)。

    3. 可选。如需将承诺的期限延长到承诺方案定义的预设期限之外,请在结束日期字段中为承诺指定自定义结束日期。如需了解详情,请参阅延长承诺期限

    4. 可选。如果您希望承诺在期限结束时自动续订,请选中自动续订承诺复选框。

  9. 摘要窗格中,查看您的承诺详细信息和任何潜在的配额限制。

  10. 如需完成购买承诺的过程,请执行以下操作:

    1. 前往页面底部。

    2. 查看披露声明部分,其中包含有关费用、折扣资格条件以及条款及条件的信息。

    3. 如需确认您接受承诺价格服务专用条款,请选中相应复选框。

    4. 点击购买

gcloud

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

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

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

    gcloud compute commitments create COMMITMENT_NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --plan PLAN \
        --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 \
        --custom-end-time=CUSTOM_END_DATE \
        --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 PLAN \
          --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,您将在其中购买包含附加预留的承诺。
  • PLAN:承诺方案,用于确定 CUD 费率和预设期限。指定 12-month36-month
  • CUSTOM_END_DATE:可选。期限的自定义结束日期,其格式必须为 YYYY-MM-DD。例如,如需指定自定义结束日期为 2024 年 4 月 20 日,请将其格式设置为 2024-04-20
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • 对于 A2 机器类型,请使用 accelerator-optimized
    • 对于 A3 Edge 和 A3 High 机器类型,请使用 accelerator-optimized-a3
    • 对于 A3 Mega 机器类型,请使用 accelerator-optimized-a3-mega
    • 对于 G2 机器类型,请使用 graphics-optimized
    • 对于 G4 机器类型,请使用 graphics-optimized-g4
    • 对于 C2 机器类型,请使用 compute-optimized
    • 对于 C2D 机器类型,请使用 compute-optimized-c2d
    • 对于 C3 机器类型,请使用 compute-optimized-c3
    • 对于 C3D 机器类型,请使用 compute-optimized-c3d
    • 对于 N1 机器类型,请使用 general-purpose
    • 对于 C4 机器类型,请使用 general-purpose-c4
    • 对于 C4A 机器类型,请使用 general-purpose-c4a
    • 对于 C4D 机器类型,请使用 general-purpose-c4d
    • 对于 C4N 机器类型,请使用 network-optimized-c4n
    • 对于 N1 机器类型,请使用 general-purpose-n2
    • 对于 N2D 机器类型,请使用 general-purpose-n2d
    • 对于 M1 机器类型,请使用 memory-optimized
    • 对于 M3 机器类型,请使用 memory-optimized-m3
    • 对于 Z3 机器类型,请使用 storage-optimized-z3

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

  • COMMITTED_MEMORY:您的承诺中包含的内存量,以 MB 或 GB 为单位。例如 10GB10240MB。对于 gcloud CLI,您可以指定以 MB 或 GB 为单位的内存。如果您未指定单位,Compute Engine 将使用 GB 作为默认单位。不过,请注意,当您使用 REST 时,Compute Engine 会使用 MB 作为默认单位。

  • COMMITTED_LOCAL_SSD:本地 SSD 存储空间量,必须以 GB 为单位指定;例如,375GB

  • 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
      • CPUSvCPU 的数量。
      • 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 磁盘重复 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 区域中购买 1 年期承诺,以预留 96 个 vCPU、624 GB 内存和 4 个 NVIDIA V100 GPU 的通用资源(或 GPU 资源)。您希望在 us-central1-a 可用区中创建新的预留 reservation-01,以预留 2 个 n1-standard-32 虚拟机(每个虚拟机具有 32 个 vCPU、120 GB 内存和 2 个 NVIDIA V100 GPU)来使用这些承诺的资源。如需购买此示例承诺及其附加预留,请运行以下命令。对于 gcloud CLI,您可以使用 MB 或 GB 指定内存。 如果您未指定单位,Compute Engine 将使用 GB 作为默认单位。不过,请注意,当您使用 REST 时,Compute Engine 会使用 MB 作为默认单位。

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 区域中购买 1 年期 GPU 资源承诺,其中包含 0 个 vCPU、0 GB 内存和 1 个 NVIDIA P4 GPU。您还希望在 us-west2-b 可用区中创建新的预留 reservation-01,以预留 1 个 n1-standard-2 虚拟机(具有 2 个 vCPU、7.5 GB 内存和 1 个 NVIDIA P4 GPU),以便附加到承诺使用合约。如需购买此示例承诺及其附加预留,请运行以下命令。对于 gcloud CLI,您可以使用 MB 或 GB 指定内存。如果您未指定单位,Compute Engine 将使用 GB 作为默认单位。不过,请注意,当您使用 REST 时,Compute Engine 会使用 MB 作为默认单位。

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 区域中为通用资源(或 GPU 和本地 SSD 资源)购买 1 年期承诺。您希望购买的承诺包含 96 个 vCPU、624 GB 内存、1 个 NVIDIA V100 GPU 和 750 GB 本地 SSD 存储空间(相当于 2 个本地 SSD 磁盘)。您还希望在 us-central1-a 可用区中创建和附加两个预留。在第一个预留 res-01 中,您想要预留 1 个 n1-standard-2 虚拟机(配备 2 个 vCPU、7.5 GB 内存和 1 个 NVIDIA V100 GPU);这是一个目标预留。在第二个预留 res-02 中,您想要预留 1 个 n1-standard-8 虚拟机(具有 8 个 vCPU、30 GB 内存),并挂接 2 个本地 SSD 磁盘(一个 SCSI 接口,一个 NVMe 接口)。

如需购买包含附加预留的此示例承诺,请先创建具有两个预留属性的 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 文件后,如需完成购买承诺及其附加预留的操作,请运行以下命令。本地 SSD 存储空间值必须以 GB 为单位指定(例如 375GB)。对于 gcloud CLI,您可以以 MB 或 GB 为单位指定内存。如果您未指定单位,Compute Engine 将使用 GB 作为默认单位。不过,请注意,使用 REST 时,Compute Engine 会使用 MB 作为内存的默认单位。

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": "PLAN",
    "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"
      }
    ],
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
    "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": "PLAN",
    "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"
      }
    ],
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
    "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,您将在其中购买包含附加预留的承诺。
  • PLAN:承诺方案,用于确定 CUD 费率和预设期限。指定 TWELVE_MONTHTHIRTY_SIX_MONTH
  • COMMITMENT_TYPE:承诺类型。以下承诺类型支持 GPU 和/或本地 SSD 磁盘:

    • 对于 A2 机器类型,请使用 ACCELERATOR_OPTIMIZED
    • 对于 A3 Edge 和 A3 High 机器类型,请使用 ACCELERATOR_OPTIMIZED_A3
    • 对于 A3 Mega 机器类型,请使用 ACCELERATOR_OPTIMIZED_A3_MEGA
    • 对于 G2 机器类型,请使用 GRAPHICS_OPTIMIZED
    • 对于 G4 机器类型,请使用 GRAPHICS_OPTIMIZED_G4
    • 对于 C2 机器类型,请使用 COMPUTE_OPTIMIZED
    • 对于 C2D 机器类型,请使用 COMPUTE_OPTIMIZED_C2D
    • 对于 C3 机器类型,请使用 COMPUTE_OPTIMIZED_C3
    • 对于 C3D 机器类型,请使用 COMPUTE_OPTIMIZED_C3D
    • 对于 N1 机器类型,请使用 GENERAL_PURPOSE
    • 对于 C4 机器类型,请使用 GENERAL_PURPOSE_C4
    • 对于 C4A 机器类型,请使用 GENERAL_PURPOSE_C4A
    • 对于 C4D 机器类型,请使用 GENERAL_PURPOSE_C4D
    • 对于 C4N 机器类型,请使用 NETWORK_OPTIMIZED_C4N
    • 对于 N1 机器类型,请使用 GENERAL_PURPOSE_N2
    • 对于 N2D 机器类型,请使用 GENERAL_PURPOSE_N2D
    • 对于 M1 机器类型,请使用 MEMORY_OPTIMIZED
    • 对于 M3 机器类型,请使用 MEMORY_OPTIMIZED_M3
    • 对于 Z3 机器类型,请使用 STORAGE_OPTIMIZED_Z3

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

  • COMMITTED_MEMORY:您的承诺中包含的内存量。对于 REST,Compute Engine 使用 MB 作为默认单位。不过,请注意,使用 gcloud CLI 时,Compute Engine 会使用 GB 作为默认单位。

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

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

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

  • CUSTOM_END_DATE:可选。期限的自定义结束日期,其格式必须为 YYYY-MM-DD。例如,如需指定自定义结束日期为 2024 年 4 月 20 日,请将其格式设置为 2024-04-20

  • END_TIME:美国和加拿大太平洋时间(UTC-8 或 UTC-7)凌晨 0 点,采用世界协调时间 (UTC) 的偏移量格式。仅当您为承诺指定了自定义结束日期时,才需要指定此值。请指定以下某个值:

    • 夏令时期间:07:00:00
    • 其他时间段:08:00:00

附加预留

  • 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
      • CPUSvCPU 的数量。
      • 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 磁盘重复 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 区域中购买 1 年期通用资源承诺,其中包含 96 个 vCPU、624 GB 内存(相当于 638976 MB)和 4 个 NVIDIA V100 GPU。您想在 us-central1-a 可用区中创建新的预留 reservation-01,该预留会预留 2 个 n1-standard-8 虚拟机(每个虚拟机具有 8 个 vCPU、30 GB 内存和 2 个 NVIDIA V100 GPU),以附加到该承诺。如需购买此示例承诺及其附加预留,请发出以下 POST 请求。对于 REST,您必须以 MB 为单位指定内存。不过,请注意,使用 gcloud CLI 时,Compute Engine 会使用 GB 作为默认单位。

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 区域中购买 1 年期 GPU 资源承诺,其中包含 0 个 vCPU、0 MB 内存和 4 个 NVIDIA P4 GPU。您还希望在 us-west2-b 可用区中创建新的预留 reservation-01,以预留 1 个 n1-standard-2 虚拟机(具有 2 个 vCPU、7.5 GB 内存和 4 个 NVIDIA P4 GPU)来附加到承诺。如需购买此示例承诺及其附加预留,请发出以下 POST 请求。对于 REST,您必须以 MB 为单位指定内存。 不过,请注意,使用 gcloud CLI 时,Compute Engine 会使用 GB 作为默认单位。

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 年期通用资源承诺,其中包含 96 个 vCPU、624 GB 内存(相当于 638976 MB)、1 个 NVIDIA V100 GPU 和 750 GB 本地 SSD 存储空间。您还希望在 us-central1-a 可用区中创建和附加两个预留。在第一个预留 res-01 中,您想要预留 1 个 n1-standard-2 虚拟机(具有 2 个 vCPU、7.5 GB 内存和 1 个 NVIDIA V100 GPU);这是一个目标预留。在第二个预留 res-02 中,您想要预留 1 个 n1-standard-8 虚拟机(具有 8 个 vCPU、30 GB 内存),并挂接 2 个本地 SSD 磁盘(一个 SCSI 接口,一个 NVMe 接口)。如需购买带有附加预留的此示例承诺,请发出以下 POST 请求。请注意,本地 SSD 存储空间值必须以 GB 为单位指定。 对于内存,您必须以 MB 为单位指定值。不过,请注意,使用 gcloud CLI 时,Compute Engine 会使用 GB 作为内存的默认单位。

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": "750",
      "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"
    }
  ]
}