9.20. CPU 型号
9.20.1. 选择 CPU 型号 复制链接链接已复制到粘贴板!
您可以根据集群配置为虚拟机选择适当的 CPU 模型。在 host-model CPU 之间进行选择,在 同构 集群中提供最大性能和功能访问,或者命名的 CPU 模型,以确保具有不同 CPU 类型的异构集群中具有兼容性和迁移灵活性。
9.20.1.1. host-model CPU 复制链接链接已复制到粘贴板!
host-model 是 OpenShift Virtualization 中的默认 CPU 配置。当使用 host-model 创建虚拟机实例(VMI)时,libvirt 会自动选择一个与 VMI 首先运行的节点物理 CPU 最接近的 CPU 模型。此初始节点上存在的主机模型所需的 CPU 功能包含在 VMI 的域定义中。
host-model 选择的 CPU 模型通常不是 libvirt 支持的标准命名模型,其中可能包括额外的 CPU 功能。libvirt 创建一个仅在初始节点上包括可用功能的 CPU 定义。这个方法可确保:
- VMI 可以在初始节点上成功启动。
- 将来的实时迁移只需要 host-model 中使用的 CPU 功能子集,即使目标节点具有不同的或者附加功能。
9.20.1.1.1. 同构集群 复制链接链接已复制到粘贴板!
在同构集群中,所有节点都有类似的 CPU 功能。对于同构集群,建议使用 host-model CPU 模型,并提供以下优点:
- 为虚拟机提供与物理 CPU 最接近的匹配项。
- 虚拟机可以使用节点上所有可用的 CPU 功能。
- 实时迁移是平稳的,因为所有节点都共享相同的 CPU 功能。
9.20.1.1.2. 使用 host-model 进行实时迁移 复制链接链接已复制到粘贴板!
因为 CPU 模型和功能由初始节点决定,因此公开给 VMI 的所有主机模型所需的 CPU 功能也都必须存在于将来的实时迁移目标节点上。
OpenShift Virtualization 通过以下方法确保兼容性:
-
检测初始节点上的所有
host-model-required-features.node.kubevirt.io/<cpuFeature> 标签。 - 每个 VMI 存储这些标签。
- 使用相同的所需 CPU 功能,为所有将来的实时迁移设置节点选择器。
这种方法保证虚拟机迁移仅提供 VMI 实际需要的 CPU 功能的目标节点。
目标节点可能比所需支持更多 CPU 功能,但必须至少支持 VMI 使用的所有功能。
9.20.1.2. 命名的 CPU 型号 复制链接链接已复制到粘贴板!
通过命名的 CPU 型号,您可以明确为虚拟机选择 CPU 类型。您可以在虚拟机级别配置命名 CPU 模型,或使用 HyperConverged 自定义资源(CR)设置集群范围的默认值。
只有在包含 libvirt 为此模型定义的所有所需 CPU 功能时,节点才支持命名 CPU 模型。支持特定 CPU 模型的节点使用 cpu-model.node.kubevirt.io/<cpuModel& gt; 标签。OpenShift Virtualization 使用这些标签将虚拟机调度到兼容节点。当您配置命名的 CPU 模型时,虚拟机会收到节点选择器,以确保它仅在使用该特定 CPU 模型的节点上运行。
9.20.1.2.1. 异构集群 复制链接链接已复制到粘贴板!
在异构集群中,节点有不同的 CPU 生成或功能集。
虚拟机实例(VMI)继承了第一个调度节点的主机模型 CPU 功能。如果初始节点有其他节点不支持的 CPU 功能,则可能会阻止虚拟机迁移到它们。
对于异构集群中的 CPU 模型,建议使用一个名为 EPYC-IBPB 或 Haswell的通用 CPU 模型,并提供以下优点:
- 确保为迁移选择的所有节点都支持所需的 CPU 功能。
- 使用不同 CPU 类型,最大限度地提高跨节点的 VM migratability。
- 防止在不支持实时迁移目标的节点上调度虚拟机。
在异构集群中,如果初始调度节点有主机模型所需的 CPU 功能,则使用 host-model 来限制实时迁移选项。