基于资源的承诺使用折扣


Compute Engine 为您的可预测工作负载提供基于资源的承诺使用折扣 (CUD),可帮助您降低所需资源的费用。您可以购买和续订基于资源的承诺使用合约或承诺来换取大幅度的虚拟机使用折扣价格。

本文档介绍了 Compute Engine 基于资源的承诺、如何购买这些承诺以及产生的 CUD。如需了解 Compute Engine 灵活 CUD,请参阅灵活 CUD

基于资源的承诺非常适合可预测的稳定使用量。Compute Engine 允许您购买以下类别的基于资源的承诺

硬件资源的承诺与许可的承诺是分开的。您可以为虚拟机实例同时购买这两种类别的承诺,但不能购买单个承诺来同时涵盖硬件资源和许可。

承诺使用折扣建议让您有机会通过分析虚拟机支出趋势来优化计算费用的机会(无论是否有承诺使用折扣合约)。通过比较这些数字,您可以借助承诺使用合约来了解每月可以节省的费用。如需详细了解承诺建议的工作原理,您还可以查看了解承诺建议

承诺使用折扣适用于大多数 Compute Engine 机器类型,包括预定义机器类型和自定义机器类型。承诺使用折扣既简单又灵活,且无需预付费用。此类折扣适用于同一区域内的所有 vCPU、内存、GPU 和本地 SSD 磁盘,因此不受实例机器设置变更的影响。

对于支持每个虚拟机的 Tier_1 网络性能的机器类型,50、75 和 100 Gbps 的较高带宽 SKU 不在折扣范围内。

F1-micro 和 g1-small 共享核心机器不符合承诺使用折扣的适用条件。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

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

    控制台

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

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

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

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

承诺使用折扣说明

购买承诺使用合约后,您可以按折扣价购买 Compute Engine 资源(例如 vCPU、内存、GPU、本地 SSD 磁盘和单租户节点),以享受因承诺为这些资源支付 1 年或 3 年的费用获得的回报。对于大多数资源(如机器类型或 GPU),折扣可高达 57%。对于内存优化机器类型而言,折扣可高达 70%。 如需了解不同机器类型的承诺使用价格,请参阅虚拟机实例价格

在承诺期限内,您会自动开始获得项目中符合条件的资源用量(与承诺中指定的资源类型、机器类型和区域匹配)的 CUD。在承诺到期之前,您将继续获得这些符合条件的资源用量的 CUD。

Compute Engine 会为项目中购买承诺的每个区域维护项目安全锁。当您为项目中的任何区域购买新承诺时,Compute Engine 会将该区域的安全锁与新创建的承诺相关联。

购买承诺后,无法取消。您的承诺在指定的期限(1 年或 3 年)结束时到期。不过,您可以为承诺启用自动续订,以确保其自动续订新期限。

承诺状态

您的承诺可以处于以下状态之一:

  • CREATING:正在创建承诺。
  • NOT_YET_ACTIVEPENDING:承诺已创建但尚未生效。Compute Engine 会创建具有此状态的承诺。

    • 如果您使用 Google Cloud CLI 或 REST API 购买承诺,则此状态值显示为 NOT_YET_ACTIVE
    • 如果您使用 Google Cloud 控制台购买承诺,则此状态值显示为 PENDING
  • ACTIVE:承诺处于有效状态。

  • EXPIRED:承诺已到期。Compute Engine 保留移除已过期 210 天或更长时间的承诺的权利。

  • CANCELED:Compute Engine 取消了承诺。如果您组合多个承诺以创建新的合并承诺,Compute Engine 会将多个承诺的状态更改为 CANCELED

从承诺购买到激活的这段时间内,承诺的状态保持为 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

高效利用承诺

如果您只有几个项目,则可以仅为计划使用的特定资源购买承诺。 例如,如果您购买了 8 个核心的承诺,而您在当月运行了 24 个核心,那么只有 8 个核心将获得承诺使用折扣。另外 16 个核心将按标准的非承诺使用费率计费。请记住,购买一定数量的承诺后,即使您并未使用,也需要按月为承诺量付费。例如,如果您购买了 8 个核心的承诺,则即使您可能仅在当月的一部分时间里运行了这些核心,您也需要按这 8 个核心在整个月内的承诺使用费率付费。因此,仅按照您清楚自己将会用到的增量来购买承诺量将对您更为有利。

不能针对用量爆发情况叠加承诺量。例如,如果您在一个月购买了 10 个核心,然后在半个月内运行了 20 个核心,则系统不会因为使用时间只有半个月而对所有 20 个核心应用承诺。

用量超额

您的承诺未涵盖的任何每小时资源用量都将根据按需费率计费,并且有资格享受任何适用的持续使用折扣 (SUD)。例如,假设您在当月的某个时间段运行 n2-standard-2,并在同一个月的另一个时间段运行 n2-standard-8。Compute Engine 将两者合并,并对承诺使用折扣未涵盖的部分应用 SUD,因为这两种机器类型都属于 n2-standard 系列。

将预留与承诺相结合

承诺提供 1 年或 3 年期折扣价格协议,但不在特定可用区预留容量。即使预留的虚拟机未运行,预留也可确保特定可用区中保留有容量。如需以折扣价格获取可用区级资源,并确保为它们预留容量,您必须同时购买承诺并为这些可用区级资源创建预留。

您还可以将预留附加到基于资源的承诺,以确保预留特定于这些承诺。在承诺使用 GPU 或本地 SSD 资源时,您还必须预留这些资源,并将这些预留附加到您的承诺。

如需了解详情,请参阅将预留与承诺使用折扣相结合

在多个项目之间共享承诺使用折扣

默认情况下,承诺使用折扣适用于项目级层,并且您只能为购买承诺的项目获得适用的承诺使用折扣。如果您将购买承诺的项目移动到其他 Cloud Billing 账号,新的 Cloud Billing 账号下会继续享受该项目的适用承诺使用折扣。

但是,Compute Engine 允许您在共享同一 Cloud Billing 账号的多个项目之间共享硬件承诺折扣。在所有项目之间共享硬件承诺的承诺使用折扣可以减少按项目管理折扣的开销,并且可以将项目资源使用费的所有折扣汇集起来,从而最大限度地节省费用。

如果您有多个共享同一 Cloud Billing 账号的项目,则可以启用承诺使用折扣共享,以便该 Cloud Billing 账号内的所有项目共享您的所有承诺使用折扣合约。

