适用于: ✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 统一规模集 ✔️ 灵活规模集
创建容量预留组和容量预留后,你可能需要修改这些预留。 本文介绍如何使用 API、Azure 门户和 PowerShell 执行以下操作。
- 更新容量预留中预留的实例数量。
- 调整与容量预留组关联的虚拟机大小。
- 删除产能预留组和产能预留。
更新预留实例数量
更新产能预留中预留的虚拟机 (VM) 实例数。
Important
在极少数情况下,如果 Azure 无法满足增加现有容量预留的预留数量的请求,预留可能会进入 Failed 状态,并且在 数量恢复到原始数量 之前无法使用。
PATCH https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName}?api-version=2021-04-01
在请求正文中,将 capacity 属性更新为您要预留的新数量:
{
"sku":
{
"capacity": 5
}
}
在此示例中,capacity 属性现已设置为 5。
调整与容量预留组关联的虚拟机大小
如果当前正在调整大小的 VM 已关联到容量预留组,并且该组中没有针对目标大小的预留,则必须执行以下操作之一:
- 为该大小创建新的预留。
- 在调整大小之前,先将 VM 从预留组中移除。
检查目标大小是否属于预留组。
获取该组中所有容量预留的名称。
GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?api-version=2021-04-01{ "name": "<CapacityReservationGroupName>", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}", "type": "Microsoft.Compute/capacityReservationGroups", "location": "chinanorth3", "zones": [ "1" ], "properties": { "capacityReservations": [ { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}" }, { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName2}" } ] } }了解每个预留对应的 VM 大小。 以下示例以
capacityReservationName1为例,但您可以对其他预留重复执行此步骤。GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}?api-version=2021-04-01{ "name": "capacityReservationName1", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}", "type": "Microsoft.Compute/capacityReservationGroups/capacityReservations", "location": "chinanorth3", "sku": { "name": "Standard_D2s_v3", "capacity": 3 }, "zones": [ "1" ], "properties": { "reservationId": "<reservationId>", "provisioningTime": "<provisioningTime>", "provisioningState": "Succeeded" } }请考虑下列情形:
删除产能预留组和产能预留
如果某个组的所有成员产能预留均已删除且没有 VM 与该组关联,那么 Azure 允许删除该组。
若要删除产能预留,请先查找与其关联的所有 VM。 可在 virtualMachinesAssociated 属性下找到 VM 列表。
首先,查找与产能预留组关联的所有 VM 并将它们解除关联:
GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?$expand=instanceView&api-version=2021-04-01
{
"name": "<capacityReservationGroupName>",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}",
"type": "Microsoft.Compute/capacityReservationGroups",
"location": "chinanorth3",
"properties": {
"capacityReservations": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}/capacityReservations/{capacityReservationName}"
}
],
"virtualMachinesAssociated": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName1}"
},
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName2}"
}
],
"instanceView": {
"capacityReservations": [
{
"name": "{capacityReservationName}",
"utilizationInfo": {
"virtualMachinesAllocated": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName1}"
}
]
},
"statuses": [
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"time": "<time>"
}
]
}
]
}
}
}
从前面的响应中,找出 virtualMachinesAssociated 属性下所有 VM 的名称。 按照删除 VM 与容量预留的关联中的步骤,将它们从容量预留组中移除。
从容量预留组中删除所有 VM 后,删除成员容量预留:
DELETE https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName}?api-version=2021-04-01
最后,删除父容量预留组:
DELETE https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?api-version=2021-04-01
恢复实例数量
无论与预留关联的 VM 数量有多少,格式标准的预留数量减少请求都应始终成功。 但是,要增加预留数量,可能需要更多配额,并且需要 Azure 才能满足对更多容量的请求。 在极少数情况下,如果 Azure 无法满足增加现有预留的预留数量的请求,预留状态可能会更改为“失败”且变得不可用,直到预留数量恢复到原始数额。
注释
如果预留处于“失败”状态,则与该预留关联的所有 VM 都将继续正常工作。
例如,假设 myCapacityReservation 预留了 5 个实例。 你请求 5 个额外实例,使得总预留数量达到 10。 但是,由于该区域的容量受到限制,Azure 无法满足请求的额外 5 个实例。 在这种情况下,myCapacityReservation 未能达到其预期状态(10 个预留实例),并进入Failed状态。
要解决此问题,请执行以下步骤来查找旧的预留数量值:
- 在Azure门户中,转到 Change Analysis。
- 在筛选器中选择适用的 订阅、资源组和 时间范围 设置。 在“时间范围”筛选器中,最多只能追溯到过去 14 天。
- 搜索产能预留的名称。
- 查找该预留的
sku.capacity属性中的更改。 原预留数量是 Old Value 列下的值。
将 myCapacityReservation 更新为原预留数量。 更新后,预留可立即供您的 VM 使用。
或者,使用 currentCapacity 容量预留实例视图属性中的字段来检查已成功保留的 VM 大小的容量,并将数量更新为当前容量值。 请参阅 容量预留 - 获取。