本文档介绍如何创建只能由同一项目中的虚拟机 (VM) 实例使用的单项目预留。如需了解预留,请参阅 Compute Engine 可用区级资源的预留。
如需了解创建预留的其他方法,请参阅以下页面:
如果您在当前项目中具有任何 1 年期或 3 年期承诺,则您的预留资源会自动获得任何适用的承诺使用折扣。您还可以在购买承诺时创建预留并将其附加到该承诺。如需了解详情,请参阅将预留附加到承诺。
如需创建可供多个项目使用的预留,请参阅创建共享预留。
准备工作
- 查看预留的要求和限制。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
项目的
compute.reservations.create
权限 -
如需指定实例模板:实例模板的
compute.instanceTemplates.useReadOnly
权限 推荐:指定实例模板
本部分介绍如何使用实例模板定义预留的属性。通过使用实例模板,您可以在同一位置定义预留的属性和可以使用预留的虚拟机。
-
本部分介绍了如何使用现有虚拟机来定义预留的属性。通过使用现有虚拟机的属性,您可以通过创建其属性与参考虚拟机匹配的虚拟机来使用该预留。
-
本部分介绍如何直接定义预留的属性。此方法要求您手动确保虚拟机和预留的属性完全匹配,任何不匹配的属性都会阻止使用。
创建一个只能由明确指定该预留的虚拟机使用的预留,如本文档的以下部分中所述。然后,将虚拟机配置为使用该特定预留。
配置无法使用任何预留的虚拟机。
在实例模板中的资源所在的区域和可用区中创建预留。在实例模板中指定的任何区域级资源或可用区级资源(例如机器类型或永久性磁盘卷)会将模板的使用限制在存在这些资源的位置。例如,如果您的实例模板指定了可用区
us-central1-a
中的现有 Persistent Disk 卷,则您只能在同一可用区中创建预留。如需检查现有模板是否指定了任何将模板绑定到特定区域或可用区的资源,请查看实例模板的详细信息,并查找对其中的区域级资源或可用区级资源的引用。在 Google Cloud 控制台中,转到预留页面。
在按需预留标签页(默认)上,点击
创建预留。此时会打开创建预留页面。
在名称部分,输入预留的名称。
在区域和可用区部分,选择您要预留资源的位置。
在共享类型部分中,选择本地(如果尚未选择)。
可选:如需允许 GPU 虚拟机的预留供 Vertex AI 中的自定义训练作业或预测作业使用,请在 Google Cloud 服务部分中选择共享预留。
在搭配虚拟机实例使用部分中,选择以下选项之一:
如需允许匹配的虚拟机自动使用此预留,请选择自动使用预留(如果尚未选择)。
如需只有在创建通过名称明确指向此预留的匹配虚拟机时使用此预留的资源,请选择选择特定预留。
在虚拟机实例数量部分,输入要预留的虚拟机数量。
在机器配置部分中,执行以下操作:
如需根据现有实例模板指定虚拟机的属性,请选择使用实例模板。
在实例模板字段中,选择所需的实例模板。 如果您选择区域级实例模板,则只能在实例模板所在的区域内预留资源。
在自动删除部分中,您可以启用自动删除选项,以让 Compute Engine 在特定日期和时间自动删除预留。当您停止使用预留时,自动删除预留有助于避免产生不必要的费用。
要创建预留,请点击创建。
此时会打开预留页面。创建单项目预留可能需要一分钟时间才能完成。
RESERVATION_NAME
:要创建的预留的名称。PROJECT_ID
:要在其中预留资源以及实例模板所在的项目的 ID。LOCATION
:实例模板的位置。 请指定以下某个值:对于全球实例模板:
global
。对于区域级实例模板:
regions/REGION
。 将REGION
替换为实例模板所在的区域。如果您指定区域级实例模板,则只能预留与模板区域相同的区域内的虚拟机。
INSTANCE_TEMPLATE_NAME
:现有实例模板的名称。如果实例模板指定了 A3 机器类型或紧凑布置政策,则必须添加--require-specific-reservation
标志。这表示只有明确指向预留的虚拟机才能使用它。如需了解详情,请参阅使用特定预留中的虚拟机。NUMBER_OF_VMS
:要预留的虚拟机数量。ZONE
:预留资源的可用区。如需指定只有明确指向此预留的虚拟机才能使用它,请添加
--require-specific-reservation
标志。gcloud compute reservations create RESERVATION_NAME \ --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \ --require-specific-reservation \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
如需允许 GPU 虚拟机的预留供 Vertex AI 中的自定义训练作业或预测作业使用,请将
gcloud beta compute reservations create
命令与--reservation-sharing-policy=ALLOW_ALL
标志结合使用。gcloud beta compute reservations create RESERVATION_NAME \ --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \ --reservation-sharing-policy=ALLOW_ALL \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
如需让 Compute Engine 自动删除预留,请选择以下方法之一:
如需在特定日期和时间删除预留,请使用带有
--delete-at-time
标志的gcloud beta compute reservations create
命令。gcloud beta compute reservations create RESERVATION_NAME \ --delete-at-time=DELETE_AT_TIME \ --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
将
DELETE_AT_TIME
替换为采用 RFC 3339 时间戳格式的日期和时间,必须如下所示:none YYYY-MM-DDTHH:MM:SSOFFSET
替换以下内容:
YYYY-MM-DD
:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-
) 分隔的日期。HH:MM:SS
:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:
) 分隔的采用 24 小时制的时间。OFFSET
:采用世界协调时间 (UTC) 的偏移量格式的时区。例如,要使用太平洋标准时间 (PST),请指定-08:00
。或者,如果不使用偏移量,请指定Z
。
如需在特定时间段后删除预留,请使用带有
--delete-after-duration
标志的gcloud beta compute reservations create
命令。gcloud beta compute reservations create RESERVATION_NAME \ --delete-after-duration=DELETE_AFTER_DURATION \ --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
将
DELETE_AFTER_DURATION
替换为以天、小时、分钟或秒为单位的时长。例如,指定30m
表示 30 分钟,或指定1d2h3m4s
表示 1 天 2 小时 3 分钟 4 秒。
PROJECT_ID
:要在其中预留资源以及实例模板所在的项目的 ID。ZONE
:预留资源的可用区。RESERVATION_NAME
:要创建的预留的名称。NUMBER_OF_VMS
:要预留的虚拟机数量。LOCATION
:实例模板的位置。 请指定以下某个值:对于全球实例模板:
global
。对于区域级实例模板:
regions/REGION
。 将REGION
替换为实例模板所在的区域。如果您指定区域级实例模板,则只能预留与模板区域相同的区域内的虚拟机。
INSTANCE_TEMPLATE_NAME
:现有实例模板的名称。如果实例模板指定了 A3 机器类型或紧凑布置政策,则必须在请求正文中添加specificReservationRequired
字段,并将该字段设置为true
。这表示只有明确指向此预留的虚拟机才能使用它。如需了解详情,请参阅使用特定预留中的虚拟机。如需指定只有明确指向此预留的虚拟机才能使用它,请在请求正文中添加
specificReservationRequired
字段,并将该字段设置为true
。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME" }, "specificReservationRequired": true }
如需允许 GPU 虚拟机的预留供 Vertex AI 中的自定义训练作业或预测作业使用,请向
beta.reservations.insert
方法发出POST
请求。在请求正文中,添加serviceShareType
字段并将其设置为ALLOW_ALL
。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "reservationSharingPolicy": { "serviceShareType": "ALLOW_ALL" }, "specificReservation": { "count": "NUMBER_OF_VMS", "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME" } }
如需让 Compute Engine 自动删除预留,请选择以下方法之一:
如需在特定日期和时间删除预留,请向
beta.reservations.insert
方法发出POST
请求。在请求正文中,包含deleteAtTime
字段。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations { "deleteAtTime": "DELETE_AT_TIME", "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME" } }
将
DELETE_AT_TIME
替换为格式为 RFC 3339 时间戳(时间戳必须如下所示)的日期和时间:YYYY-MM-DDTHH:MM:SSOFFSET
替换以下内容:
YYYY-MM-DD
:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-
) 分隔的日期。HH:MM:SS
:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:
) 分隔的采用 24 小时制的时间。OFFSET
:采用世界协调时间 (UTC) 的偏移量格式的时区。例如,要使用太平洋标准时间 (PST),请指定-08:00
。或者,如果不使用偏移量,请指定Z
。
如需在特定时间段后删除预留,请向
beta.reservations.insert
方法发出POST
请求。在请求正文中,包含deleteAfterDuration
字段。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations { "deleteAfterDuration": { "seconds": "DELETE_AFTER_DURATION" }, "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME" } }
将
DELETE_AFTER_DURATION
替换为持续时间,以秒为单位。例如,指定86400
标识 86400 秒(1 天)。
请按如下方式创建和使用实例模板:
根据参考虚拟机创建实例模板,而无需替换参考虚拟机的属性。
执行以下一项或两项操作,使用新创建的模板创建虚拟机:
根据参考虚拟机创建虚拟机,同时确保新虚拟机和参考虚拟机的属性完全匹配。
在 Google Cloud 控制台中,转到预留页面。
点击
创建预留。此时会打开创建预留页面。
在名称部分,输入预留的名称。
在区域和可用区部分,选择您要预留资源的位置。
在共享类型部分中,点击本地(如果尚未选择)。
在搭配虚拟机实例使用部分中,选择以下选项之一:
如需允许匹配的虚拟机自动使用此预留,请选择自动使用预留(如果尚未选择)。
如需只有在创建通过名称明确指向此预留的匹配虚拟机时使用此预留的资源,请选择选择特定预留。
在虚拟机实例数量部分,输入要预留的虚拟机数量。
在机器配置部分中,执行以下操作:
选择使用现有虚拟机。
在现有虚拟机部分,选择要使用其属性创建预留的虚拟机。
可选:如需为符合要求的预留指定紧凑布置政策,请在组布置政策部分中,点击选择或创建组布置政策列表,然后执行以下操作之一:
如需创建要在此预留中指定的紧凑布置政策,请执行以下操作:
点击创建组布置政策。
系统会显示创建组布置政策窗格。
在政策名称中,输入政策的名称。
点击创建。
创建紧凑布置政策可能需要几秒钟才能完成。
否则,请选择现有的紧凑布置政策。
在自动删除部分中,您可以启用自动删除选项,以便让 Compute Engine 在特定日期和时间自动删除预留。当您停止使用预留时,自动删除预留有助于避免产生不必要的费用。
要创建预留,请点击创建。
此时会打开预留页面。创建预留最长可能需要一分钟才能完成。
在 Google Cloud 控制台中,转到预留页面。
在按需预留标签页(默认)上,点击
创建预留。此时会打开创建预留页面。
在名称部分,输入预留的名称。
在区域和可用区部分,选择您要预留资源的位置。
在共享类型部分中,点击本地(如果尚未选择)。
可选:如需允许 GPU 虚拟机的预留供 Vertex AI 中的自定义训练作业或预测作业使用,请在 Google Cloud 服务部分中选择共享预留。
在搭配虚拟机实例使用部分中,选择以下选项之一:
如需允许匹配的虚拟机自动使用此预留,请选择自动使用预留(如果尚未选择)。
如需只有在创建通过名称明确指向此预留的匹配虚拟机时使用此预留的资源,请选择选择特定预留。
在虚拟机实例数量部分,输入要预留的虚拟机数量。
在机器配置部分中,选择指定机器类型,然后指定以下内容:
在机器家族、系列和机器类型部分,选择机器家族、系列和机器类型。
可选:如需指定满足最低要求的 CPU 平台或将 GPU 挂接到 N1 虚拟机,请执行以下操作:
如需展开 CPU 平台和 GPU 部分,请点击
展开箭头。可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台中选择一个选项。
可选:如需将 GPU 附加到 N1 虚拟机,请点击
添加 GPU。然后,在 GPU 类型和 GPU 数量部分,选择要挂接到每个 N1 虚拟机的 GPU 的类型和数量。
可选:如需添加本地 SSD 磁盘,请执行以下操作:
在磁盘数量部分,选择每个虚拟机的本地 SSD 磁盘数量。
在接口类型部分,选择本地 SSD 磁盘的接口。
可选:如需为符合要求的预留指定紧凑布置政策,请点击选择或创建组布置政策列表,然后执行以下操作之一:
如需创建要在此预留中指定的紧凑布置政策,请按照以下步骤操作:
点击创建组布置政策。
系统会显示创建组布置政策窗格。
在政策名称中,输入政策的名称。
点击创建。
创建紧凑布置政策可能需要几秒钟才能完成。
否则,请选择现有的紧凑布置政策。
可选:如需为符合要求的预留指定紧凑布置政策,请在组布置政策部分中,点击选择或创建组布置政策列表,然后执行以下操作之一:
如需创建要在此预留中指定的紧凑布置政策,请执行以下操作:
点击创建组布置政策。
系统会显示创建组布置政策窗格。
在政策名称中,输入政策的名称。
点击创建。
创建紧凑布置政策可能需要几秒钟才能完成。
否则,请选择现有的紧凑布置政策。
在自动删除部分中,您可以启用自动删除选项,以便让 Compute Engine 在特定日期和时间自动删除预留。当您停止使用预留时,自动删除预留有助于避免产生不必要的费用。
要创建预留,请点击创建。
此时会打开预留页面。创建单项目预留可能需要一分钟时间才能完成。
RESERVATION_NAME
:要创建的预留的名称。MACHINE_TYPE
:要用于每个虚拟机的机器类型。如果您指定 A3 机器类型,则必须添加--require-specific-reservation
标志。这表示只有明确指向预留的虚拟机才能使用它。如需了解详情,请参阅使用特定预留中的虚拟机。NUMBER_OF_VMS
:要预留的虚拟机数量。ZONE
:预留资源的可用区。如需将 GPU 附加到预留的 N1 虚拟机,请添加
--accelerator
标志。gcloud compute reservations create RESERVATION_NAME \ --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE --machine-type=MACHINE_TYPE \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
替换以下内容:
NUMBER_OF_ACCELERATORS
:要为每个已预留虚拟机添加的 GPU 的数量。ACCELERATOR_TYPE
:N1 虚拟机支持的 GPU 模型。确保您选择的 GPU 型号在您要预留资源的可用区中可用。否则,创建预留会失败。
如需向每个预留的虚拟机添加一个或多个本地 SSD 磁盘,请添加一个或多个
--local-ssd
标志。您最多可以指定 24 个本地 SSD 磁盘。每个本地 SSD 磁盘为 375 GB。例如,如需在创建预留时指定两个本地 SSD 磁盘,请添加两个
--local-ssd
标志,如下所示:gcloud compute reservations create RESERVATION_NAME \ --local-ssd=size=375,interface=INTERFACE_1 \ --local-ssd=size=375,interface=INTERFACE_2 \ --machine-type=MACHINE_TYPE \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
将
INTERFACE_1
和INTERFACE_2
替换为您希望每个本地 SSD 磁盘使用的接口类型。请指定以下某个值:NVME 磁盘接口:
nvme
SCSI 磁盘接口:
scsi
确保您为已预留虚拟机指定的机器类型支持所选的磁盘接口。否则,创建预留将失败。 如需了解详情,请参阅如何选择磁盘接口。
如需让预留的虚拟机使用特定的满足最低要求的 CPU 平台(而不是该可用区的默认 CPU 平台),请添加
--min-cpu-platform
标志。gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE \ --min-cpu-platform="MIN_CPU_PLATFORM" \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
将
MIN_CPU_PLATFORM
替换为满足最低要求的 CPU 平台。为确保 CPU 平台在要预留资源的可用区可用,请按可用区查看可用的 CPU 平台。如需指定只有明确指向此预留的虚拟机才能使用它,请添加
--require-specific-reservation
标志。gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE \ --require-specific-reservation \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
如需指定紧凑布置政策以降低虚拟机之间的网络延迟时间,请添加
--resource-policies=policy
标志。gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=policy=COMPACT_PLACEMENT_POLICY_NAME \ --require-specific-reservation \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
将 COMPACT_PLACEMENT_POLICY_NAME 替换为现有紧凑布置政策的名称。此外,为了避免在创建指定紧凑布置政策的单项目预留时发生错误,请务必指定以下内容:
紧凑布置政策支持的机器类型和虚拟机数上限。
紧凑布置政策所在区域内的可用区。
--require-specific-reservation
标志。 这表示只有明确指向预留的虚拟机才能使用它。
如需允许 GPU 虚拟机的预留供 Vertex AI 中的自定义训练作业或预测作业使用,请将
gcloud beta compute reservations create
命令与--reservation-sharing-policy=ALLOW_ALL
标志结合使用。gcloud beta compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE \ --reservation-sharing-policy=ALLOW_ALL \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
如需让 Compute Engine 自动删除预留,请选择以下方法之一:
如需在特定日期和时间删除预留,请使用带有
--delete-at-time
标志的gcloud beta compute reservations create
命令。gcloud beta compute reservations create RESERVATION_NAME \ --delete-at-time=DELETE_AT_TIME \ --machine-type=MACHINE_TYPE \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
将
DELETE_AT_TIME
替换为格式为 RFC 3339 时间戳(时间戳必须如下所示)的日期和时间:YYYY-MM-DDTHH:MM:SSOFFSET
替换以下内容:
YYYY-MM-DD
:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-
) 分隔的日期。HH:MM:SS
:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:
) 分隔的采用 24 小时制的时间。OFFSET
:采用世界协调时间 (UTC) 的偏移量格式的时区。例如,要使用太平洋标准时间 (PST),请指定-08:00
。或者,如果不使用偏移量,请指定Z
。
如需在特定时间段后删除预留,请使用带有
--delete-after-duration
标志的gcloud beta compute reservations create
命令。gcloud beta compute reservations create RESERVATION_NAME \ --delete-after-duration=DELETE_AFTER_DURATION \ --machine-type=MACHINE_TYPE \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
将
DELETE_AFTER_DURATION
替换为以天、小时、分钟或秒为单位的时长。例如,指定30m
表示 30 分钟,或指定1d2h3m4s
表示 1 天 2 小时 3 分钟 4 秒。
PROJECT_ID
:您要在其中预留资源的项目的 ID。ZONE
:预留资源的可用区。RESERVATION_NAME
:要创建的预留的名称。NUMBER_OF_VMS
:要预留的虚拟机数量。MACHINE_TYPE
:要用于每个虚拟机的机器类型。如果您指定 A3 机器类型,则必须在请求正文中添加specificReservationRequired
字段,并将该字段设置为true
。这表示只有明确指向预留的虚拟机才能使用它。 如需了解详情,请参阅使用特定预留中的虚拟机。如需将 GPU 附加到预留的 N1 虚拟机,请在请求正文中添加
guestAccelerators
字段。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "guestAccelerators": [ { "acceleratorCount": NUMBER_OF_ACCELERATORS, "acceleratorType": "ACCELERATOR_TYPE" } ], "machineType": "MACHINE_TYPE" } } }
替换以下内容:
NUMBER_OF_ACCELERATORS
:要为每个已预留虚拟机添加的 GPU 的数量。ACCELERATOR_TYPE
:N1 虚拟机支持的 GPU 模型。确保您选择的 GPU 型号在您要预留资源的可用区中可用。否则,创建预留会失败。
如需向每个预留的虚拟机添加一个或多个本地 SSD 磁盘,请在请求正文中添加
localSsds
字段。您最多可以指定 24 个本地 SSD 磁盘。每个本地 SSD 磁盘为 375 GB。例如,如需在创建预留时指定两个本地 SSD 磁盘,请发出如下请求:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "localSsds": [ { "diskSizeGb": "375", "interface": "INTERFACE_1" }, { "diskSizeGb": "375", "interface": "INTERFACE_2" } ], "machineType": "MACHINE_TYPE" } } }
将
INTERFACE_1
和INTERFACE_2
替换为您希望每个本地 SSD 磁盘使用的接口类型。请指定以下某个值:NVME 磁盘接口:
NVME
SCSI 磁盘接口:
SCSI
确保您为已预留虚拟机指定的机器类型支持所选的磁盘接口。否则,创建预留将失败。 如需了解详情,请参阅如何选择磁盘接口。
如需让预留的虚拟机使用特定的满足最低要求的 CPU 平台(而不是可用区的默认 CPU 平台),请在请求正文中添加
minCpuPlatform
字段。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE", "minCpuPlatform": "MIN_CPU_PLATFORM" } } }
将
MIN_CPU_PLATFORM
替换为满足最低要求的 CPU 平台。为确保 CPU 平台在要预留资源的可用区可用,请按可用区查看可用的 CPU 平台。如需指定紧凑布置政策以缩短预留虚拟机之间的网络延迟时间,请在请求正文中添加
resourcePolicies
字段。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "resourcePolicies": { "policy" : "projects/example-project/regions/REGION/resourcePolicies/COMPACT_PLACEMENT_POLICY_NAME" }, "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE" } }, "specificReservationRequired": true }
替换以下内容:
REGION
:紧凑布置政策所在的区域。您只能在布置政策所在的区域内创建预留。COMPACT_PLACEMENT_POLICY_NAME
:现有紧凑布置政策的名称。
此外,为了避免在创建指定紧凑布置政策的单项目预留时发生错误,请务必指定以下内容:
将
specificReservationRequired
字段设置为true
。这表示只有明确指向此预留的虚拟机才能使用它。
如需指定只有明确指向此预留的虚拟机才能使用它,请在请求正文中添加
specificReservationRequired
字段,并将该字段设置为true
。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE" } }, "specificReservationRequired": true }
如需允许 GPU 虚拟机的预留供 Vertex AI 中的自定义训练作业或预测作业使用,请向
beta.reservations.insert
方法发出POST
请求。在请求正文中,添加serviceShareType
字段并将其设置为ALLOW_ALL
。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "reservationSharingPolicy": { "serviceShareType": "ALLOW_ALL" }, "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE" } } }
如需让 Compute Engine 自动删除预留,请选择以下方法之一:
如需在特定日期和时间删除预留,请向
beta.reservations.insert
方法发出POST
请求。在请求正文中,包含deleteAtTime
字段。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations { "deleteAtTime": "DELETE_AT_TIME", "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE" } } }
将
DELETE_AT_TIME
替换为格式为 RFC 3339 时间戳(时间戳必须如下所示)的日期和时间:YYYY-MM-DDTHH:MM:SSOFFSET
替换以下内容:
YYYY-MM-DD
:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-
) 分隔的日期。HH:MM:SS
:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:
) 分隔的采用 24 小时制的时间。OFFSET
:采用世界协调时间 (UTC) 的偏移量格式的时区。例如,要使用太平洋标准时间 (PST),请指定-08:00
。或者,如果不使用偏移量,请指定Z
。
如需在特定时间段后删除预留,请向
beta.reservations.insert
方法发出POST
请求。在请求正文中,包含deleteAfterDuration
字段。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations { "deleteAfterDuration": { "seconds": "DELETE_AFTER_DURATION" }, "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE" } } }
将
DELETE_AFTER_DURATION
替换为持续时间,以秒为单位。例如,指定86400
标识 86400 秒(1 天)。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得创建单项目预留所需的权限,请让您的管理员向您授予项目的 Compute Admin (
roles/compute.admin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含创建单项目预留所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建单项目预留需要以下权限:
创建单项目预留
如需使用预留,虚拟机必须具有与该预留完全匹配的属性。如需指定要预留的虚拟机的属性,请选择本文档中的以下部分之一:
默认情况下,具有与预留相匹配的属性的虚拟机可以自动使用该预留。如果您想要控制预留的使用,请执行以下一项或多项操作:
此外,您可以在创建单项目预留时指定紧凑布置政策。紧凑布置政策指定虚拟机尽可能彼此靠近,以缩短网络延迟时间。
指定实例模板
为避免通过指定实例模板创建预留时出错,请确保以下各项:
如需通过指定实例模板创建单项目预留,请选择以下选项之一:
控制台
gcloud
如需创建单项目预留,请使用
gcloud compute reservations create
命令。如需通过指定实例模板而不添加任何可选标志来创建单项目预留,请运行以下命令:
gcloud compute reservations create RESERVATION_NAME \ --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
替换以下内容:
例如,如需通过指定全局实例模板为可用区
us-central1-a
中的 10 个虚拟机创建预留,请运行以下命令:gcloud compute reservations create my-reservation \ --source-instance-template=projects/example-project/global/example-instance-template \ --vm-count=10 \ --zone=us-central1-a
您可以选择执行以下一项或多项操作:
Go
Java
Node.js
Python
REST
如需创建单项目预留,请向
reservations.insert
方法发出POST
请求。如需通过指定实例模板而不添加任何可选标志来创建单项目预留,请发出以下
POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME" } }
替换以下内容:
例如,如需通过指定全局实例模板为可用区
us-central1-a
中的 10 个虚拟机创建预留,请发出以下POST
请求:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations { "name": "my-reservation", "specificReservation": { "count": "10", "sourceInstanceTemplate": "projects/example-project/global/instanceTemplates/example-instance-template" } }
您可以选择执行以下一项或多项操作:
指定现有虚拟机
您只能根据现有虚拟机在与该虚拟机相同的可用区中创建预留。
创建预留后,您可以通过创建其属性与参考虚拟机匹配的虚拟机来使用该预留。为此,您可以执行以下操作之一:
如需创建使用现有虚拟机的属性的单项目预留,请执行以下操作:
直接指定属性
如需通过直接指定属性来创建单项目预留,请选择以下选项之一:
控制台
gcloud
如需创建单项目预留,请使用
gcloud compute reservations create
命令。如需通过直接指定属性而不添加任何可选标志来创建单项目预留,请运行以下命令:
gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
替换以下内容:
例如,如需在
us-central1-a
可用区中为 10 个虚拟机创建预留,每个虚拟机使用具有 4 个 vCPU 的 N2 预定义机器类型,请运行以下命令:gcloud compute reservations create my-reservation \ --machine-type=n2-standard-4 \ --vm-count=10 \ --zone=us-central1-a
您可以选择执行以下一项或多项操作:
Go
Java
Node.js
Python
Terraform
如需创建单项目预留,请使用
google_compute_reservation
Terraform 资源。例如,如需为一个具有 2 个 vCPU 的 N2 预定义机器类型创建单项目预留,请使用以下资源:
如需详细了解如何使用 Terraform,请参阅将 Terraform 与 Google Cloud 搭配使用。
REST
如需创建单项目预留,请向
reservations.insert
方法发出POST
请求。如需通过直接指定属性且不添加任何可选字段来创建单项目预留,请发出以下
POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE" } } }
替换以下内容:
例如,如需在
us-central1-a
可用区中为 10 个虚拟机创建预留,每个虚拟机使用具有 4 个 vCPU 的 N2 预定义机器类型,请发出以下POST
请求:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations { "name": "my-reservation", "specificReservation": { "count": "10", "instanceProperties": { "machineType": "n2-standard-4", } } }
您可以选择执行以下一项或多项操作:
问题排查
了解如何排查预留创建问题。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-