例如,假设您为 Cloud Billing 账号的不同项目购买了 80 个核心的两个承诺(总共 160 个核心),并在当月运行了 200 个核心。如果您为 Cloud Billing 账号启用了承诺使用折扣共享,则该 Cloud Billing 账号项目使用的 200 个核心中有 160 个核心将可享受承诺使用折扣。另外 40 个核心将按非承诺、按需使用费率计费。购买承诺后,即使您并未使用,也需要按月在承诺期限内为承诺的资源付费。如需了解如何利用折扣来节省费用的建议,请参阅了解折扣共享

承诺使用折扣受 Google Cloud 承诺使用合约价格和结算条款的约束。购买承诺使用折扣,即表示您同意这些条款。

使用归因来分配折扣

归因是指您的承诺使用折扣在项目之间的分配方式。这些分配会反映在 Cloud Billing 费用管理界面上,例如使用费导出Google Cloud 控制台

仅当启用折扣共享时,归因才适用。您可以在启用折扣共享之前选择要使用的归因类型,然后在启用折扣共享时激活归因配置。

默认情况下,Compute Engine 承诺使用按比例归因。系统会根据每个项目消耗的符合条件的总用量按比例向项目分配归因承诺。例如,如果项目 A 的使用费为 $75,项目 B 的使用费为 $25,则项目 A 最多可使用 75% 的可用赠金,项目 B 则最多可使用 25% 的可用赠金。

或者,您可以根据指定的用量为 Compute Engine 承诺选择优先归因。任何剩余的低优先级承诺都会按比例应用于其余项目中符合条件的使用量。配额的总金额不能超过购买的承诺量。

如需为您的 Compute Engine 承诺选择按比例归因或优先归因,请参阅为基于资源的承诺选择归因

规格

  • 只有在特定区域中的资源有以下两项配额时,您才能为该区域购买基于资源的承诺:

    • 承诺
    • 承诺资源(内存除外)

    如需了解详情,请参阅承诺和承诺资源的配额

  • 您必须按区域购买承诺量。

  • 如需使用 gcloud CLI 管理承诺,您必须运行 gcloud 147.0.0 版或更高版本。如需将 gcloud CLI 更新到最新版本,请运行以下命令:

    gcloud components update
    

    如需检查您正在运行的 gcloud CLI 的版本,请运行以下命令:

    gcloud version
    

限制

  • 处于免费层级期限内且拥有免费层级赠金的项目,以及没有任何付款记录的项目,均不符合承诺使用折扣的适用条件。
  • 您只能按区域购买承诺量。
  • 您无法更改购买承诺的项目。如果要与多个项目共享折扣,请启用折扣共享

  • 对于在一个 Cloud Billing 账号下的项目之间共享的承诺量:如果仅使用了任何一部分承诺量,则剩余的承诺量结算将继续保留在购买了相应承诺量的项目中。

  • 承诺使用折扣不适用于抢占式虚拟机实例N1 共享核心机器类型扩展内存

  • 如需获得 GPU 和本地 SSD 磁盘的承诺使用折扣价格,您必须预留资源并将这些预留附加到承诺

  • 承诺使用折扣价格与按需价格无关。任何按需价格的波动都不一定会反映在承诺使用折扣中。

  • 如果某预留附加于承诺使用折扣,则在承诺期间不能删除该预留。

  • 对于 K80 GPU,您只能购买 1 年期承诺。

价格

您需要按月为承诺付费,即使您未使用所有承诺的资源,也必须支付每月承诺费用。承诺费用是所有承诺的资源的折扣价格总和。Compute Engine 使用承诺生效当天的现行按需价格来计算每个资源的折扣价格。即使按需价格发生变化,在承诺期限结束之前,每月承诺费用和资源的折扣价格也会保持不变。

虚拟机实例(无论是否挂接了 GPU 和本地 SSD 磁盘)的折扣价格(也称为 CUD 价格)因区域而异。如需了解当前费率,请参阅虚拟机实例价格

如果您将购买承诺的项目移动到其他 Cloud Billing 账号,新的 Cloud Billing 账号下会继续享受该项目的适用承诺使用折扣。了解如何更改项目的 Cloud Billing 账号

承诺类型

您可以为以下资源购买承诺量。

承诺类型 可购买折扣的资源 适用于以下资源类型
通用 E2 承诺
  • vCPU 数量
  • 内存
所有 E2 机器类型
通用 N2 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
  • 所有 N2 机器类型
  • 所有 N2 单租户节点类型
通用 N2D 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
  • 所有 N2D 机器类型
  • 所有 N2D 单租户节点类型
通用 C3 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
  • 所有 C3 机器类型
  • 所有 C3 单租户节点类型
通用 C3D 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
  • 所有 C3D 机器类型
  • 所有 C3D 单租户节点类型
通用 Tau T2D 承诺
  • vCPU 数量
  • 内存
标准 Tau T2D 机器类型
通用 N1 承诺
  • vCPU 数量
  • 内存
  • GPU
  • 本地 SSD
  • 所有 N1 机器类型,共享核心除外。
  • 所有 N1 单租户节点类型
  • GPU:
    • NVIDIA T4
    • NVIDIA V100
    • NVIDIA P100
    • NVIDIA P4
    • NVIDIA K80
计算优化型 H3 承诺
  • vCPU 数量
  • 内存
  • 所有 H3 机器类型
计算优化 C2 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
  • 所有 C2 机器类型
  • 所有 C2 单租户节点类型
计算优化 C2D 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
所有 C2D 机器类型
内存优化 M1/M2 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
  • 所有 M1 和 M2 机器类型
  • 所有 M1 和 M2 单租户节点类型
内存优化 M3 承诺
  • vCPU 数量
  • 内存
  • 本地 SSD
所有 M3 机器类型
加速器优化 A2 承诺
  • vCPU 数量
  • 内存
  • GPU
  • 本地 SSD
  • 所有 A2 机器类型
  • GPU:
    • NVIDIA A100
加速器优化 A3 承诺
  • vCPU 数量
  • 内存
  • GPU
  • 本地 SSD
  • 所有 A3 机器类型
  • GPU:
    • NVIDIA H100
加速器优化 G2 承诺
  • vCPU 数量
  • 内存
  • GPU
  • 本地 SSD
  • 所有 G2 机器类型
  • 所有 G2 单租户节点类型
  • GPU:
    • NVIDIA L4

您不能为 f1-microg1-small 机器类型购买承诺量,也不能为单租户附加费用购买承诺量。

适用于机器类型的承诺

