承诺使用折扣 (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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
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 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-month
或36-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 为单位。例如10240MB
或10GB
。如果您未指定单位,Compute Engine 将使用 GB 作为单位。您可以按 0.25 GB 的增量购买内存。COMMITTED_LOCAL_SSD
:您的承诺中包含的本地 SSD 空间,以 GB 为单位。每个本地 SSD 磁盘为 375 GB。COMMITTED_ACCELERATOR_COUNT
:您的承诺中包含的 GPU 数量。COMMITTED_ACCELERATOR_TYPE
:您的承诺中包含的 GPU 类型。RESERVATION_NAME_1
和RESERVATION_NAME_2
:要附加到承诺的现有预留的名称。RESERVATION_ZONE_1
和RESERVATION_ZONE_2
:要附加到承诺的现有预留的可用区。
示例:通过附加现有预留来购买承诺
假设项目 myproject
的 us-central1-a
和 us-central1-b
可用区中有两个预留 res-01
和 res-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_MONTH
或THIRTY_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-1
和res-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"
示例:通过附加现有预留来购买承诺
假设项目 myproject
的 us-central1-a
和 us-central1-b
可用区中有两个预留 res-01
和 res-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 账号中的任何项目购买承诺。选择项目后,请执行以下操作:
在 Google Cloud 控制台中,转到承诺使用折扣页面。
如需购买新的承诺,请点击购买使用承诺。
为您的承诺使用合约命名,并选择您希望应用该承诺使用合约的区域。
选择承诺类型。以下承诺类型提供适用于 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 机器类型资源
选择承诺的持续时间(1 年或 3 年)。
输入您要购买的核心数量和内存量。如果您只想承诺使用 GPU 或本地 SSD 磁盘,并且预留它们,但不承诺使用 vCPU 和内存,请为 vCPU 和内存承诺数量指定 0。
点击添加 GPU,然后选择您要在承诺中包含的 GPU 类型和 GPU 数量。
点击添加本地 SSD 并指定要承诺使用的磁盘数量。
如需创建���留并将其附加到承诺,请点击添加预留。
- 在名称字段中,为预留输入名称。
- 选择您要预留资源的区域和可用区。
- 选择您偏好的共享类型:
- 如需为单个项目创建预留,请选择本地。
- 如需在多个项目之间创建共享预留,请选择共享。如需与其他项目共享此预留,请点击 添加项目,然后从当前项目的组织中选择所需的项目。
在搭配虚拟机实例使用字段中,选择以下选项之一:
- 如需在创建通过名称明确指向此预留的匹配虚拟机时使用此预留的资源,请选择选择特定预留。
- 如需允许匹配的虚拟机实例自动使用此预留,请选择自动使用预留。
在虚拟机实例数量字段中,输入要预留的虚拟机实例数量。
指定您要为每个虚拟机实例预留的资源:
- 如果您要预留与现有实例模板匹配的虚拟机,请选择使用实例模板,然后从列表中选择一个实例模板。
- 否则,请选择指定机器类型并指定以下内容:
- 在机器系列字段中,选择机器系列:通用、优化计算、内存优化或 GPU。
- 在系列和机器类型字段中,选择机器系列和机器类型。
- 可选:指定满足最低要求的 CPU 平台和/或 GPU:
- 点击 CPU 平台和 GPU 以展开该部分。
- 可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台列表中选择一个选项。
- 可选:如需添加 GPU,请点击 添加 GPU。然后,在 GPU 类型和 GPU 数量字段中,选择每个虚拟机的 GPU 类型和数量。
- 可选:添加本地 SSD 磁盘:
- 在磁盘数量字段中,选择每个虚拟机的本地 SSD 磁盘数量。
- 在接口类型字段中,选择本地 SSD 磁盘的接口。
如需完成为此预留指定属性,请点击完成。
点击购买按钮以购买承诺。
阅读购买条款,并在准备好购买承诺时点击购买。
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 文件方法创建单个预留并附加到承诺。如需使用此方法创建附加预留,请执行以下操作:
在当前目录中创建 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
如需为多个预留指定配置,请为要创建的每个预留重复这些属性。您可以将任意数量的现有预留附加到承诺。
运行
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-month
或36-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 为单位。例如10GB
或10240MB
。如果您未指定单位,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
:指定附加预留是否为明确指定的预留(true
或false
)。如需详细了解明确指定的预留,请参阅预留的工作原理。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
。CPUS
:vCPU 的数量。MEMORY
:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供;例如,如需创建配备 4 个 vCPU 和 5 GB 内存(大小为 5120 MB)的 N2 虚拟机,请使用n2-custom-4-5120
。
- 对于预定义机器类型,请使用
RESERVED_ACCELERATOR_COUNT
:您要在附加预留中为每个虚拟机添加的 GPU 数量。RESERVED_ACCELERATOR_TYPE
:您要在附加预留中添加的加速器类型。INTERFACE_1
和INTERFACE_2
:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括scsi
和nvme
。每个本地 SSD 磁盘为 375 GB。对要添加的每个本地 SSD 磁盘重复local_ssd
参数。您最多可以指定 24 个本地 SSD 磁盘。OWNER_PROJECT_ID
:项目的 ID,您将在其中购买包含附加预留的承诺。如果要在多个使用方项目之间共享附加预留,请指定此字段。MINIMUM_CPU_PLATFORM
:您要为附加预留指定的满足最低要求的 CPU 平台。SHARE_SETTING
:附加预留的共享类型。如果要在多个使用方项目之间共享附加预留,请将此字段的值指定为projects
。如果要创建单项目预留,请排除此字段。CONSUMER_PROJECT_ID_1
和CONSUMER_PROJECT_ID_2
:可以共享此预留的项目的项目 ID,例如project-1
和project-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_MONTH
或THIRTY_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
:指定附加预留是否为明确指定的预留(true
或false
)。如需详细了解明确指定的预留,请参阅预留的工作原理。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
。CPUS
:vCPU 的数量。MEMORY
:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供;例如,如需创建配备 4 个 vCPU 和 5 GB 内存(大小为 5120 MB)的 N2 虚拟机,请使用n2-custom-4-5120
。
- 对于预定义机器类型,请使用
RESERVED_ACCELERATOR_COUNT
:您要在附加预留中为每个虚拟机添加的 GPU 数量。RESERVED_ACCELERATOR_TYPE
:您要在附加预留中添加的加速器类型。INTERFACE_1
和INTERFACE_2
:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括scsi
和nvme
。每个本地 SSD 磁盘为 375 GB。对要添加的每个本地 SSD 磁盘重复localSsds
参数。您最多可以指定 24 个本地 SSD 磁盘。MINIMUM_CPU_PLATFORM
:您要为附加预留指定的满足最低要求的 CPU 平台。INSTANCE_TEMPLATE_NAME
:您要用于创建附加预留的实例模板的名称。SHARE_SETTING
:附加预留的共享类型。如果要在多个使用方项目之间共享附加预留,请将此字段的值指定为SPECIFIC_PROJECTS
。如果要创建单项目预留,请排除此字段。CONSUMER_PROJECT_ID_1
和CONSUMER_PROJECT_ID_2
:可以共享此预留的项目的项目 ID,例如project-1
和project-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" } ] }
更换附加到承诺使用合约的预留
如果要修改使用承诺资源的虚拟机类型和数量,请将承诺使用合约的现有附加预留替换为新预留。
允许的更改
将承诺使用合约的现有附加预留替换为新预留时,您可以请求进行以下任一更改:
- 您可以预留其他机器类型的虚拟机。但是,您仍必须预留同一机器系列中的虚拟机,以便继续享受预留资源的 CUD。
- 您可以更改要预留的虚拟机数量。
- 只要预留的 GPU 和本地 SSD 磁盘的总数保持不变,就可以更改每个虚拟机附加的 GPU 和本地 SSD 磁盘的数量。
您可以将替换后的预留指定为本地预留或共享预留。
使用要求
将承诺的附加预留替换为新预留时,您的请求必须满足以下所有要求:
- 一次只能用一个新的附加预留替换一个附加预留。如需替换附加预留,请通过将虚拟机数量设置为 0 来移除现有的附加预留,并定义要替换它的新附加预留。
- 新预留必须与承诺位于同一项目中。
- 新预留必须与已移除预留位于同一可用区。
- 新预留中指定的 GPU 数量和类型必须与已移除预留匹配。
- 新预留中指定的本地 SSD 磁盘的数量和类型必须与已移除预留匹配。
- 每个请求最多只能更改 100 个虚拟机。如需进行涉及 100 多个虚拟机的更改,请将更改分成多个较小的请求,或与 Google Cloud 支持团队联系。
您替换预留的请求还取决于当时的容量可用性。如果请求的容量不可用,则请求将失败并返回资源可用性错误,您可以尝试通过修改或推迟请求来解决这个问题。 如需了解详情,请参阅排查资源可用性问题的文档。
如果替换附加预留的请求失败,则附加预留和现有预留资源不会受影响。如需保留容量,请等至替换资源的请求成功后,对虚拟机进行相应的更改。
替换附加预留的步骤
您可以使用 Google Cloud CLI 或 REST 替换承诺的预留。
gcloud
如需替换附加到承诺的预留,请执行以下操作:
使用以下附加预留的配置在当前目录中创建 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_1
和CURRENT_RESERVATION_INTERFACE_2
:在当前附加预留中每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括scsi
和nvme
。每个本地 SSD 磁盘为 375 GB。对所有预留的本地 SSD 磁盘重复local_ssd
参数。CURRENT_RESERVATION_PROJECT_ID
:包含承诺和附加预留的当前项目的项目 ID。如果在多个使用方项目之间共享当前附加预留,请指定此字段。CURRENT_RESERVATION_SHARE_SETTING
:当前预留的共享类型。如果在多个使用方项目之间共享当前附加预留,请将此字段的值指定为projects
。CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1
和CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2
:您与之共享当前附加预留的项目的项目 ID,例如project-1
和project-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
。CPUS
:vCPU 的数量。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_1
和REPLACEMENT_RESERVATION_INTERFACE_2
:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括scsi
和nvme
。 每个本地 SSD 磁盘为 375 GB。对���添加的每个本地 SSD 磁盘重复local_ssd
参数。您最多可以指定 24 个本地 SSD 磁盘。REPLACEMENT_RESERVATION_PROJECT_ID
:包含承诺和附加预留的当前项目的项目 ID。如果要在多个使用方项目之间共享替换预留,请指定此字段。REPLACEMENT_RESERVATION_SHARE_SETTING
:替换预留的共享类型。如果要在多个使用方项目之间共享替换预留,请将此字段的值指定为projects
。REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
和REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_2
:可以共享此预留的项目的项目 ID,例如project-1,project-2
。您最多可以添加 100 个使用方项目。 这些项目必须与所有者项目位于同一组织中。请勿添加REPLACEMENT_RESERVATION_PROJECT_ID
,默认情况下,它可以使用此预留。
运行
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=3000GB \
--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-1
和 project-2
)共享,并且归当前项目 my-project
所有。n1-standard-8
机器类型为每个虚拟机使用 8 个 vCPU 和 30 GB。
如需将附加预留 res-1
替换为 my-commitment-with-reservations
承诺的 res-2
,请执行以下操作:
在当前目录中创建一个名为
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
运行以下命令:
gcloud beta compute commitments update-reservations my-commitment-with-reservations \ --region=asia-east1-a \ --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_1
和CURRENT_RESERVATION_INTERFACE_2
:在当前附加预留中每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括scsi
和nvme
。每个本地 SSD 磁盘为 375 GB。对所有预留的本地 SSD 磁盘重复localSsds
参数。CURRENT_RESERVATION_SHARE_SETTING
:当前预留的共享类型。如果在多个使用方项目之间共享当前附加预留,请将此参数的值指定为projects
。CURRENT_RESERVATION_CONSUMER_PROJECT_ID_1
和CURRENT_RESERVATION_CONSUMER_PROJECT_ID_2
:您与之共享当前附加预留的项目的项目 ID,例如project-1
和project-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
。CPUS
:vCPU 的数量。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_1
和REPLACEMENT_RESERVATION_INTERFACE_2
:您希望每个预留虚拟机的本地 SSD 磁盘使用的接口类型。有效选项包括scsi
和nvme
。 每个本地 SSD 磁盘为 375 GB。对要添加的每个本地 SSD 磁盘重复localSsds
参数。您最多可以指定 24 个本地 SSD 磁盘。REPLACEMENT_RESERVATION_SHARE_SETTING
:替换预留的共享类型。如果要在多个使用方项目之间共享替换预留,请将此参数的值指定为projects
。REPLACEMENT_RESERVATION_CONSUMER_PROJECT_ID_1
和REPLACEMENT_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-1
和 project-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"
}
]
}