11.6. 从开放虚拟设备(OVA)源提供商迁移


您可以使用命令行界面(CLI)从由 VMware vSphere 创建的开放虚拟设备(OVA)文件迁移到源供应商。

流程

  1. 为源供应商凭证创建 Secret 清单:

    $ cat << EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret>
      namespace: <namespace>
      ownerReferences: 
    1
    
        - apiVersion: forklift.konveyor.io/v1beta1
          kind: Provider
          name: <provider_name>
          uid: <provider_uid>
      labels:
        createdForProviderType: ova
        createdForResourceType: providers
    type: Opaque
    stringData:
      url: <nfs_server:/nfs_path> 
    2
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    ownerReferences 部分是可选的。
    2
    其中: nfs_server 是创建共享的服务器的 IP 或主机名,nfs_path 是存储 OVA 文件的服务器上的路径。
  1. 为源供应商创建 Provider 清单:

    $ cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: Provider
    metadata:
      name: <source_provider>
      namespace: <namespace>
    spec:
      type: ova
      url:  <nfs_server:/nfs_path> 
    1
    
      secret:
        name: <secret> 
    2
    
        namespace: <namespace>
    EOF
    Copy to Clipboard Toggle word wrap
    1
    其中: nfs_server 是创建共享的服务器的 IP 或主机名,nfs_path 是存储 OVA 文件的服务器上的路径。
    2
    指定供应商 Secret CR 的名称。
  1. 创建 NetworkMap 清单来映射源和目标网络:

    $  cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: NetworkMap
    metadata:
      name: <network_map>
      namespace: <namespace>
    spec:
      map:
        - destination:
            name: <network_name>
            type: pod 
    1
    
          source:
            id: <source_network_id> 
    2
    
        - destination:
            name: <network_attachment_definition> 
    3
    
            namespace: <network_attachment_definition_namespace> 
    4
    
            type: multus
          source:
            id: <source_network_id>
      provider:
        source:
          name: <source_provider>
          namespace: <namespace>
        destination:
          name: <destination_provider>
          namespace: <namespace>
    EOF
    Copy to Clipboard Toggle word wrap
    1
    允许的值是 podmultus
    2
    指定 OVA 网络通用唯一 ID (UUID)。
    3
    为每个额外 OpenShift Virtualization 网络指定网络附加定义。
    4
    仅在 类型 multus 时才需要。指定 OpenShift Virtualization 网络附加定义的命名空间。
  1. 创建 StorageMap 清单来映射源和目标存储:

    $ cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: StorageMap
    metadata:
      name: <storage_map>
      namespace: <namespace>
    spec:
      map:
        - destination:
            storageClass: <storage_class>
            accessMode: <access_mode> 
    1
    
          source:
            name:  Dummy storage for source provider <provider_name> 
    2
    
      provider:
        source:
          name: <source_provider>
          namespace: <namespace>
        destination:
          name: <destination_provider>
          namespace: <namespace>
    EOF
    Copy to Clipboard Toggle word wrap
    1
    允许的值有 ReadWriteOnceReadWriteMany
    2
    对于 OVA,StorageMap 只能将 OVA 中的所有磁盘相关联的单个存储映射到目的地上的存储类。因此,存储在 UI 中被称为 "Dummy storage for source provider <provider_name>"。在 YAML 中,像上面显示一样编写短语,没有引号,并将 <provider_name> 替换为提供程序的实际名称。
  2. 可选:在 Plan CR 中指定的阶段创建一个 Hook 清单以在虚拟机中运行自定义代码:

    $  cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: Hook
    metadata:
      name: <hook>
      namespace: <namespace>
    spec:
      image: quay.io/kubev2v/hook-runner
      serviceAccount:<service account> 
    1
    
      playbook: |
        LS0tCi0gbm... 
    2
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    可选: Red Hat OpenShift 服务帐户。使用 serviceAccount 参数修改任何集群资源。
    2
    base64 编码的 Ansible Playbook.如果指定了 playbook,镜像 必须包含 ansible-runner
    注意

    您可以使用默认 hook-runner 镜像或指定自定义镜像。如果指定自定义镜像,则不需要指定 playbook。

  1. 输入以下命令为 MTV 迁移创建传输网络的网络附加定义(NAD)。

    您可以使用此定义为接口配置 IP 地址,可以从 Dynamic Host Configuration Protocol (DHCP)或静态方式配置。

    配置 IP 地址可让接口访问配置的网关。

    $ oc edit NetworkAttachmentDefinitions <name_of_the_NAD_to_edit>
    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: <name_of_transfer_network>
      namespace: <namespace>
      annotations:
        forklift.konveyor.io/route: <IP_address>
    Copy to Clipboard Toggle word wrap
  2. 为迁移创建 Plan 清单:

    $ cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: Plan
    metadata:
      name: <plan> 
    1
    
      namespace: <namespace>
    spec:
      provider:
        source:
          name: <source_provider>
          namespace: <namespace>
        destination:
          name: <destination_provider>
          namespace: <namespace>
      map: 
    2
    
        network: 
    3
    
          name: <network_map> 
    4
    
          namespace: <namespace>
        storage: 
    5
    
          name: <storage_map> 
    6
    
          namespace: <namespace>
      targetNamespace: <target_namespace>
      vms: 
    7
    
        - id: <source_vm1> 
    8
    
        - name: <source_vm2>
          hooks: 
    9
    
            - hook:
                namespace: <namespace>
                name: <hook> 
    10
    
              step: <step> 
    11
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    指定 Plan CR 的名称。
    2
    每个计划仅指定一个网络映射和一个存储映射。
    3
    指定网络映射,即使要迁移的虚拟机没有分配给网络。在这种情况下,映射可以为空。
    4
    指定 NetworkMap CR 的名称。
    5
    指定一个存储映射,即使要迁移的虚拟机没有使用磁盘镜像分配。在这种情况下,映射可以为空。
    6
    指定 StorageMap CR 的名称。
    7
    您可以使用 idname 参数指定源虚拟机。
    8
    指定 OVA 虚拟机 UUID。
    9
    可选:为虚拟机指定最多两个 hook。每个 hook 必须在不同的迁移步骤中运行。
    10
    指定 Hook CR 的名称。
    11
    在迁移完成后,允许的值是 PreHook、在迁移计划启动前或 PostHook
  3. 创建运行 Plan CR 的 Migration 清单:

    $ cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: Migration
    metadata:
      name: <name_of_migration_cr>
      namespace: <namespace>
    spec:
      plan:
        name: <name_of_plan_cr>
        namespace: <namespace>
      cutover: <optional_cutover_time>
    EOF
    Copy to Clipboard Toggle word wrap
    注意

    如果您指定了一个截止时间,请使用 ISO 8601 格式以及 UTC 时间偏移,例如 2024-04-04T01:23:45.678+09:00

11.6.1. 使用命令行界面取消迁移

您可以使用命令行界面(CLI)在迁移过程中取消整个迁移或特定虚拟机的迁移。

取消整个迁移

  • 删除 Migration CR:

    $ oc delete migration <migration> -n <namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 Migration CR 的名称。

取消特定虚拟机的迁移

  1. 将特定的虚拟机添加到 Migration 清单的 spec.cancel 块中:

    取消两个虚拟机的迁移的 YAML 示例

    $ cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: Migration
    metadata:
      name: <migration>
      namespace: <namespace>
    ...
    spec:
      cancel:
      - id: vm-102 
    1
    
      - id: vm-203
        name: rhel8-vm
    EOF
    Copy to Clipboard Toggle word wrap

    1
    您可以使用 id 键或 name 键指定虚拟机。

    id 键的值是受管对象的引用(VMware VM),或 VM UUID(RHV VM)。

  2. 检索 Migration CR 以监控剩余的虚拟机的进度:

    $ oc get migration/<migration> -n <namespace> -o yaml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat