借助托管式实例组 (MIG) 中的实例灵活性,您可以为组中的虚拟机 (VM) 实例指定多种机器类型,而不是仅限于单一机器类型。如果某种机器类型不可用,MIG 可以根据当前资源可用性,从您的列表中自动选择其他兼容类型。这种灵活性有助于提高资源可获取性,尤其是对于可以在不同机器类型上运行以及需要大规模容量或高需求硬件的应用。
本文档介绍了实例灵活性在 MIG 中的运作方式及其限制。如需了解如何配置 MIG 以使用实例灵活性,请参阅添加实例灵活性。
实例灵活性
MIG 会根据您选择的实例模板创建其所有虚拟机。实例模板指定要用于每个虚拟机的机器类型。借助实例灵活性,您可以列出与您的应用兼容的所有机器类型。
下图比较了使用单一机器类型的 MIG 与使用实例灵活性的 MIG。如图所示,具有单一机器类型的 MIG 会根据实例模板创建相同的虚拟机,而具有实例灵活性的 MIG 可以创建具有不同机器类型和大小的虚拟机。
实例灵活性的运作方式
默认情况下,MIG 会根据实例模板使用单一机器类型创建所有虚拟机。您可以在实例灵活性政策 (instanceFlexibilityPolicy
) 中配置实例选择 (instanceSelections
),以便在 MIG 中设置多种机器类型。
如果您的工作负载可以在许多不同的机器类型上运行,您只需在单个 instanceSelection
中配置与应用兼容的所有机器类型的列表,如下所示:
"instanceFlexibilityPolicy": { "instanceSelections": { "instance-selection-1": { "machineTypes": ["c3-standard-8","n2-standard-8","c2-standard-8"] } } }
实例选择中的各个机器类型具有相同的偏好级别。如果您希望 MIG 按特定顺序选择机器类型,可以配置多个实例选择,每个实例选择中都有一个机器类型列表和一个用于定义偏好级别的排名。排名的值越小,偏好级别越高。MIG 会尝试使用偏好级别更高的机器类型创建其虚拟机。如果这些偏好的机器类型不可用,MIG 会使用偏好级别较低的机器类型。
"instanceFlexibilityPolicy": { "instanceSelections": { "most-preferred": { "rank": 1, "machineTypes": ["c3-standard-16","n2-standard-16","c2-standard-16"] }, "least-preferred": { "rank": 2, "machineTypes": ["c3-standard-8","n2-standard-8","c2-standard-8"] } } }
您的应用需要能够在列出的任何机器类型上运行,因为硬件的可用性会随着时间的推移而发生变化,无法保证特定硬件可用(除非您使用预留)。
MIG 如何选择机器类型
当您配置多种机器类型时,MIG 会根据当前资源可用性选择机器类型,并优先考虑未使用的预留。如果您配置了排名,MIG 会首先考虑您的偏好级别顺序。在进行了排名的实例选择中,MIG 会检查资源可用性,然后检查预留。
MIG 所在区域的可用区也可能会影响机器类型选择,因为资源可用性会因可用区而异。如需了解详情,请参阅下文关于 MIG 如何选择可用区的部分。
MIG 如何选择可用区
您可以在具有 BALANCED
或 ANY_SINGLE_ZONE
目标分布形状的区域级 MIG 中配置实例灵活性。借助实例灵活性,当区域级 MIG 创建虚拟机时,它会根据所选的目标分布形状选择可用区,如下所示:
BALANCED
:MIG 会选择具有可用资源的可用区,并尽可能均衡地在各个可用区之间分布虚拟机。在所选可用区内,MIG 会根据排名(如果已配置)和可用预留来确定机器类型的优先级。ANY_SINGLE_ZONE
:MIG 会根据排名(如果已配置)选择具有最多机器类型,并且 MIG 可以在其中使用未使用的预留创建最多虚拟机的可用区。
如需详细了解目标分布形状的运作方式,请参阅区域级 MIG 目标分布形状。
实例灵活性和预留
您可以将实例灵活性与预留搭配使用。MIG 会根据您在实例模板中设置的 reservationAffinity
字段使用预留。
如果实例选择中包含多种机器类型,MIG 会优先选择具有未使用预留资源的机器类型。如果您想更改 MIG 选择机器类型的顺序,可以配置多个实例选择,并使用排名指定您的偏好级别。MIG 随后会先遵循偏好级别顺序,然后考虑实例选择中的预留。
如需详细了解预留,请参阅选择预留类型。
实例灵活性和 Spot 虚拟机
如果具有实例灵活性的 MIG 使用 Spot 虚拟机,则 MIG 会自动选择观察到的抢占率最低的机器类型,以确保对工作负载造成的中断最小。如果您想替换此行为,可以配置多个实例选择,并使用排名指定您的偏好级别。MIG 随后会先遵循偏好级别顺序,然后考虑实例选择中的 Spot 虚拟机可靠性。
如需详细了解 Spot 虚拟机,请参阅托管式实例组中的 Spot 虚拟机。
实例灵活性和虚拟机修复
默认情况下,如果 MIG 中的虚拟机发生故障,MIG 会使用相同的配置(包括机器类型)重新创建虚拟机来进行修复。如果您配置了实例灵活性,并且发生故障的虚拟机的原始机器类型暂时不可用,MIG 会根据指定的实例选择来选择其他机器类型。
如需详细了解修复功能,请参阅关于修复虚拟机以实现高可用性。
使用场景
以下各部分介绍了 MIG 中实例灵活性的一些应用场景。
优化费用
当您按如下所示配置 MIG 的实例灵活性设置时,MIG 可以自动为您的基础设施预配最具成本效益的实例:
机器类型:选择可为您的工作负载提供您偏好的性价比的机器类型。您无需指定每种机器类型的所有可用大小;只需指定符合您需求的费用最优大小。
排名:根据您的费用偏好为实例选择分配排名,其中费用最低的机器类型具有最高的偏好级别。这有助于确保您根据可用性获取费用最低的机器类型。
位置:创建 MIG 时,选择所有可用区和
BALANCED
目标分布形状。这样可以提高在提供费用最低的机器类型的可用区中获取这些机器类型的机会。
根据您的实例灵活性设置,MIG 会自动预配可用机器类型的最佳可能组合,以满足您的费用标准和所请求的总容量。这样可确保在给定时间内尽可能降低费用。
提高可获取性
您可以配置 MIG 实例灵活性以提高可获取性。为此,请在同一排名中选择尽可能多的与应用兼容的机器类型。您可以通过在创建 MIG 时选择所有可用区并使用 BALANCED
目标分布形状(该形状会优先考虑提供资源的可用区),来进一步提高获取资源的机会。MIG 会根据所选的机器类型和 BALANCED
形状,查找可用性最高的容量。
为了最大限度地提高获取 Spot 虚拟机的机会,并降低被抢占的可能性,Google 建议您在同一排名中添加各种机器类型。这会扩大 MIG 搜索可用容量的范围,从而通过 Spot 预配模型实现最佳结果。
最大限度提升性能
您可以配置 MIG 实例灵活性以最大限度提升性能。为此,请选择最适合您的工作负载的机器家族和大小。然后使用每个家族中最偏好的大小,根据性能对机器类型进行排名(从高到低)。MIG 会根据排名和机器类型,从所有可用资源中选择性能最高的机器。
限制
实例灵活性具有以下限制:
可用区级 MIG 不支持实例灵活性。您可以改用包含单个可用区的区域级 MIG。
实例灵活性不支持以下 MIG 功能:
将 MIG 与 Cloud Load Balancing 搭配使用时,请使用性能类似的机器类型(例如相同的 vCPU 数量),以防止较小硬件利用率过高和较快机器利用率低下。否则,使用性能不同的机器类型时,负载均衡可能无法有效发挥作用。
后续步骤
- 详细了解不同的机器类型。
- 向 MIG 添加实例灵活性。
- 查看 MIG 中的实例灵活性。