您可以根据自己要使用的机器类型来购买相应的承诺使用合约类型。

通用承诺使用合约

通用承诺使用合约的折扣按以下顺序应用于各资源:

  1. E2、N2、N2D 或 N1 自定义机器类型,具体取决于您购买的承诺
  2. 单租户节点
  3. E2、N2、N2D、C3、C3D、Tau T2D 或 N1 预定义机器类型,具体取决于您购买的承诺

当您购买通用承诺时,您需要选择该承诺所适用的机器系列。例如,如果您购买通用 E2 承诺,则该承诺仅适用于 E2 机器类型。同样,如果您购买通用 N2、N2D、C3、C3D、Tau T2D 或 N1 承诺,则这些承诺绝不会重叠。

例如,假设您的区域混合使用了以下资源:

  • 10 个 N2 自定义机器类型 vCPU
  • 30 GB 自定义机器类型内存
  • 2 个 n2-standard-4 预定义机器类型

您为 15 个 vCPU 和 13.5 GB 内存购买了 N2 承诺。承诺使用折扣额度将首先应用于 N2 自定义机器类型,而任何剩余的折扣额度将应用于 N2 预定义机器类型。在本示例中,所有 10 个 N2 自定义机器类型 vCPU 都将按承诺使用价格付费,并且 13.5 GB 的自定义机器类型内存也将按承诺使用价格付费。

最后,承诺中剩余的 5 个 vCPU 折扣额度将随机应用于两个 n2-standard-4 machine 类型中的任意 5 个 vCPU。承诺使用折扣未涵盖的任何资源都有资格享受持续使用折扣。

如需为通用机器类型购买承诺,请参阅购买不含附加预留的承诺

内存优化承诺

内存优化承诺使用折扣适用于两个级别。一个级别适用于 M1 和 M2 机器类型。另一个级别仅适用于 M3 机器类型。您不能对所有内存优化机器类型使用相同的承诺使用折扣。

这些承诺使用折扣的配额是分开计算的。如果您要将承诺使用折扣用于 M1 机器类型,则必须具有 M1 机器的配额。M2 和 M3 也是如此 - 您必须拥有承诺使用折扣的配额。

如果您打算使用内存优化机器类型,应购买内存优化承诺。如需为内存优化机器类型购买承诺,请参阅购买不含附加预留的承诺

计算优化承诺

如果您打算使用计算优化机器类型,应购买计算优化承诺。如需购买承诺:

加速器优化承诺

如果您打算使用加速器优化机器类型,请为 A3、A2 或 G2 机器类型购买承诺。如需为 A3、A2 或 G2 机器类型购买承诺,请参阅购买包含附加预留的承诺

适用于 GPU 和本地 SSD 资源的承诺

如需为 GPU 和/或本地 SSD 磁盘购买承诺,您还必须预留资源,并将预留附加到承诺。预留这些资源旨在确保它们始终可供您使用(无论您是否使用它们)。预留资源不会产生任何额外费用。

您必须按特定的 GPU 类型购买承诺。例如,您可以为 NVIDIA P100 或 NVIDIA V100 购买 GPU,但不能购买 NVIDIA P100 GPU 的承诺,并将其应用于其他 GPU 类型。

如需为 GPU 和/或本地 SSD 磁盘购买承诺,请参阅本文档中的购买包含附加预留的承诺

如需详细了解包含附加预留的承诺,请参阅将预留附加到基于资源的承诺

承诺和承诺资源的配额

只有在特定区域中的资源有以下两项配额时,您才能为该区域购买基于资源的承诺:

  • 承诺
  • 承诺资源(内存除外)

具体而言,如果您要为任何 vCPU、GPU 或本地 SSD 磁盘购买承诺,则在您想要购买承诺的区域,您除了需要有承诺配额,还要有您要为其购买承诺的这些特定承诺 SKU 的配额。由于内存没有配额限制,因此您不需要有单独的承诺内存配额,便可以为内存购买承诺。

例如,如需在 us-central1 区域中购买 5 个承诺(涵盖 32 个通用 N1 机器类型 vCPU、16 GB 内存、4 个 NVIDIA P4 GPU 和 2 个本地 SSD 磁盘),则必须具有以下各项的配额:

  • us-central1 中的五个承诺
  • us-central1 中的 32 个承诺 N1 vCPU
  • us-central1 中的四个承诺 NVIDIA P4 GPU
  • us-central1 中容量为 750 GB(或 2 个本地 SSD 磁盘)的承诺本地 SSD 磁盘可用空间

配额限制

默认情况下,Compute Engine 会为每种类型的承诺资源提供特定数量的承诺配额。这些配额限制决定了您可以购买的承诺数量以及您可以承诺使用的资源数量。如需了解如何查看您的承诺及承诺资源的当前配额限制和配额用量值,请参阅在 Google Cloud 控制台中查看配额

如果您长期在多个区域的各项目付费使用大量的承诺 vCPU,则您有可能有资格在所有这些区域获得所有机器类型(内存优化机器类型除外)承诺 vCPU 的无限配额。

如果用完了所有承诺配额,则将无法再购买新的承诺。同样,如果您的某个承诺资源的配额用尽,则即使您还有可用的承诺配额,也无法为该资源购买新承诺。例如,如果您用完了所有承诺配额,则服务器会在您后续发出承诺购买请求时返回以下错误:

"Quota 'COMMITMENTS' exceeded. Limit: 0.0"

提高配额上限

如果您的承诺或承诺资源的配额不够用,可以随时在“配额”页面申请提高配额。您可以随时申请提高配额。如需了解如何提交提高资源配额上限的申请,请参阅申请更高配额上限

例如,设想一个场景,您在 us-central1 区域购买了两个承诺(总共四个 NVIDIA V100 GPU),并且达到了配额限制。现在,假设您想要在同一区域中再购买 2 个新承诺,每个承诺包含 2 个 NVIDIA V100 GPUs,则必须执行以下操作:

  1. 提交一个新配额申请,将您在 us-central1 中的 Committed NVIDIA V100 GPUs 配额上限提高至所需的新值 (8)。
  2. 提交一个新配额申请,将您在 us-central1 中的 Commitments 配额上限提高至所需的新值 (4)。

    关闭申请,等待获批。申请获得批准后,您在 us-central1 中的承诺及承诺 GPU 的配额便会提高,以满足您的新需求。之后,您便可以购买新承诺。

