9.3. 将节点设置为维护模式

9.3.1. 了解节点维护模式

将节点置于维护中可将节点标记为不可调度,并排空其中的所有虚拟机和 pod。具有 LiveMigrate 驱除策略的虚拟机实例实时迁移到另一节点不会丢失服务。在从通用模板创建的虚拟机中默认配置此驱除策略,而自定义虚拟机则必须手动更配置。

没有驱除策略的虚拟机实例将在该节点上被删除,并会在另一节点上重新创建。

重要

虚拟机必须具有一个采用共享 ReadWriteMany (RWX) 访问模式的 PersistentVolumeClaim (PVC) 才能实时迁移。

通过 web 控制台或 CLI 将节点置于维护模式

9.3.2. 通过 web 控制台将节点设置为维护模式

使用 ComputeNodes 列表中每个节点上 kebab 的 Options 菜单,或使用 Node Details 屏幕的 Actions 控件,将节点设置 维护模式。

流程

  1. 在容器原生虚拟化控制台中,点击 ComputeNodes
  2. 您可从此屏幕将节点设置为维护,这有助于在一个屏幕中对多个虚拟机执行操作,也可通过 Node Details 屏幕进行,其中可查看所选节点的综合详情:

    • 点击节点 kebab 末尾的 Options 菜单并选择 Start Maintenance
    • 点击节点名称以打开 Node Details 屏幕,然后点击 ActionsStart Maintenance
  3. 在确认窗口中点击 Start Maintenance

该节点将实时迁移具有 liveMigration 驱除策略的虚拟机实例,且该节点不可再调度。该节点上的所有其他 pod 和虚拟机均被删除,并会在另一节点上重新创建。

9.3.3. 在 CLI 中将节点设置为维护模式

通过创建 NodeMaintenance 自定义资源 (CR) 对象来将节点设置为维护模式,该对象需引用节点名称以及将节点设置为维护模式的原因。

流程

  1. 创建节点维护模式的 CR 配置。本例使用名为 node02-maintenance.yaml 的 CR:

    apiVersion: kubevirt.io/v1alpha1
    kind: NodeMaintenance
    metadata:
      name: node02-maintenance
    spec:
      nodeName: node02
      reason: "Replacing node02"
  2. 在集群中创建 NodeMaintenance 对象:

    $ oc apply -f <node02-maintenance.yaml>

该节点会实时迁移具有 liveMigration 驱除策略的虚拟机实例,并污染该节点,使其不可再调度。该节点上的所有其他 pod 和虚拟机均被删除,并会在另一节点上重新创建。