本文档介绍如何使用 Compute Engine 执行以下操作:
使用预留的虚拟机 (VM) 实例。
验证预留使用情况。
查看预留使用情况报告。
如需详细了解如何在使用虚拟机的其他 Google Cloud 产品中使用预留,请参阅以下产品的预留文档:
准备工作
- 查看预留的要求和限制。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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.
-
创建预留:项目的
compute.reservations.create
权限 -
创建虚拟机:
- 针对项目的
compute.instances.create
权限 - 使用自定义映像创建虚拟机:针对映像的
compute.images.useReadOnly
权限 - 使用快照创建虚拟机:针对快照的
compute.snapshots.useReadOnly
权限 - 使用实例模板创建虚拟机:针对实例模板的
compute.instanceTemplates.useReadOnly
权限 - 为虚拟机分配旧版网络:针对项目的
compute.networks.use
权限 - 为虚拟机指定静态 IP 地址:针对项目的
compute.addresses.use
权限 - 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的
compute.networks.useExternalIp
权限 - 为虚拟机指定子网:针对项目或所选子网的
compute.subnetworks.use
权限 - 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的
compute.subnetworks.useExternalIp
权限 - 为虚拟机设置虚拟机实例元数据:针对项目的
compute.instances.setMetadata
权限 - 为虚拟机设置标记:针对虚拟机的
compute.instances.setTags
权限 - 为虚拟机设置标签:针对虚拟机的
compute.instances.setLabels
权限 - 为虚拟机设置要使用的服务账号:针对虚拟机的
compute.instances.setServiceAccount
权限 - 为虚拟机创建新磁盘:针对项目的
compute.disks.create
权限 - 以只读或读写模式挂接现有磁盘:针对磁盘的
compute.disks.use
权限 - 以只读模式挂接现有磁盘:针对磁盘的
compute.disks.useReadOnly
权限
- 针对项目的
-
创建实例模板:针对项目的
compute.instanceTemplates.create
权限 使用任何匹配的预留 - 虚拟机可以自动使用具有匹配属性(默认)的任何预留。
如果您创建和删除大量虚拟机且希望尽可能地使用预留,此选项非常有用。在此场景中,可以创建虚拟机,而无论其属性是否与预留匹配。如果它们匹配,则虚拟机将根据预留的使用顺序开始使用预留。
使用特定预留 - 虚拟机只能使用特定预留。系统不会自动使用预留。
例如,如果您希望保留一定容量作为备份供特殊事件使用,则此选项非常有用。在此场景中,仅当虚拟机的属性与特定预留的属性匹配时,才能创建虚拟机。
无法使用任何预留 - 虚拟机无法使用任何预留。
此选项在某些情况下非常有用,例如,您创建不想使用预留资源的临时虚拟机。
如需创建一个预留,使其资源可供预留亲和性属性配置为使用任何预留(默认)的虚拟机使用,请按照以下步骤操作:
选择要创建的预留类型:
如需创建独立的预留,请执行以下操作:
在 Google Cloud 控制台中,转到预留页面。
在按需预留标签页(默认)上,点击
创建预留。此时会打开创建预留页面。
如需创建附加到承诺的预留,请执行以下操作:
在 Google Cloud 控制台中,转到承诺使用折扣页面。
系统会打开承诺列表页面。
点击
购买承诺。系统会打开购买承诺使用折扣页面。
指定承诺属性。然后,在预留部分中,点击添加一项。
此时会显示添加新预留部分。
如需详细了解如何购买包含关联预留的承诺,请参阅购买附加预留的承诺。
在名称字段中,为预留输入名称。在此示例中,请输入
reservation-01
。选择您要预留资源的区域和可用区。在此示例中,选择
us-central1
作为区域,选择us-central1-a
作为可用区。选择您偏好的共享类型:
- 如需为单个项目创建预留,请选择本地。
- 如需在多个项目之间创建共享预留,请选择共享。如需与其他项目共享此预留,请点击 添加项目,然后从当前项目的组织中选择所需的项目。
在搭配虚拟机实例使用部分中,选择自动使用预留,使得任何匹配的虚拟机自动使用此预留。
在虚拟机实例数量字段中,输入要预留的虚拟机数量。在此示例中,请输入
2
。指定您要为每个虚拟机预留的资源:
- 如果您要预留与现有实例模板匹配的虚拟机,请选择使用实例模板,然后从列表中选择一个实例模板。
- 否则,请选择指定机器类型并指定以下内容:
- 在机器系列、系列和机器类型字段中,选择机器系列、系列和机器类型。
- 可选:指定满足最低要求的 CPU 平台和/或 GPU:
- 要展开 CPU 平台和 GPU 部分,请点击 展开箭头。
- 可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台列表中选择一个选项。
- 可选:如需添加 GPU,请点击 添加 GPU。然后,在 GPU 类型和 GPU 数量字段中,选择每个虚拟机的 GPU 类型和数量。
- 可选:添加本地 SSD:
- 在磁盘数量字段中,选择每个虚拟机的本地 SSD 数量。
- 在接口类型字段中,选择本地 SSD 的接口。
在此示例中,选择指定机器类型。然后,为
General-purpose
机器系列和N2
系列选择n2-standard-32
机器类型,并选择满足最低要求的 CPU 平台Intel Cascade Lake
。完成创建预留操作:
如果要创建独立的预留,请点击创建。
如果要创建附加到承诺的预留,请执行以下操作:
- 如需完成为此预留指定属性,请点击完成。
- 如需完成创建承诺以及关联的预留,请点击购买。
在预留所在的同一个项目或与预留共享的项目中,创建一个针对任何开放式预留的虚拟机。
确保虚拟机的属性与
reservation-01
中的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 接口和大小。如需详细了解如何创建虚拟机,请参阅创建并启动虚拟机。
在 Google Cloud 控制台中,转到创建实例页面。
系统会打开“创建实例”页面。
为您的虚拟机指定名称。
在以下部分中,请选择与预留的所有属性(包括任何可选属性)完全匹配的配置。在此示例中,您必须使以下虚拟机属性与
reservation-01
匹配:- 区域:
us-central1
- 可用区:
us-central1-a
- 机器类型:
n2-standard-32
- 满足最低 CPU 要求的平台:
Intel Cascade Lake
- GPU:无
- 本地 SSD:无
- 区域:
展开高级选项部分,然后展开管理部分。在预留列表中,选择自动使用已创建的预留。
如需创建虚拟机,请点击创建。
创建一个名为
reservation-01
的开放式预留。gcloud compute reservations create reservation-01 \ --vm-count=2 \ --machine-type=n2-standard-32 \ --min-cpu-platform="Intel Cascade Lake" \ --zone=us-central1-a
创建一个虚拟机,该虚拟机指向任何开放式预留并与
reservation-01
中的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 数量和接口。gcloud compute instances create instance-1 \ --machine-type=n2-standard-32 \ --min-cpu-platform="Intel Cascade Lake" \ --zone=us-central1-a \ --reservation-affinity=any
创建一个名为
reservation-01
的开放式预留。POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations { "name": "reservation-01", "specificReservation": { "count": "2", "instanceProperties": { "machineType": "n2-standard-32", "minCpuPlatform": "Intel Cascade Lake", } } }
创建一个虚拟机,该虚拟机指向任何开放式预留并与
reservation-01
中的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 数量和接口。POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances { "name": "instance-1", "machineType": "zones/us-central1-a/machineTypes/n2-standard-32", "minCpuPlatform": "Intel Cascade Lake", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/family/debian-12" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "ANY_RESERVATION" } }
- 在 Google Cloud 控制台中,选中选择特定预留复选框。
- 在 gcloud CLI 中,添加
--require-specific-reservation
标志。 - 在 Compute Engine API 中,将
specificReservationRequired
字段设置为true
。 - 在 Terraform 中,将
specific_reservation_required
字段设置为true
。 如需创建一个预留,使预留资源仅供通过名称明确指向此预留的虚拟机使用,请按照以下步骤操作:
从下列选项中选择一项:
如需创建独立的预留,请执行以下操作:
在 Google Cloud 控制台中,转到预留页面。
在按需预留标签页(默认)上,点击
创建预留。此时会打开创建预留页面。
如需创建附加到承诺的预留,请执行以下操作:
在 Google Cloud 控制台中,转到承诺使用折扣页面。
点击
购买承诺。系统会打开购买承诺使用折扣页面。
指定承诺属性。然后,在预留部分中,点击添加一项。
此时会显示添加新预留部分。
如需详细了解如何购买包含关联预留的承诺,请参阅购买附加预留的承诺。
在名称字段中,为预留输入名称。在此示例中,请输入
reservation-02
。选择您要预留资源的区域和可用区。在此示例中,选择
us-central1
作为区域,选择us-central1-a
作为可用区。如需指定预留是单项目预留,请选择本地作为共享类型。
在搭配虚拟机实例使用部分中,选择选择特定预留,使得只有通过名称明确指向此预留的匹配虚拟机才能使用此预留。
在虚拟机实例数量字段中,输入要预留的虚拟机数量。在此示例中,请输入
10
。指定您要为每个虚拟机预留的资源:
- 如果您要预留与现有实例模板匹配的虚拟机,请选择使用实例模板,然后从列表中选择一个实例模板。
- 否则,请选择指定机器类型并指定以下内容:
- 在机器系列、系列和机器类型字段中,选择机器系列、系列和机器类型。
- 可选:指定满足最低要求的 CPU 平台和/或 GPU:
- 要展开 CPU 平台和 GPU 部分,请点击 展开箭头。
- 可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台列表中选择一个选项。
- 可选:如需添加 GPU,请点击 添加 GPU。然后,在 GPU 类型和 GPU 数量字段中,选择每个虚拟机的 GPU 类型和数量。
- 可选:添加本地 SSD:
- 在磁盘数量字段中,选择每个虚拟机的本地 SSD 数量。
- 在接口类型字段中,选择本地 SSD 的接口。
在此示例中,选择指定机器类型。然后,为
General-purpose
机器系列和N2
系列选择n2-standard-32
机器类型,并选择满足最低要求的 CPU 平台Intel Cascade Lake
。完成创建预留操作:
如果要创建独立的预留,请点击创建。
如果要创建附加到承诺的预留,请执行以下操作:
- 如需完成为此预留指定属性,请点击完成。
- 如需完成创建承诺以及关联的预留,请点击购买。
在同一项目中,创建一个通过名称指向该特定预留的虚拟机。
确保虚拟机的属性与该特定预留的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 接口和大小。
如需详细了解如何创建虚拟机,请参阅创建并启动虚拟机。
在 Google Cloud 控制台中,转到创建实例页面。
在名称字段中,输入虚拟机的名称。
在以下部分中,请选择与预留的所有属性(包括任何可选属性)完全匹配的配置。在此示例中,您必须使以下虚拟机属性与
reservation-02
匹配:- 区域:
us-central1
- 可用区:
us-central1-a
- 机器类型:
n2-standard-32
- 满足最低 CPU 要求的平台:
Intel Cascade Lake
- GPU:无
- 本地 SSD:无
- 区域:
展开高级选项部分,然后执行以下操作:
展开管理部分。
在预留部分的应用政策列表中,选择选择特定预留。
选择具有您希望虚拟机使用的匹配虚拟机属性的预留。在此示例中,选择
reservation-02
。
如需创建虚拟机,请点击创建。
使用
--require-specific-reservation
标志创建一个名为reservation-02
的预留。只有通过名称明确指向此预留的虚拟机可使用这些预留资源。gcloud compute reservations create reservation-02 \ --machine-type=n2-standard-32 \ --min-cpu-platform="Intel Cascade Lake" \ --vm-count=10 \ --zone=us-central1-a \ --require-specific-reservation
使用
--reservation-affinity
和--reservation
标志创建一个通过名称指向reservation-02
的虚拟机实例。确保虚拟机的属性与该预留的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 接口和大小。
gcloud compute instances create instance-2 \ --machine-type=n2-standard-32 \ --min-cpu-platform="Intel Cascade Lake" \ --zone=us-central1-a \ --reservation-affinity=specific \ --reservation=reservation-02
创建一个名为
reservation-02
的预留,并将specificReservationRequired
字段设置为true
。POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations { "name":"reservation-02", "specificReservation":{ "count":"10", "instanceProperties":{ "machineType":"n2-standard-32", "minCpuPlatform": "Intel Cascade Lake", } }, "specificReservationRequired": true }
使用
reservationAffinity
字段创建一个通过名称指向reservation-02
的虚拟机。确保虚拟机的属性与该预留的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 接口和大小。
POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances { "name": "instance-2", "machineType": "zones/us-central1-a/machineTypes/n2-standard-32", "minCpuPlatform": "Intel Cascade Lake", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/debian-clouid/global/images/family/debian-12" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "SPECIFIC_RESERVATION", "key": "compute.googleapis.com/reservation-name", "values": [ "reservation-02" ] } }
如需创建一个共享的预留,使资源仅供通过名称明确指向此预留的虚拟机使用,请按照以下步骤操作:
从下列选项中选择一项:
如需创建独立的预留,请执行以下操作:
在 Google Cloud 控制台中,转到预留页面。
在按需预留标签页(默认)上,点击
创建预留。此时会打开创建预留页面。
如需创建附加到承诺的预留,请执行以下操作:
在 Google Cloud 控制台中,转到承诺使用折扣页面。
点击
购买承诺。系统会打开购买承诺使用折扣页面。
指定承诺属性。然后,在预留部分中,点击添加一项。
此时会显示添加新预留部分。
如需详细了解如何购买包含关联预留的承诺,请参阅购买附加预留的承诺。
在名称字段中,为预留输入名称。在此示例中,请输入
reservation-02
。选择您要预留资源的区域和可用区。在此示例中,选择
us-central1
作为区域,选择us-central1-a
作为可用区。如需指定您的预留是共享预留,请选择共享作为共享类型。
点击
添加项目,然后从当前项目的组织中选择要共享预留的项目。在搭配虚拟机实例使用部分中,选择选择特定预留,使得只有通过名称明确指向此预留的匹配虚拟机才能使用此预留。
在虚拟机实例数量字段中,输入要预留的虚拟机数量。在此示例中,请输入
10
。指定您要为每个虚拟机预留的资源:
- 如果您要预留与现有实例模板匹配的虚拟机,请选择使用实例模板,然后从列表中选择一个实例模板。
- 否则,请选择指定机器类型并指定以下内容:
- 在机器系列、系列和机器类型字段中,选择机器系列、系列和机器类型。
- 可选:指定满足最低要求的 CPU 平台和/或 GPU:
- 要展开 CPU 平台和 GPU 部分,请点击 展开箭头。
- 可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台列表中选择一个选项。
- 可选:如需添加 GPU,请点击 添加 GPU。然后,在 GPU 类型和 GPU 数量字段中,选择每个虚拟机的 GPU 类型和数量。
- 可选:添加本地 SSD:
- 在磁盘数量字段中,选择每个虚拟机的本地 SSD 数量。
- 在接口类型字段中,选择本地 SSD 的接口。
在此示例中,选择指定机器类型。然后,为
General-purpose
机器系列和N2
系列选择n2-standard-32
机器类型,并选择满足最低要求的 CPU 平台Intel Cascade Lake
。1. 完成创建预留操作:如果要创建独立的预留,请点击创建。
如果要创建附加到承诺的预留,请执行以下操作:
- 如需完成为此预留指定属性,请点击完成。
- 如需完成创建承诺以及关联的预留,请点击购买。
在预留所在的同一个项目或与预留共享的项目中,创建一个按名称指向该特定预留的虚拟机。
确保虚拟机的属性与该特定预留的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 接口和大小。
在 Google Cloud 控制台中,转到创建实例页面。
系统会打开“创建实例”页面。
为您的虚拟机指定名称。
在以下部分中,请选择与预留的所有属性(包括任何可选属性)完全匹配的配置。在此示例中,您必须使以下虚拟机属性与
reservation-02
匹配:- 区域:
us-central1
- 可用区:
us-central1-a
- 机器类型:
n2-standard-32
- 满足最低 CPU 要求的平台:
Intel Cascade Lake
- GPU:无
- 本地 SSD:无
- 区域:
展开高级选项部分,然后展开管理部分。在预留列表中,选择选择特定预留,然后执行以下操作:
- 选择具有与当前项目共享的预留的预留项目。在此示例中,请选择您用于创建
reservation-02
的项目。 - 选择您希望此虚拟机使用的共享预留的预留名称。在此示例中,选择
reservation-02
。
- 选择具有与当前项目共享的预留的预留项目。在此示例中,请选择您用于创建
如需创建虚拟机,请点击创建。
使用
--require-specific-reservation
标志创建一个名为reservation-02
的预留。只有通过名称明确指向此预留的虚拟机可使用这些预留资源。gcloud compute reservations create reservation-02 \ --machine-type=n2-standard-32 \ --min-cpu-platform="Intel Cascade Lake" \ --vm-count=10 \ --zone=us-central1-a \ --project=my-owner-project \ --share-setting=projects \ --share-with=project-1,project-2 \ --require-specific-reservation
使用
--reservation-affinity
和--reservation
标志创建一个通过名称指向reservation-02
的虚拟机实例。如需使用此预留与之共享的任何使用方项目中的预留,您还必须指定创建预留的项目my-owner-project
。确保虚拟机的属性与该预留的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 接口和大小。
gcloud compute instances create instance-2 \ --machine-type=n2-standard-32 \ --min-cpu-platform="Intel Cascade Lake" \ --zone=us-central1-a \ --reservation-affinity=specific \ --reservation=projects/my-owner-project/reservations/reservation-02
创建一个名为
reservation-02
的预留,并将specificReservationRequired
字段设置为true
。POST https://compute.googleapis.com/compute/v1/projects/my-owner-project/zones/us-central1-a/reservations { "name":"reservation-02", "specificReservation":{ "count":"10", "instanceProperties":{ "machineType":"n2-standard-32", "minCpuPlatform": "Intel Cascade Lake" } }, "shareSettings": { "shareType": "SPECIFIC_PROJECTS", "projectMap": { "project-1": { "projectId": "project-1" }, "project-2": { "projectId": "project-2" } } }, "specificReservationRequired": true }
使用
reservationAffinity
字段创建一个通过名称指向reservation-02
的虚拟机。如需从使用共享此预留的任何使用方项目使用此预留,您还必须指定预留的所有者项目my-owner-project
。确保虚拟机的属性与该预留的虚拟机属性相匹配,包括可用区、机器类型(机器系列、vCPU 和内存)、满足最低要求的 CPU 平台、GPU 数量和类型,以及本地 SSD 接口和大小。
POST https://compute.googleapis.com/compute/v1/projects/project-2/zones/us-central1-a/instances { "name": "instance-2", "machineType": "zones/us-central1-a/machineTypes/n2-standard-32", "minCpuPlatform": "Intel Cascade Lake", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/debian-clouid/global/images/family/debian-12" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "SPECIFIC_RESERVATION", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/my-owner-project/reservations/reservation-02" ] } }
按照本部分中所述将虚拟机的预留亲和性属性设置为明确不使用任何预留。
确保您的虚拟机与预留的虚拟机属性不匹配。
在 Google Cloud 控制台中,转到创建实例页面。
在名称字段中,输入虚拟机的名称。
在区域和可用区列表中,选择要在其中创建虚拟机的区域和可用区。
在机器配置部分中,指定要用于虚拟机的机器类型。
展开高级选项部分,然后执行以下操作:
展开管理部分。
在预留部分的应用政策列表中,选择不使用。
点击创建。
VM_NAME
:虚拟机的名称。MACHINE_TYPE
:要用于虚拟机的机器类型。ZONE
:要在其中创建虚拟机的可用区。PROJECT_ID
:要在其中创建虚拟机的项目的 ID。ZONE
:要在其中创建虚拟机的可用区。VM_NAME
:虚拟机的名称。MACHINE_TYPE
:要用于虚拟机的机器类型。IMAGE_PROJECT
:操作系统映像所属的映像项目;例如debian-cloud
。如需详细了解支持的映像项目,请参阅公共映像。IMAGE
:指定以下其中一项:在 Google Cloud 控制台中,前往创建实例模板页面。
在名称字段中,输入实例模板的名称。
在位置部分中,指定您要创建区域级(默认)实例模板还是全球实例模板。
在机器配置部分中,指定要用于使用模板创建的虚拟机的机器类型。
展开高级选项部分,然后执行以下操作:
展开管理部分。
在预留部分的应用政策列表中,选择不使用。
点击创建。
INSTANCE_TEMPLATE_NAME
:实例模板的名称。MACHINE_TYPE
:要用于使用实例模板创建的虚拟机的机器类型。如需创建全球实例模板:
instanceTemplates.insert
方法。如需创建区域级实例模板:
regionInstanceTemplates.insert
方法。PROJECT_ID
:要在其中创建实例模板的项目的 ID。INSTANCE_TEMPLATE_NAME
:实例模板的名称。MACHINE_TYPE
:要用于使用实例模板创建的虚拟机的机器类型。IMAGE_PROJECT
:操作系统映像所属的映像项目;例如debian-cloud
。如需详细了解支持的映像项目,请参阅公共映像。IMAGE
:指定以下其中一项:在创建或更新虚拟机之前和之后查看预留的详细信息。
如果预留使用的虚拟机数量在更改后增加 1,则您的更改可能会导致该虚拟机开始使用预留。这是验证预留使用情况的最简单方法,但验证哪个虚拟机正在使用预留可能不太有效。
-
如果您可以成功创建针对特定预留的虚拟机,则该虚拟机正在使用该预留。这是验证特定虚拟机是否正在使用预留以及虚拟机属性是否与预留匹配的最可靠方法。
-
通过使用 Cloud Monitoring,您可以访问和查看与使用当前项目中创建的预留关联的信息。如果您看到预留的测量结果发生变化,则表示虚拟机已使用该预留。此方法可用于验证一个或多个预留的使用趋势,以及接收未充分利用或未使用的预留的通知。
- 正在使用的预留资源。相应的条目显示为普通的 vCPU、内存、GPU 和本地 SSD 资源。
- 未使用的预留资源。相应条目具有普通的 SKU 名称和预留资源 URI。
- 总体预留资源。相应条目具有预留 SKU 名称和预留资源 URI。这些条目不会产生任何相关费用。 您可以使用这些条目计算您正在使用的预留数量。
- 第 1 行显示当前正在使用的预留 RAM。该行的
ResourceId
显示此 RAM 由名为my-instance
的虚拟机使用。 - 第 2 行显示未使用的预留 RAM。该行的
ResourceId
显示此预留 RAM 由my-reservation
保留;还没有任何虚拟机使用它。 - 第 3 行显示预留中的总体预留 RAM。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得使用预留所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。此预定义角色可提供使用预留所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
使用预留需要以下权限:
使用预留虚拟机
创建虚拟机 (VM) 实例后,仅当虚拟机和预留的属性匹配时,虚拟机才会开始使用预留。此外,您必须将虚拟机的预留亲和性属性设置为以下选项之一:
使用任何匹配预留中的虚拟机
在此使用模式中,如果现有虚拟机和新虚拟机的属性与预留中指定的虚拟机属性匹配,则这些虚拟机会自动使用预留。
使用此使用模式时,当前项目中的虚拟机会先使用所有单项目预留,然后再使用任何共享预留。如需详细了解预留自动使用方式,请参阅使用顺序。
创建预留时,只要您不使用表示需要特定预留的标志或选项,系统就会使用此默认使用模式。
控制台
gcloud
REST
使用特定预留中的虚拟机
在此使用模式中,只有按名称指向特定预留的新虚拟机才能使用该预留,并且不会自动使用该预留。
创建预留时,请使用以下方法之一指定需要定位到特定预留的虚拟机:
然后,创建明确针对该预留的虚拟机。仅当虚拟机属性和预留的属性匹配时,才能创建针对特定预留的虚拟机。否则,创建虚拟机 会失败。
如果您使用实例模板在区域托管实例组中创建虚拟机,请在每个适用可用区创建同名的相同预留。然后,在组的实例模板中按名称定位预留。
例如,创建一个名为
reservation-02
的特定预留,然后创建一个匹配虚拟机,该虚拟机针对该预留并与该预留的虚拟机属性相匹配。根据您要使用的虚拟机类型,请按照使用特定的单项目预留或使用特定的共享预留的步骤操作。
使用特定的单项目预留
如需使用特定的单项目预留,请选择以下选项之一:
控制台
gcloud
REST
使用特定的共享预留
如需使用特定的共享预留,请选择以下选项之一:
控制台
gcloud
REST
创建虚拟机而不使用预留
如果您创建自动使用的预留,则项目中任何具有匹配属性的正在运行的虚拟机都可以使用该预留。如需阻止一个或多个虚拟机使用该预留,请执行以下操作:
如需创建明确不使用预留的虚拟机,请选择以下方法之一:
创建虚拟机以不使用预留
如需创建明确不使用预留的虚拟机,请选择以下选项之一:
控制台
gcloud
如需创建明确不使用预留的虚拟机,请将
gcloud compute instances create
命令与--reservation-affinity=none
标志结合使用。gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --reservation-affinity=none \ --zone=ZONE
替换以下内容:
REST
如需创建明确不使用预留的虚拟机,请向
instances.insert
方法发出POST
请求。在请求正文中,添加设置为NO_RESERVATION
的consumeReservationType
字段。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } }
替换以下内容:
如需详细了解如何创建虚拟机,请参阅创建并启动 Compute Engine 实例。
创建实例模板以不使用预留
如需创建实例模板,以创建不明确使用预留的虚拟机,请选择以下选项之一:
控制台
gcloud
如需创建实例模板,以创建不明确使用预留的虚拟机,请将
gcloud compute instances-templates create
命令与--reservation-affinity=none
标志结合使用。例如,如需创建一个全球实例模板,以创建不明确使用预留的虚拟机,请运行以下命令:
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --reservation-affinity=none
替换以下内容:
REST
如需创建实例模板,以创建不明确使用预留的虚拟机,请向以下方法之一发出
POST
请求:在请求正文中,添加
consumeReservationType
字段并将其设置为NO_RESERVATION
。例如,如需创建一个全球实例模板,以创建不明确使用预留的虚拟机,请发出以下请求:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/InstanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } } }
替换以下内容:
如需详细了解如何创建实例模板,请参阅创建实例模板。
测试虚拟机属性是否与预留匹配
如需测试虚拟机是否可以自动使用预留,您可以创建预留的副本作为特定预留,然后查看您计划创建的虚拟机是否可以使用该预留。如果您能够成功创建虚拟机,则您已验证确认虚拟机可以正确使用匹配的预留。否则,创建虚拟机会失败,因为属性不匹配或者没有可用的预留资源。 测试后,您可以执行以下一项或多项操作:
验证预留使用情况
要验证虚拟机是否正确使用预留,请使用以下方法之一:
在验证确认虚拟机的预留亲和性可以使用预留,预留未得到完全使用,并且该虚拟机和预留的属性匹配后,如果您发现虚拟机未在使用预留,请参阅资源可用性的问题排查文档。
查看预留使用情况报告
您可以通过使用情况导出功能将 Compute Engine 使用情况的详细报告导出到 Cloud Storage 存储桶。如需了解相关说明,请参阅查看使用情况报告。
使用情况报告会显示以下内容:
计量项 MeasurementId
格式Resource URI
格式正在使用的预留资源 com.google.cloud/services/compute-engine/SKU_NAME
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/RESOURCE_TYPE/RESOURCE_NAME
。
例如https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance
未使用的预留资源 com.google.cloud/services/compute-engine/SKU_NAME
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME
。
例如https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-b/reservations/my-reservation
总体预留资源 com.google.cloud/services/compute-engine/ReservationSKU_NAME
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME
。
例如https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-b/reservations/my-reservation
例如,在名为
my-reservation
的预留使用情况报告的以下代码段中:Report Date,MeasurementId,Quantity,Unit,Resource URI,ResourceId,Location 2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/instances/my-instance,1775485842510981624,us-central2-a 2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a 2019-06-06,com.google.cloud/services/compute-engine/ReservationN2StandardRam,333940149714944,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a ...
问题排查
了解如何排查与预留的使用相关的问题。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-