如果您对默认已拥有无限配额的资源申请提高配额上限,则该资源的配额值将仍为无限配额,并且系统会通知您请求的上限低于已获批准的上限。

限制配额上限

您可以通过创建使用方配额替换值来对承诺资源的配额值加以限制。对于默认具有无限配额的资源,创建使用方配额替换值会降低其配额值。若要将默认配额恢复为无限配额,您必须移除为承诺 SKU 设置的使用方替换值。如需了解详情,请参阅创建使用方配额替换值以及删除使用方配额替换值

如需详细了解如何管理资源的配额,请参阅查看和管理配额

购买不含附加预留的承诺

您可以为 vCPU 和/或内存购买承诺量,而无需为这些资源附加任何预留。您可以使用 Google Cloud 控制台、gcloud CLI 或 API 购买这些承诺。

如需详细了解包含附加预留的承诺,请参阅将预留附加到基于资源的承诺

如需为 GPU 和/或本地 SSD 磁盘购买承诺,请参阅购买包含附加预留的承诺

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

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

从承诺购买到激活的这段时间内,承诺的状态保持为 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

相应折扣会自动应用于您所指定区域中的适用实例以及购买这些折扣的项目。

控制台

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

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

    打开“承诺使用折扣”

  2. 如需购买新的承诺,请点击购买使用承诺

  3. 为您的承诺命名。

  4. 选择您希望应用该承诺的区域。

  5. 选择承诺类型

    • 通用 E2,适用于 E2 机器类型资源
    • 通用 N2,适用于 N2 机器类型资源
    • 通用 N2D,适用于 N2D 机器类型资源
    • 通用 C3,适用于 C3 机器类型资源
    • 通用 C3D,适用于 C3D 机器类型资源
    • 通用 T2D,适用于 Tau T2D 机器类型资源
    • 通用 N1,适用于 N1 机器类型资源
    • 计算优化的 C2,适用于 C2 机器类型资源
    • 计算优化的 C2D,适用于 C2D 机器类型资源
    • 内存优化的 M1/M2,适用于 M1 和 M2 机器类型资源
    • 内存优化的 M3,适用于 M3 机器类型资源
    • 加速器优化的 A2,适用于 A2 机器类型资源
    • 加速器优化的 A3(适用于 A3 机器类型资源)
    • 图形优化的 G2,适用于 G2 机器类型资源
  6. 选择承诺的持续时间(1 年或 3 年)。

  7. 输入您要购买的核心数量或内存量。数量没有下限,可以为零。您必须为核心数量输入一个等于或大于零的整数。您可以按 0.25 GB 为增量购买内存。

  8. 阅读购买条款

  9. 点击购买按钮以购买承诺。

gcloud

使用 gcloud CLI 运行 gcloud compute commitments create 命令

gcloud compute commitments create COMMITMENT_NAME \
    --region REGION \
    --project PROJECT_ID \
    --resources vcpu=NUMBER_VCPUS,memory=MEMORY \
    --plan DURATION \
    --type COMMITMENT_TYPE

替换以下内容:

  • COMMITMENT_NAME:您想要用来标识此承诺的名称。
  • REGION:此承诺所适用的区域。每个区域都有不同的承诺价格。如需了解当前价格,请参阅价格表
  • PROJECT_ID:要为其创建承诺的项目的 ID。
  • NUMBER_VCPUS:您愿意为其购买承诺的 vCPU 数量。vCPU 数量必须是等于或大于 0 的整数,可以是偶数或奇数。
  • MEMORY:您愿意为其购买承诺的内存大小(以 MB 或 GB 为单位)。例如 1000MB。如果您未指定单位,则系统会默认使用 GB 单位。您可以按 0.25 GB 为增量购买内存。
  • DURATION:承诺的期限(12-month36-month)。
  • COMMITMENT_TYPE:以下各项中的一项:

    • accelerator-optimized(适用于 A2 机器类型资源)
    • accelerator-optimized-a3(适用于 A3 机器类型资源)
    • compute-optimized(适用于 C2 机器类型资源)
    • compute-optimized-c2d(适用于 C2D 机器类型资源)
    • compute-optimized-c3(适用于 C3 机器类型资源)
    • compute-optimized-c3d(适用于 C3D 机器类型资源)
    • general-purpose(适用于 N1 机器类型资源)
    • general-purpose-e2(适用于 E2 机器类型资源)
    • general-purpose-n2(适用于 N2 机器类型资源)
    • general-purpose-n2d(适用于 N2D 机器类型资源)
    • general-purpose-t2d(适用于 Tau T2D 机器类型资源)
    • 适用于 G2 机器类型资源的 graphics-optimized
    • memory-optimized(适用于M1 或 M2 机器类型资源)
    • memory-optimized-m3(适用于 M3 机器类型资源)

      如果您未指定 --type 标志,则系统会默认使用 general-purpose 值。

示例

  • 如需为 N1 机器类型创建通用承诺使用合约,您可以按照以下示例编写并执行相应命令:

    gcloud compute commitments create example-commitment --region us-central1 \
      --resources vcpu=5,memory=33280MB --plan 12-month \
      --project=myproject
    
  • 如需创建计算优化承诺,请使用 gcloud compute commitments create 命令。以下示例为计算优化机器类型购买 1 年期承诺:

    gcloud compute commitments create example-compute-optimized-commitment \
      --region us-central1 --resources vcpu=2,memory=3814GB --plan 12-month \
      --type compute-optimized --project=myproject
    
  • 如需创建内存优化承诺,请使用以下命令示例:

    gcloud compute commitments create example-memory-optimized-commitment \
      --region us-central1 --resources vcpu=96,memory=1434MB \
      --plan 12-month --type memory-optimized \
      --project=myproject
    
  • 如需创建加速器优化承诺,您必须使用 gcloud compute commitments create 命令购买包含支持附加预留的承诺。您还必须指定所需的资源(包括 GPU)总数。

    创建 GPU 承诺时,您需要指定 --accelerator--resources-accelerator 标志。--accelerator 标志指定挂接到每个虚拟机的 GPU 数量。--resources-accelerator 标志指定承诺中的 GPU 总数。

    例如,以下承诺包括 96 个 vCPU、680 GB 内存、8 个 GPU 和 1 个相关的预留,以便在 us-central1-a 的 2 个虚拟机上使用这些 GPU。

    gcloud compute commitments create example-accelerator-optimized-commitment \
      --region=us-central1 \
      --project=myproject \
      --resources=vcpu=96,memory=680GB \
      --resources-accelerator=count=8,type=nvidia-tesla-a100 \
      --plan 12-month \
      --type accelerator-optimized \
    
      --reservation=reservation-01 \
      --reservation-zone=us-central1-a \
      --machine-type=a2-highgpu-4g \
      --accelerator=count=4,type=nvidia-tesla-a100 \
      --vm-count=2
    
    
  • 如需为 GPU 和/或本地 SSD 磁盘创建承诺,您必须使用 gcloud compute commitments create 命令购买包含附加预留的承诺

    创建 GPU 承诺时,您需要指定 --accelerator--resources-accelerator 标志。--accelerator 标志指定挂接到每个虚拟机的 GPU 数量。--resources-accelerator 标志指定承诺中的 GPU 总数。

    例如,以下承诺包括 4 个 GPU 和 1 个相关的预留,以便在 us-central1-a 的 2 个实例中使用这些 GPU。

    gcloud compute commitments create example-reservation-commitment \
      --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
      
    

