如果您使用 Compute Engine 在某个区域中批量创建虚拟机 (VM),并且您的应用不限于单一机器类型,则可以通过配置实例灵活性来提高预配所需数量虚拟机的成功率。 通过实例灵活性,您可以指定一种或多种适合您的工作负载的机器类型。 然后,Compute Engine 会根据容量和配额可用性,使用这些机器类型中的一种或多种来预配虚拟机。单个批量插入请求可以创建多种不同机器类型的虚拟机。
实例灵活性有助于您在需求高峰期最大限度地提高资源可用性,提高性价比,并安全地采用最新硬件。 如需了解详情,请参阅优化计算 预配。
本文档介绍了实例灵活性如何适用于批量创建的虚拟机,包括最低要求 CPU 平台和磁盘的实例属性替换,以及限制。如需详细了解如何配置实例灵活性,请参阅 使用实例灵活性批量创建虚拟机。
使用实例灵活性
如需配置实例灵活性,您可以在区域级批量插入请求中定义
一个或多个实例选择,列出合适的机器类型。
例如,在 REST 请求中,您可以添加 instanceFlexibilityPolicy 对象,并在其中定义一个或多个 instanceSelections 对象,每个对象都包含一个机器类型列表。
您还可以指定在不同 CPU 平台上运行、具有不同架构(例如 x86 和 Arm)或具有不同磁盘要求的机器类型。如需使用具有不同硬件要求的机器类型,请使用
实例选择替换请求的
实例属性 (instanceProperties) 中的相应属性。如需了解详情,请参阅实例选择中的实例属性替换。
Compute Engine 收到请求后,会先验证机器类型及其可用区兼容性,排除所有无效条目。如果至少存在一个有效配置,则操作会继续进行。
然后,Compute Engine 会尝试根据可用硬件、配额和预留资源来预配虚拟机。如果您为实例选择配置了排名,它会优先选择排名较低的选择。在每个排名中,Compute Engine 会考虑未使用的预留资源和 Spot 虚拟机指南,以选择抢占概率较低的机器类型。
实例选择中的实例属性替换
进行实例选择时,您可以指定其他实例属性(例如最低要求 CPU 平台 (minCpuPlatform) 和磁盘 (disks)),以替换或添加到您在请求的实例属性 (instanceProperties) 中定义的属性。当 Compute Engine 从实例选择中选择机器类型来创建虚拟机时,它会使用您在该选择中指定的实例属性。如果您未为实例选择指定任何替换,Compute Engine 会使用 instanceProperties 中的相应属性来创建虚拟机。
在实例选择级别替换实例属性可让您在单个批量插入请求中使用不同的硬件配置时,获得更多控制权和灵活性。
最低要求 CPU 平台替换
您可以为 Compute Engine 从
实例选择中的机器类型创建的虚拟机指定
最低要求 CPU 平台(minCpuPlatform)。通过此替换,您可以混合使用不同的机器类型,并有选择地应用最低要求 CPU 平台。实例选择中的每种机器类型都必须支持有效的最低要求 CPU 平台,无论是在选择中指定还是从 instanceProperties 继承。
或者,您可以将 minCpuPlatform 字段设置为 AUTOMATIC。此设置会替换 instanceProperties 中的 minCpuPlatform 值,并允许 Compute Engine 为实例选择中的机器类型使用任何兼容的 CPU 平台。
如需混合使用仅一个系列支持特定 CPU 平台的机器类型,请将它们放在单独的实例选择中。例如,N4 机器类型支持 Intel Emerald Rapids 平台,而 vCPU 少于 96 个的 N2 机器类型支持 Intel Ice Lake 和 Intel Cascade Lake。如需在批量插入请求中混合使用 N4 和 N2,并要求 N2 在 Intel Ice Lake 上运行,请按如下方式配置两个实例选择:
- N2 选择 :将
minCpuPlatform字段设置为Intel Ice Lake。 - N4 选择 :将
minCpuPlatform字段留空,或将其设置为AUTOMATIC。
您可以为这两个实例选择分配相同的排名,从而为这两种机器类型设置相同的偏好级别。
磁盘替换
您可以在实例选择中指定自定义磁盘配置,以替换 instanceProperties 中指定的启动磁盘或其他磁盘,或挂接其他磁盘。通过此替换,您可以混合使用具有不同架构或支持不同磁盘类型的机器类型。它还允许您指定每种机器类型所需的启动映像或磁盘。
例如,您可以使用单独的实例选择来替换具有不同要求的磁盘:
- 不同架构 :您可以混合使用 C4(x86 架构)和 C4A(Arm 架构)机器类型。由于 x86 和 Arm 机器类型需要不同的启动映像,因此您可以替换启动磁盘,为每种架构指定兼容的映像。
- 不同磁盘类型 :您可以混合使用 N2 和 N4 机器类型。由于 N2 仅支持将 Persistent Disk 用作启动磁盘,而 N4 仅支持 Google Cloud Hyperdisk,因此您可以替换磁盘配置,为每个机器系列指定支持的磁盘类型。
在任一场景中,您都可以为这两个实例选择分配相同的排名,从而为这两种机器类型设置相同的偏好级别。
如果实例选择中的磁盘的 deviceName 与 instanceProperties 中的磁盘匹配,则 Compute Engine 会替换该磁盘的配置。如果 deviceName 与 instanceProperties 中的任何磁盘都不匹配,则 Compute Engine 会将其作为其他磁盘挂接。您必须确保有效的磁盘配置与实例选择中的所有机器类型兼容。
下图显示了 Compute Engine 如何合并 instanceProperties 和实例选择中的磁盘配置:
如需了解如何在批量创建虚拟机时指定最低要求 CPU 平台和磁盘替换,请参阅创建具有多种机器类型、最低要求 CPU 平台和磁盘 替换的虚拟机。
如需详细了解使用实例选择 替换时的限制,请参阅本文档中的限制部分。
示例:最低要求 CPU 平台和磁盘替换
您可以在实例灵活性政策中使用替换,以在需要不同 CPU 平台、启动映像或磁盘类型的机器系列中预配虚拟机。
假设有一个批量插入请求,其基本 instanceProperties 配置定义了默认的 pd-balanced 启动磁盘:
"instanceProperties": {
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "10",
"diskType": "pd-balanced"
}
}
],
"networkInterfaces": [{}]
}
同一请求中的以下 instanceFlexibilityPolicy 配置通过在三个实例选择中指定最低要求 CPU 平台和磁盘配置,替换了基本 instanceProperties 配置:
"instanceFlexibilityPolicy": {
"instanceSelections": {
"first-preference": {
"rank": 1,
"machineTypes": ["n4-standard-4"],
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "10",
"diskType": "hyperdisk-balanced"
}
}
]
},
"second-preference": {
"rank": 2,
"machineTypes": ["c4a-standard-4"],
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64",
"diskSizeGb": "10",
"diskType": "hyperdisk-balanced"
}
},
{
"autoDelete": true,
"deviceName": "data-disk",
"boot": false,
"initializeParams": {
"diskSizeGb": "100",
"diskType": "hyperdisk-balanced"
}
}
]
},
"third-preference": {
"rank": 3,
"machineTypes": ["n2-standard-4"],
"minCpuPlatform": "Intel Ice Lake",
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "10",
"diskType": "pd-ssd"
}
}
]
}
}
}
在此示例中,Compute Engine 会根据用于创建虚拟机的实例选择应用以下替换:
- 首选 (
first-preference) :对于n4-standard-4虚拟机,该选择会替换boot-disk,以使用hyperdisk-balanced磁盘而不是基本pd-balanced磁盘。 - 次选 (
second-preference) :对于c4a-standard-4(Arm) 虚拟机,该选择会替换boot-disk,以在hyperdisk-balanced磁盘上使用与 Arm 兼容的启动映像 (debian-12-arm64),并挂接一个额外的 100 GBhyperdisk-balanced磁盘,名为data-disk。 - 三选 (
third-preference) :对于n2-standard-4虚拟机,该选择会将minCpuPlatform设置为Intel Ice Lake,并替换boot-disk以使用pd-ssd磁盘。
定义目标分布形状时的可用区选择
将实例灵活性与区域级 bulkInsert 请求搭配使用时,您可以指定目标分布形状来控制虚拟机在区域中的可用区之间的分布方式。Compute Engine 会根据此形状选择用于预配虚拟机的可用区,如下所示:
ANY_SINGLE_ZONE:Compute Engine 会选择一个可用区,该可用区具有偏好级别较高的机器类型的最大容量。BALANCED:Compute Engine 会在具有可用资源的可用区之间尽可能均匀地分布虚拟机。在每个可用区中,Compute Engine 会优先选择偏好级别较高的机器类型。ANY:Compute Engine 会选择具有可用资源的可用区。如果配置了排名,Compute Engine 会优先选择可用区,以使用偏好级别较高的机器类型预配虚拟机。
如需了解详情,请参阅在区域中批量创建虚拟机。
虚拟机预配下限和实例灵活性
如果您在 bulkInsert 请求中为所需虚拟机的数量下限 (minCount) 定义了一个值,则 API 会尝试创建至少该数量的虚拟机。如果 Compute Engine 无法预配所需虚拟机的数量下限 (minCount),则整个操作会失败,并且 Compute Engine 不会创建任何虚拟机。将 minCount 与实例灵活性搭配使用时,Compute Engine 会优先考虑可获取性而不是排名来预配虚拟机,如下所示:
- Compute Engine 会优先预配最多
count个虚拟机,即使这意味着使用偏好级别较低的机器也是如此。 例如,如果您的请求指定所需虚拟机的数量下限为 1 (minCount=1),上限为 10 (count=10),并且 Compute Engine 有能力预配 1 个偏好级别较高的虚拟机或 6 个偏好级别较低的虚拟机,则 Compute Engine 会预配 6 个偏好级别较低的虚拟机。 - 如果 Compute Engine 可以使用不同的实例选择预配最多
count个虚拟机,则它会优先选择偏好级别较高的选择。例如,如果您的请求指定所需虚拟机的数量下限为 1 (minCount=1),上限为 10 (count=10),并且 Compute Engine 可以使用偏好级别较高或偏好级别较低的实例选择预配 6 个虚拟机,则 Compute Engine 会从偏好级别较高的选择中预配 6 个虚拟机。
如需了解详情,请参阅 minCount 中的
bulkInsert 属性。
批量插入验证和错误场景
Compute Engine 会对机器类型及其可用区兼容性执行初始验证,排除所有无效条目。如果在此初始检查后至少保留一个有效配置,Compute Engine 会继续创建虚拟机。
但是,只有在 Compute Engine 根据您的实例灵活性政策和可用容量选择用于预配的可用区和机器类型后,才能进行某些配置验证。
如果在稍后的验证阶段,发现为预配选择的特定机器类型和可用区组合无效,则整个批量插入请求会因验证错误而失败。即使 instanceFlexibilityPolicy 中的其他配置最初有效,也可能会发生此失败。
限制
将实例灵活性用于批量创建虚拟机时,存在以下限制:
- 您只能为区域级
bulkInsert请求指定实例灵活性;您无法将其与可用区级请求搭配使用。 - 实例灵活性不支持 灵活启动型虚拟机和 未来预留。
- 您无法将实例灵活性与 AI Hypercomputer 功能或 A3 Ultra、A4 和更新的 GPU 搭配使用。
- 您最多可以在 10 个不同的实例选择中指定 10 种不同的机器类型。
- 在实例选择中替换
minCpuPlatform或disks时,还存在以下限制:- 为实例选择配置
minCpuPlatform或disks时,您还必须添加machineTypes字段。如果您省略machineTypes字段,则操作会失败并显示错误。 - 您只能为
允许您选择本地 SSD 磁盘数量的机器类型替换本地 SSD 磁盘。
您无法为
-lssd自动挂接本地 SSD 磁盘的机器类型的变体替换本地 SSD 磁盘。
- 为实例选择配置
后续步骤
- 了解如何使用实例灵活性批量创建虚拟机。
- 在优化计算预配中了解灵活性维度、使用场景和最佳实践。