×

您可以通过确保虚拟机 (VM) 的CPU型号和策略属性与节点支持的CPU型号和策略属性匹配来在节点上调度虚拟机。

策略属性

您可以通过指定策略属性和CPU特性来调度虚拟机 (VM),在虚拟机在节点上调度时,这些属性和特性将匹配以确保兼容性。为虚拟机指定的策略属性决定该虚拟机如何在节点上调度。

策略属性 描述

force

强制虚拟机在节点上调度。即使主机CPU不支持虚拟机的CPU,也适用。

require

如果未为虚拟机配置特定的CPU型号和特性规范,则应用于虚拟机的默认策略。如果未将节点配置为支持此默认策略属性或任何其他策略属性的CPU节点发现,则不会在该节点上调度虚拟机。主机CPU必须支持虚拟机的CPU,或者虚拟机管理程序必须能够模拟支持的CPU型号。

optional

如果主机的物理机CPU支持该虚拟机,则将虚拟机添加到节点。

disable

无法使用CPU节点发现调度虚拟机。

forbid

即使主机CPU支持该特性并且启用了CPU节点发现,也不会调度虚拟机。

设置策略属性和CPU特性

您可以为每个虚拟机 (VM) 设置策略属性和CPU特性,以确保根据策略和特性在节点上调度它。您设置的CPU特性将经过验证,以确保它受主机CPU支持或由虚拟机管理程序模拟。

步骤
  • 编辑虚拟机配置文件的domain规范。以下示例为虚拟机 (VM) 设置CPU特性和require策略

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: myvm
    spec:
      template:
        spec:
          domain:
            cpu:
              features:
                - name: apic (1)
                  policy: require (2)
    1 虚拟机的CPU特性名称。
    2 虚拟机的策略属性。

使用支持的CPU型号调度虚拟机

您可以为虚拟机 (VM) 配置CPU型号,以便在支持其CPU型号的节点上对其进行调度。

步骤
  • 编辑虚拟机配置文件的domain规范。以下示例显示为虚拟机定义的特定CPU型号

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: myvm
    spec:
      template:
        spec:
          domain:
            cpu:
              model: Conroe (1)
    1 虚拟机的CPU型号。

使用主机型号调度虚拟机

当虚拟机 (VM) 的CPU型号设置为host-model时,虚拟机将继承其所在节点的CPU型号。

步骤
  • 编辑虚拟机配置文件的domain规范。以下示例显示为虚拟机指定了host-model

    apiVersion: kubevirt/v1alpha3
    kind: VirtualMachine
    metadata:
      name: myvm
    spec:
      template:
        spec:
          domain:
            cpu:
              model: host-model (1)
    1 继承其所在节点CPU型号的虚拟机。

使用自定义调度器调度虚拟机

您可以使用自定义调度器在节点上调度虚拟机 (VM)。

先决条件
  • 为您的集群配置了辅助调度器。

步骤
  • 通过编辑VirtualMachine清单将自定义调度器添加到虚拟机配置。例如

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-fedora
    spec:
      running: true
      template:
        spec:
          schedulerName: my-scheduler (1)
          domain:
            devices:
              disks:
                - name: containerdisk
                  disk:
                    bus: virtio
    # ...
    1 自定义调度器的名称。如果schedulerName值与现有调度器不匹配,则virt-launcher Pod将保持Pending状态,直到找到指定的调度器。
验证
  • 通过检查virt-launcher Pod事件,验证虚拟机是否正在使用VirtualMachine清单中指定的自定义调度器

    1. 输入以下命令查看集群中的Pod列表

      $ oc get pods
      示例输出
      NAME                             READY   STATUS    RESTARTS   AGE
      virt-launcher-vm-fedora-dpc87    2/2     Running   0          24m
    2. 运行以下命令以显示Pod事件

      $ oc describe pod virt-launcher-vm-fedora-dpc87

      输出中From字段的值验证调度器名称是否与VirtualMachine清单中指定的自定义调度器匹配

      示例输出
      [...]
      Events:
        Type    Reason     Age   From              Message
        ----    ------     ----  ----              -------
        Normal  Scheduled  21m   my-scheduler  Successfully assigned default/virt-launcher-vm-fedora-dpc87 to node01
      [...]
其他资源