REST

在 API 中,向 regionCommitments.insert 方法发出一个 POST 请求,其请求正文中包含有关承诺的信息:

https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments?requestId=OPTIONAL_UNIQUE_ID

资源标头应包含以下内容:

  • name:表示承诺的名称
  • plan:表示承诺的期限,只能选择 TWELVE_MONTHTHIRTY_SIX_MONTH
  • resources:用于指定内存大小和 vCPU 数量。内存必须以 MB 为单位指定。您必须在 resources 部分中同时指定 VCPUMEMORY
  • 承诺的 type,可以是以下项目之一:

    • ACCELERATOR_OPTIMIZED(适用于 A2 机器类型资源)
    • ACCELERATOR_OPTIMIZED_A3(适用于 A3 机器类型资源)
    • COMPUTE_OPTIMIZED(适用于 C2 机器类型资源)
    • COMPUTE_OPTIMIZED_C2D(适用于 C2D 机器类型资源)
    • COMPUTE_OPTIMIZED_C3(适用于 C3 机器类型资源)
    • COMPUTE_OPTIMIZED_C3D(适用于 C3D 机器类型资源)
    • GENERAL_PURPOSE(适用于 N1 机器类型资源)
    • GENERAL_PURPOSE_E2(适用于 E2 机器类型资源)
    • GENERAL_PURPOSE_N2(适用于 N2 机器类型资源)
    • GENERAL_PURPOSE_N2D(适用于 N2D 机器类型资源)
    • GENERAL_PURPOSE_T2D(适用于 Tau T2D 机器类型资源)
    • 适用于 G2 机器类型资源的 GRAPHICS_OPTIMIZED
    • MEMORY_OPTIMIZED(适用于M1 或 M2 机器类型资源)
    • MEMORY_OPTIMIZED_M3(适用于 M3 机器类型资源)

例如,以下示例将创建一个为期 1 年的承诺使用合约,包含 5 个 vCPU 和 18.75 GB 内存:

{
  "name": "example-commitment",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources": [
    {
    "amount": "5",
    "type": "VCPU"
    },
    {
    "amount": "19200",
    "type": "MEMORY"
    }
  ]
}

如需创建内存优化承诺,请添加 type 属性。以下示例演示了如何为 m1-megamem-96 机器类型购买 1 年期的承诺:

{
  "name": "example-memory-optimized-commitment",
  "plan": "TWELVE_MONTH",
  "type": "MEMORY_OPTIMIZED",
  "resources": [
    {
    "amount": "96",
    "type": "VCPU"
    },
    {
    "amount": "1434",
    "type": "MEMORY"
    }
  ]
}

如需创建计算优化承诺,请添加 type 属性。以下示例演示了如何为 c2-standard-16 机器类型购买 1 年期的承诺:

{
  "name": "example-compute-optimized-commitment",
  "plan": "TWELVE_MONTH",
  "type": "COMPUTE_OPTIMIZED",
  "resources": [
    {
    "amount": "16",
    "type": "VCPU"
    },
    {
    "amount": "1434",
    "type": "MEMORY"
    }
  ]
}

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

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

