9.3. 架构

本节论述了 MTV 自定义资源、服务和工作流。

9.3.1. MTV 自定义资源和服务

Migration Toolkit for Virtualization(MTV) 作为 OpenShift Container Platform Operator 提供。它将创建和管理以下自定义资源 (CR) 和服务。

MTV 自定义资源

  • Provider CR 存储启用 MTV 连接到并与源和目标供应商交互的属性。
  • NetworkMapping CR 映射源供应商的网络。
  • StorageMapping CR 会映射源和目标供应商的存储。
  • Provisioner CR 存储存储存储置备程序的配置,如支持的卷和访问模式。
  • Plan CR 包含具有相同迁移参数和相关网络和存储映射的虚拟机列表。
  • Migration CR 运行一个迁移计划。

    每个迁移计划只能有一个 Migration CR 可以在指定时间运行。您可以为单个 Plan CR 创建多个 Migration CR。

MTV 服务

  • Inventory 服务执行以下操作:

    • 连接到源和目标供应商。
    • 维护本地清单以进行映射和计划。
    • 存储虚拟机配置。
    • 如果检测到虚拟机配置更改,则运行 Validation 服务。
  • Validation 服务通过应用规则检查虚拟机是否适合迁移。
  • User Interface 服务执行以下操作:

    • 可让您创建和配置 MTV CR。
    • 显示 CR 的状态和迁移的进度。
  • Migration Controller 服务编配迁移。

    当您创建迁移计划时,Migration Controller 服务会验证计划并添加状态标签。如果计划无法验证,计划状态为 Not ready,则计划无法用于执行迁移。如果计划通过验证,计划状态为 Ready,它可用于执行迁移。迁移成功后,Migration Controller 服务会将计划状态更改为 Completed

  • Kubevirt ControllerContainerized Data Import(CDI)Controller 服务处理大多数技术操作。

9.3.2. 高级别迁移工作流

高级别工作流显示用户视图的迁移过程:

  1. 您可以创建一个源供应商、目标供应商、网络映射和存储映射。
  2. 您可以创建一个包含以下资源的 Plan 自定义资源(CR):

    • 源供应商
    • 目标供应商,如果目标集群上没有安装 MTV
    • 网络映射
    • 存储映射
    • 一个或多个虚拟机 (VM)
  3. 您可以通过创建一个引用 Plan CR 的 Migration CR 来运行迁移计划。

    如果出于某种原因无法迁移所有虚拟机,则可以为同一 Plan CR 创建多个 Migration CR,直到虚拟机迁移为止。

  4. 对于 Plan CR 中的每个虚拟机,Migration Controller 服务会创建一个 VirtualMachine CR,并在 Migration CR 中记录虚拟机迁移进度。

    当迁移所有虚拟机时,Migration Controller 服务会将 Plan CR 的状态更新为 Completed。每个源虚拟机的电源状态在迁移后会被维护。

9.3.3. 详细的迁移工作流

您可以使用详细的迁移工作流来排除迁移失败的问题。

工作流描述了以下步骤:

  1. 当您创建一个 Migration 自定义资源(CR)来运行迁移计划时,Migration Controller 服务为每个源虚拟机(VM)和 DataVolume CR 创建一个 VirtualMachine CR。

    对于每个 VM 磁盘:

  2. Containerized Data Importer(CDI) 控制器服务根据 DataVolume CR 中指定的参数创建一个持久性卷声明 (PVC)。


  3. 如果 StorageClass 有动态置备程序,则 StorageClass 置备程序会动态置备持久性卷(PV)。
  4. CDI Controller 服务创建一个 importer pod。
  5. importer pod 将虚拟机磁盘流传输到 PV。

    虚拟机磁盘传输后:

  6. Migration Controller 服务创建一个 conversion pod,并附加了 PVC。

    conversion pod 运行 virt-v2v,它会在目标虚拟机的 PVC 中安装和配置设备驱动程序。

  7. 当目标虚拟机开机时,KubeVirt Controller 服务会创建一个 virt-launcher pod 和 VirtualMachineInstance CR。

    virt-launcher pod 运行 QEMU-KVM,并附加了作为 VM 磁盘的 PVC。