本页面介绍如何解决使用 Compute Engine 可用区级资源的预留时遇到的问题。
跟踪预留使用时遇到问题
问题:虽然您可以查看预留的详细信息或监控预留的使用情况,以了解其使用中的预留虚拟机的数量并监控此数量随时间的变化,但您无法直接查看哪些虚拟机正在使用预留。
解决方法:如果您可以成功创建针对特定预留的虚拟机,则该虚拟机正在使用虚拟机亲和性属性 (reservationAffinity
) 中指定的预留。否则,创建虚拟机会失败,因为属性不匹配或没有可用的预留资源。
您还可以创建针对特定预留的虚拟机,以测试其是否已正确配置为自动使用匹配的预留,然后创建该虚拟机以使用任何匹配的预留。
虚拟机未使用预留的问题
如果虚拟机无法使用预留,则可能是由以下一个或多个问题导致:
- 虚拟机的属性与预留的属性不匹配。
- 虚拟机的预留亲和性不正确。
- 预留已被其他匹配的虚拟机完全使用。
- 超出资源的配额
本部分介绍如何识别上述各个问题、如何解决每个问题以及如何验证预留使用情况。
虚拟机属性不匹配
问题:虚拟机不能使用具有不同虚拟机属性的预留。
要确定此问题,请选择以下方法之一:
查看预留和虚拟机的详细信息,并手动验证其虚拟机属性是否匹配:
使用
gcloud compute reservations describe
命令查看您希望虚拟机使用的预留的详细信息:gcloud compute reservations describe RESERVATION_NAME --zone=ZONE
替换以下内容:
- RESERVATION_NAME 是预留的名称。
- ZONE 是预留所在的区域。
保持此输出可用。
使用
gcloud compute instances describe
命令查看您希望使用预留的虚拟机的详细信息。gcloud compute instances describe VM_NAME
其中,VM_NAME 是虚拟机的名称。
保持此输出可用。
使用虚拟机说明和预留说明输出验证以下属性是否匹配:
project
- 如果预留与多个项目共享(如果预留将
shareType
属性设置为SPECIFIC_PROJECTS
),则虚拟机的项目可以匹配预留所在的项目,或者匹配shareSettings
下列出的任何项目。
- 如果预留与多个项目共享(如果预留将
zone
machineType
guestAccelerators.acceleratorType
guestAccelerators.acceleratorCount
minCpuPlatform
- 您的虚拟机和预留必须具有完全相同的
minCpuPlatform
配置。如果您为其中一项指定了minCpuPlatform
值,则这两项对于该属性必须具有相同的值。否则,预留和虚拟机都应省略该属性。例如,在创建虚拟机时将minCpuPlatform
设置为"Intel Broadwell"
将与预留中"Automatic"
的minCpuPlatform
值不匹配。
- 您的虚拟机和预留必须具有完全相同的
localSsds.interface
- 预留和虚拟机必须具有相同数量的本地 SSD,并且每个本地 SSD 都具有匹配的
localSsds.interface
属性。
- 预留和虚拟机必须具有相同数量的本地 SSD,并且每个本地 SSD 都具有匹配的
resourcePolicies
*
*仅当预留指定了紧凑布置政策时。
创建一个针对特定预留的虚拟机,如果属性不匹配,则返回一个错误。如需查看相关说明,请参阅验证预留使用情况。
解决方法:通过执行以下任一操作来更新任何不匹配的虚拟机属性:
如需检查虚拟机目前是否正在使用预留,请参阅验证预留使用情况。
如果虚拟机的属性和预留属性匹配,但虚拟机未使用预留,请继续执行下一部分。
虚拟机缺少布置政策
问题:虚拟机正在尝试使用预留,但未指定预留的紧凑布置政策。
解决方法:如果单项目预留指定了紧凑布置政策,则虚拟机必须指定完全相同的紧凑布置政策才能使用此预留。否则,虚拟机无法使用此预留。
如需确保虚拟机使用指定紧凑布置政策的预留,请尝试以下方法之一:
如果您是通过指定实例模板创建单项目预留,请选择以下方法之一:
推荐:使用预留的实例模板来创建虚拟机。此操作会自动将预留中指定的同一紧凑布置政策应用于您创建的每个新虚拟机。
在创建虚拟机时应用紧凑布置政策。此方法要求您手动确保虚拟机和预留的紧凑布置政策以及任何其他虚拟机属性完全匹配,任何不匹配的属性都会阻止使用。
虚拟机指定了不同的紧凑布置政策
问题:虚拟机正在尝试使用预留,但虚拟机和预留中指定的紧凑布置政策不匹配。
解决方法:如果单项目预留指定了紧凑布置政策,则虚拟机必须指定完全相同的紧凑布置政策才能使用此预留。否则,虚拟机无法使用此预留。
如需解决此问题,请尝试以下方法之一:
如果您是通过指定实例模板创建单项目预留,请使用同一模板创建虚拟机。此操作会自动将预留中指定的同一紧凑布置政策应用于您创建的每个新虚拟机。
虚拟机的预留亲和性不正确
问题:虚拟机的预留亲和性配置错误。虚拟机的预留亲和性控制虚拟机可以使用的预留。如需检查虚拟机的预留亲和性,请执行以下操作:
-
使用
gcloud compute reservations describe
命令查看您希望虚拟机使用的预留的详细信息。gcloud compute reservations describe RESERVATION_NAME --zone=ZONE
替换以下内容:
- RESERVATION_NAME 是预留的名称。
- ZONE 是预留所在的区域。
在输出中,找到
specificReservationRequired
字段的值(true
或false
)。 -
使用
gcloud compute instances describe
命令查看虚拟机的详细信息。gcloud compute instances describe VM_NAME
其中,VM_NAME 替换为虚拟机的名称。
在输出中找到
reservationAffinity
字段,如下所示:... reservationAffinity: consumeReservationType: RESERVATION_AFFINITY key: compute.googleapis.com/reservation-name values: - RESERVATION_NAME ...
解决方法:使用以下接受的配置之一更新虚拟机的 reservationAffinity
属性,以便与预留的 specificReservationRequired
字段兼容:
-
如果预留的
specificReservationRequired
字段为true
,则虚拟机的reservationAffinity
属性必须与以下内容相匹配:... reservationAffinity: consumeReservationType: SPECIFIC_RESERVATION key: compute.googleapis.com/reservation-name values: - RESERVATION_NAME ...
其中,RESERVATION_NAME 是预留的名称。
-
如果预留的
specificReservationRequired
字段为false
,则虚拟机的reservationAffinity
属性必须与以下内容相匹配:... reservationAffinity: consumeReservationType: ANY_RESERVATION ...
您需要重启虚拟机才能进行更新。更新完成后,如需检查虚拟机是否正在使用预留,请参阅验证预留使用情况。
如果虚拟机的预留亲和性配置正确,但虚拟机未使用任何预留,请继续下一部分。
预留已用尽
问题:当前用于此预留的虚拟机数量与该预留的预留虚拟机总数一致。
如需确定此问题,请查看预留的详细信息,并验证用于此预留的虚拟机的数量是否小于此预留的预留虚拟机总数。
解决方法:您可以通过执行以下任一操作来增加可用于预留的虚拟机数量:
如需检查虚拟机目前是否正在使用预留,请参阅验证预留使用情况。
如果预留尚未用完,但虚拟机未使用预留,则您可以通过创建针对特定预留的虚拟机来进一步排查问题,如果使用失败,则返回错误。有关详情,请继续阅读下一部分。
停止或删除虚拟机后虚拟机数量不会恢复
问题:如果您停止、暂停或删除正在使用预留的虚拟机,则操作必须在该虚拟机不再计入预留并且之前使用的资源再次可供使用之前完成。
解决方法:等待几分钟,让虚拟机的停止、暂停或删除操作完成。然后,如需验证已停止、已暂停或已删除的虚拟机是否不再计入预留,请使用以下方法之一检查预留中已使用的虚拟机总数:
虚拟机意外使用预留
问题:您创建自动使用的预留(默认设置)时,虚拟机可能会无意中使用这些预留。
解决方法:您可以通过执行以下操作来控制哪些虚拟机使用预留:
- 根据选择使用无法使用任何预留的虚拟机。
- 使用仅在明确针对时才使用的预留,而不是自动使用的预留。
超出资源配额
问题:共享预留未使用,因为已超出特定资源的配额。
共享预留在配额方面有其他要求。所有者项目必须具有足够的配额,才能为使用方项目预留两倍的资源,从而使用预留的资源。
解决方法:为要使用的资源申请更多配额。