购买承诺后,您的承诺将于次日美国和加拿大太平洋时间(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 CLI 或 REST 将现有预留附加到承诺来购买该承诺。

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(适用于机器类型资源)
    • compute-optimized(适用于 C2 机器类型资源)
    • compute-optimized-c2d(适用于 C2D 机器类型资源)
    • compute-optimized-c3(适用于 C3 机器类型资源)
    • compute-optimized-c3d(适用于 C3D 机器类型资源)
    • general-purpose(适用于 N1 机器类型资源)
    • general-purpose-e2(适用于 E2 机器类型资源)
    • general-purpose-n2(适用于 N2 机器类型资源)
    • general-purpose-n2d(适用于 N2D 机器资源)
    • general-purpose-t2d(适用于 Tau T2D 机器类型资源)
    • 适用于 G2 机器类型资源的 graphics-optimized
    • memory-optimized(适用于M1 或 M2 机器类型资源)
    • memory-optimized-m3(适用于内存优化 M3 机器类型)
  • 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 磁盘:

    • GENERAL_PURPOSE_E2(适用于 E2 机器类型资源)
    • GENERAL_PURPOSE_N2(适用于 N2 机器类型资源)
    • GENERAL_PURPOSE_N2D(适用于 N2D 机器资源)
    • COMPUTE_OPTIMIZED_C3(适用于 C3 机器类型资源)
    • GENERAL_PURPOSE_C3D(适用于 C3D 机器类型资源)
    • GENERAL_PURPOSE_T2D(适用于 Tau T2D 机器类型资源)
    • GENERAL_PURPOSE(适用于 N1 机器类型资源)
    • COMPUTE_OPTIMIZED(适用于 C2 机器类型资源)
    • COMPUTE_OPTIMIZED_C2D(适用于 C2D 机器类型资源)
    • MEMORY_OPTIMIZED(适用于M1 或 M2 机器类型资源)
    • MEMORY_OPTIMIZED_M3(适用于内存优化 M3 机器类型)
    • ACCELERATOR_OPTIMIZED(适用于机器类型资源)
    • 适用于 G2 机器类型资源的 GRAPHICS_OPTIMIZED
  • 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 账号启用了折扣共享,您可以使用该 Cloud Billing 账号中的任何项目购买承诺。选择项目后,请执行以下操作:

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

    转到“承诺使用折扣”

  2. 如需购买新的承诺,请点击购买使用承诺

  3. 为您的承诺使用合约命名,并选择您希望应用该承诺使用合约的区域

  4. 选择承诺类型。以下承诺类型提供适用于 GPU 和/或本地 SSD 磁盘的选项:

    • 通用 C3,适用于 C3 机器类型资源
    • 通用 C3D,适用于 C3D 机器类型资源
    • 通用 N2,适用于 N2 机器类型资源
    • 通用 N2D,适用于 N2D 机器类型资源
    • 通用 N1,适用于 N1 机器类型资源
    • 计算优化型 H3,适用于 H3 机器类型资源
    • 计算优化的 C2,适用于 C2 机器类型资源
    • 计算优化的 C2D,适用于 C2D 机器类型资源
    • 内存优化的 M1/M2,适用于 M1 和 M2 机器类型资源
    • 内存优化的 M3,适用于 M3 机器类型资源
    • 加速器优化的 A3(适用于 A3 机器类型资源)
    • 加速器优化的 A2,适用于 A2 机器类型资源
    • 图形优化的 G2,适用于 G2 机器类型资源
  5. 选择承诺的持续时间(1 年或 3 年)。

  6. 输入您要购买的核心数量和内存量。如果您只想承诺使用 GPU 或本地 SSD 磁盘,并且预留它们,但不承诺使用 vCPU 和内存,请为 vCPU 和内存承诺数量指定 0。

  7. 点击添加 GPU,然后选择您要在承诺中包含的 GPU 类型GPU 数量

  8. 点击添加本地 SSD 并指定要承诺使用的磁盘数量。

  9. 如需创建预留并将其附加到承诺,请点击添加预留

    1. 名称字段中,为预留输入名称。
    2. 选择您要预留资源的区域可用区
    3. 选择您偏好的共享类型
      • 如需为单个项目创建预留,请选择本地
      • 如需在多个项目之间创建共享预留,请选择共享。如需与其他项目共享此预留,请点击 添加项目,然后从当前项目的组织中选择所需的项目。
    4. 搭配虚拟机实例使用字段中,选择以下选项之一:

      • 如需在创建通过名称明确指向此预留的匹配虚拟机时使用此预留的资源,请选择选择特定预留
      • 如需允许匹配的虚拟机实例自动使用此预留,请选择自动使用预留
    5. 虚拟机实例数量字段中,输入要预留的虚拟机实例数量。

    6. 指定您要为每个虚拟机实例预留的资源:

      • 如果您要预留与现有实例模板匹配的虚拟机,请选择使用实例模板,然后从列表中选择一个实例模板。
      • 否则,请选择指定机器类型并指定以下内容:
        1. 机器系列字段中,选择机器系列:通用优化计算内存优化GPU
        2. 系列机器类型字段中,选择机器系列和机器类型。
        3. 可选:指定满足最低要求的 CPU 平台和/或 GPU:
          1. 点击 CPU 平台和 GPU 以展开该部分。
          2. 可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台列表中选择一个选项。
          3. 可选:如需添加 GPU,请点击 添加 GPU。然后,在 GPU 类型GPU 数量字段中,选择每个虚拟机的 GPU 类型和数量。
        4. 可选:添加本地 SSD 磁盘:
          1. 磁盘数量字段中,选择每个虚拟机的本地 SSD 磁盘数量。
          2. 接口类型字段中,选择本地 SSD 磁盘的接口。
    7. 如需完成为此预留指定属性,请点击完成

  10. 点击购买按钮以购买承诺。

  11. 阅读购买条款,并在准备好购买承诺时点击购买

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 磁盘:

    • general-purpose-e2(适用于 E2 机器类型资源)
    • general-purpose-n2(适用于 N2 机器类型资源)
    • general-purpose-n2d(适用于 N2D 机器资源)
    • compute-optimized-c3(适用于 C3 机器类型资源)
    • general-purpose-c3d(适用于 C3D 机器类型资源)
    • general-purpose-t2d(适用于 Tau T2D 机器类型资源)
    • general-purpose(适用于 N1 机器类型资源)
    • compute-optimized(适用于 C2 机器类型资源)
    • compute-optimized-c2d(适用于 C2D 机器类型资源)
    • memory-optimized(适用于M1 或 M2 机器类型资源)
    • memory-optimized-m3(适用于内存优化 M3 机器类型)
    • accelerator-optimized(适用于机器类型资源)
    • 适用于 G2 机器类型资源的 graphics-optimized
  • 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
      • 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 磁盘为 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(适用于机器类型资源)
    • COMPUTE_OPTIMIZED(适用于 C2 机器类型资源)
    • COMPUTE_OPTIMIZED_C2D(适用于 C2D 机器类型资源)
    • COMPUTE_OPTIMIZED_C3(适用于 C3 机器类型资源)
    • COMPUTE_OPTIMIZED_C3D(适用于 C3D 机器类型资源)
    • GENERAL_PURPOSE(适用于 N1 机器类型资源)
    • GENERAL_PURPOSE_E2(适用于 E2 机器类型资源)
    • GENERAL_PURPOSE_N2(适用于 N2 机器类型资源)
    • GENERAL_PURPOSE_N2D(适用于 N2D 机器资源)
    • GENERAL_PURPOSE_T2D(适用于 Tau T2D 机器类型资源)
    • 适用于 G2 机器类型资源的 GRAPHICS_OPTIMIZED
    • MEMORY_OPTIMIZED(适用于M1 或 M2 机器类型资源)
    • MEMORY_OPTIMIZED_M3(适用于内存优化 M3 机器类型)
  • 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
      • 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 磁盘为 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 会自动删除所有附加预留。 删除这些预留不会影响与这些预留关联的任何正在运行的虚拟机实例。正在运行的虚拟机将继续运行,您仍需要为这些虚拟机付费。

在承诺期间,您不能删除包含 GPU 和/或本地 SSD 的任何附加预留或调整其大小。但是,您可以将承诺的现有附加预留替换为新预留。如需详细了解可以更改和不能更改附加预留的内容,请参阅替换附加到承诺的预留

为许可购买承诺

如果您在使用以下操作系统 (OS) 映像的虚拟机上运行工作负载,则可以为许可购买承诺:

  • SUSE Linux Enterprise Server (SLES) 映像
  • SLES for SAP 映像
  • Red Hat Enterprise Linux (RHEL) 映像
  • RHEL for SAP 映像

您在每个操作系统映像的许可承诺中获得的 CUD 百分比取决于您的虚拟机使用的 vCPU 数量。下表显示了每种类型软件许可承诺的 CUD 百分比:

许可承诺类型 vCPU 的数量 1 年期 CUD 百分比 3 年期 CUD 百分比
SLES 映像 1-2 77% 79%
SLES 映像 3-4 54% 59%
SLES 映像 5+ 45% 50%
SLES for SAP 映像 1-2 59% 63%
SLES for SAP 映像 3-4 59% 63%
SLES for SAP 映像 5+ 59% 63%
RHEL 映像 1-4 20% 24%
RHEL 映像 5+ 20% 24%
RHEL for SAP 映像 1-4 20% 24%
RHEL for SAP 映像 5+ 20% 24%

当您购买许可承诺后,该承诺会形成一个许可“池”,这些许可会自动应用于指定区域中所选项目内所有正在运行的虚拟机实例。承诺中的许可与任何特定虚拟机均无关联。当虚拟机启动时,它会从池中获取在用许可,而当虚拟机停止时,它会将许可返回到池中,其中许可可以由另一个虚拟机使用。只要池中有可用的在用许可,您就可以继续享受高级操作系统用量折扣。

例如,如果您需要在两个区域运行 10 个虚拟机(us-central1 中运行 5 个虚拟机,us-west1 中运行 5 个虚拟机),并且这些虚拟机在同一项目 ID 下运行,那么您必须为每个区域购买 5 个许可来运行这些虚拟机。对于每个承诺,承诺许可均可在一年内的任何时间应用于相应区域内任何 5 个并发运行的虚拟机。无论您的使用量是多少,您都需要按月为承诺付费。

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

从承诺购买到激活的这段时间内,承诺的状态保持为 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

购买许可承诺后,无法取消。许可承诺到期后,您正在运行的虚拟机将继续运行,但您需要按按需映像价格支付许可费用。

使用 Google Cloud 控制台、Google Cloud CLI 或 REST 购买许可承诺。

控制台

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

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

    转到“承诺使用折扣”页面

  2. 点击购买承诺以购买新的承诺使用合约。
  3. 点击新许可承诺使用折扣,以购买新的许可承诺。
  4. 为您的承诺命名,并选择您希望应用该承诺的区域
  5. 选择承诺的持续时间(1 年或 3 年)。
  6. 选择许可系列
  7. 选择许可类型和数量
  8. 选择许可数量
  9. 点击购买

gcloud

使用 gcloud CLI 运行 gcloud compute commitments create-license 命令可购买许可承诺。

gcloud compute commitments create-license COMMITMENT_NAME \
    --license `LICENSE_URI`
    --amount NUMBER_OF_LICENSES \
    --cores-per-license CORES_PER_LICENSE \
    --plan PLAN \
    --region REGION \

替换以下内容:

  • COMMITMENT_NAME:您的承诺的名称。
  • LICENSE_URI:许可 URI。例如 https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-sap-12
  • NUMBER_OF_LICENSES:您计划购买的许可数量。
  • CORES_PER_LICENSE:每个许可的核心数量。输入 1-2 3-45+
  • PLAN:输入方案长度:12-month36-month
  • REGION:此承诺适用的地区。

例如,以下承诺适用于 us-central1 区域期限长达 36 个月的 4 个 SAP 许可,每个许可有 3-4 个核心:

gcloud compute commitments create-license commitment-1
    --license https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-12
    --amount=4
    --cores-per-license=3-4
    --plan=36-month
    --region=us-central1

例如,以下承诺适用于 us-central1 区域期限长达 12 个月的 2 个 SLES for SAP 许可,每个许可有 1-2 个核心:

gcloud compute commitments create-license commitment-2
    --license https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-sap-12
    --amount=2
    --cores-per-license=1-2
    --plan=12-month
    --region=us-central1

REST

使用 regionCommitments.insert 方法并添加 licenseResource 字段来定义许可承诺的属性。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments?requestId=OPTIONAL_UNIQUE_ID

{
    "name": COMMITMENT_NAME,
    "plan": PLAN,
    "category": "LICENSE",
    "licenseResource": {
      "coresPerLicense": CORES_PER_LICENSE,
      "amount": NUMBER_OF_LICENSES,
      "license": `LICENSE_URI`
      }
}

替换以下内容:

  • COMMITMENT_NAME:您的承诺的名称。
  • LICENSE_URI:许可 URI。例如 https://www.googleapis.com/compute/v1/projects/myproject/global/licenses/sles-sap-12
  • NUMBER_OF_LICENSES:您计划购买的许可数量。
  • CORES_PER_LICENSE:每个许可的核心数量。输入 1-2 3-45+
  • PLAN:输入方案长度:12-month36-month
  • REGION:此承诺适用的地区。

例如,以下承诺适用于 us-central1 区域期限长达 36 个月的 4 个 SLES for SAP 许可,每个许可有 3-4 个核心。

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

{
    "name": "commitment-3",
    "plan": "THIRTY_SIX_MONTH",
    "category": "LICENSE",
    "licenseResource": {
      "coresPerLicense": "3-4",
      "amount": "4",
      "license": "https://www.googleapis.com/compute/v1/projects/suse-sap-cloud/global/licenses/sles-sap-12"
      }
}

应用承诺使用折扣建议

Google Cloud 控制台提供了承诺使用折扣建议。Recommender 会生成一张卡片,其中包含有关过去 30 天内虚拟机使用情况的信息。如果您的虚拟机显示 30 天未授权使用的趋势,则 Recommender 会将其归类为购买承诺使用折扣以降低虚拟机费用的机会。

如果满足以下条件,则使用情况视为未承诺且符合条件。

  • 虚拟机在整个 30 天的期限内都处于活动状态。
  • 虚拟机的 SKU 属于符合条件的承诺使用折扣存储桶。
  • 现有承诺尚未涵盖虚拟机的使用情况。

建议每天刷新一次,并考虑过去 30 天的使用历史记录。

承诺使用折扣建议由两种单独的算法生成,您可以在摘要卡上购买(或接受)承诺使用折扣时从这两种算法中进行选择。

  • 稳定的使用建议涵盖一段时间内的最小稳定使用量。
  • 最佳建议基于总体使用量,可涵盖并非始终启用的资源。

如需详细了解承诺建议,请参阅承诺使用折扣 Recommender 文档。

限制

承诺使用折扣建议仅适用于机器类型承诺的 CPU 和内存组件,不适用于 SSD、GPU 或许可承诺。

查看并接受建议

如需了解如何购买建议的承诺,请参阅购买建议

忽略建议

如需了解如何忽略承诺建议或恢复之前忽略的建议,请参阅忽略建议

建议历史记录

如需查看已应用和已忽略的承诺建议的历史记录,请参阅查看建议历史记录

为硬件承诺启用折扣共享

默认情况下,基于硬件资源的 CUD 会应用于您购买基于资源的承诺的项目,并且会应用项目范围折扣。如果您将购买承诺的项目移动到其他 Cloud Billing 账号,新的 Cloud Billing 账号下会继续享受该项目的适用承诺使用折扣。

如需在与您的 Cloud Billing 账号关联的所有项目中共享符合条件的使用量的硬件承诺折扣,请在 Google Cloud 控制台中启用承诺使用折扣共享。

启用承诺使用折扣共享后,承诺范围会从项目更改为结算账号。通过启用折扣共享将承诺范围更改为结算账号后,无法停用折扣共享以还原为项目范围。相反,Cloud Billing 支持必须为您执行此操作。

折扣共享可与归因配置搭配使用。您可以选择使用按比例归因优先归因

除非您先配置归因偏好设置,否则在启用折扣共享时,系统会默认为基于 Compute Engine 资源的承诺使用按比例归因

如果您要在启用折扣共享之前配置归因配置,请参阅为基于资源的承诺选择归因,以了解详情以及如何启用每种归因类型。

完成以下步骤以启用承诺使用折扣共享:

  1. 在 Google Cloud 控制台中,登录您的 Cloud Billing 账号。

    登录您的 Cloud Billing 账号

  2. 在系统提示时,选择您要为其将承诺使用折扣配置为使用折扣共享的 Cloud Billing 账号。系统会打开所选 Cloud Billing 账号的结算“概览”页面。

  3. 在“结算”导航菜单中,选择 CUD 分析以查看“承诺使用折扣分析”页面。

  4. 承诺使用折扣分析页面上,从承诺类型菜单中选择基于资源的承诺

  5. “基于资源的承诺”报告标题下,找到承诺范围

    • 项目范围表示没有为基于资源的承诺使用折扣启用折扣共享。项目范围折扣仅适用于购买了承诺的项目中符合条件的使用量。
    • 结算账号范围表示已为基于资源的承诺启用折扣共享。结算账号范围承诺将承诺使用折扣应用于与 Cloud Billing 账号关联的所有项目中的所有符合条件的使用量。
  6. 如需更改承诺范围设置,请选择修改

    • 如果当前范围项目,请在文本输入框中输入启用以对结算账号启用折扣共享,然后点击启用结算账号范围以保存更改。

    • 如果当前范围结算账号,则表示折扣共享已启用。如需停用折扣共享并还原为项目范围的承诺,请点击与支持团队联系

您只需在一个项目级基于资源的承诺中启用折扣共享,即可影响同一 Cloud Billing 账号中所有基于资源的承诺的范围。启用承诺使用折扣共享后,您的承诺范围会发生如下变化:

  • 同一 Cloud Billing 账号下所有项目中的所有当前和有效基于资源的承诺使用折扣(包括您之前购买的承诺使用折扣以及将来购买的新承诺使用折扣)会在您的 Cloud Billing 账号中共享。
  • 如果您更改承诺范围配置(例如创建与 Cloud Billing 账号关联的新项目,或将现有项目关联到 Cloud Billing 账号),则更改会在美国和加拿大太平洋时间(UTC-8 或 UTC-7)的次日零点(午夜)生效。
  • 如果您将具有原始承诺的项目移动到新的 Cloud Billing 账号,则折扣共享设置会发生变化。如需了解更改项目的 Cloud Billing 账号的影响,请参阅更改与项目关联的 Cloud Billing 账号

如需更好地了解承诺使用折扣对账单的影响及其显示方式,请参阅了解您的承诺使用折扣账单

查看您的承诺

使用 Google Cloud 控制台、Google Cloud CLI 或 REST 查看所有承诺的列表。

控制台

在 Google Cloud 控制台的承诺使用折扣页面中,查看承诺列表。

转到“承诺使用折扣”

gcloud

使用 commitments list 命令发出请求:

gcloud compute commitments list

该工具将返回一个承诺列表:

 NAME              REGION    END_TIMESTAMP                  STATUS
 my-commitment     us-east1  2018-03-17T00:00:00.000-07:00  NOT_YET_ACTIVE

REST

您可以通过向以下网址发出 aggregatedList 请求来获取所有区域中的承诺列表:

https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/commitments

该请求将返回一个承诺列表:

"commitments": [
{
  "kind": "compute#commitment",
  "id": "3294122326373778983",
  "creationTimestamp": "2017-02-09T15:18:32.411-08:00",
  "name": "example-commitment",
  "region": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/commitments/example-commitment",
  "status": "NOT_YET_ACTIVE",
  "statusMessage": "The commitment is not yet active (its startTimestamp is in the future). It will not apply to current resource usage.",
  "plan": "TWELVE_MONTH",
  "startTimestamp": "2017-02-10T00:00:00.000-08:00",
  "endTimestamp": "2018-02-10T00:00:00.000-08:00",
  "resources": [
    {
      "type": "VCPU",
      "amount": "5"
    },
    {
      "type": "MEMORY",
      "amount": "32500"
    }]
  }
]

修改承诺

您可以通过以下方式修改有效承诺:

  • 您可以更改承诺使用合约的自动续订状态。如需了解详情,请参阅自动续订承诺
  • 您可以通过合并或拆分现有承诺来修改承诺中的资源量。如需了解详情,请参阅合并和拆分承诺
  • 您可以升级 1 年期承诺的期限,并将其转换为 3 年期的承诺。如需了解详情,请参阅升级承诺期限
  • 您可以更改与购买了基于资源的承诺的项目相关联的 Cloud Billing 账号并支付费用。了解如何更改项目的 Cloud Billing 账号

创建承诺后,您便无法修改承诺的项目、类型或区域。

取消承诺

承诺一旦创建便无法取消。您必须在承诺使用合约期间支付同意的每月金额。将来对 Compute Engine 资源标准价格的更改不会影响承诺。

如果您购买承诺使用合约的行为纯属意外,或者错误配置了承诺使用合约,请与 Google Cloud 结算支持团队联系以获得帮助。

了解您的承诺使用折扣账单

请阅读以下文档,以便更好地了解您的账单:

支持

如果您对账单上的承诺使用折扣有任何疑问,可以与 Google Cloud 支持团队联系

后续步骤