您可以将虚拟机从 vSphere 导入 VMware Integrated OpenStack 部署,并像管理 OpenStack 实例一样进行管理。

此过程适用于使用 NSX-T Data Center 网络的部署。对于 VDSNSX Data Center for vSphere 部署,请参见具有 NSX Data Center for vSphere 的 VMware Integrated OpenStack

以下条件适用于导入的虚拟机:

  • 如果虚拟机有多个磁盘,非根磁盘将作为 Cinder 卷导入。
  • 导入虚拟机操作只能在 Nova 实例和特定实例之间设置链接。在导入期间,不会根据特定实例配置调整实例大小。

Integrated OpenStack Manager 工具箱中使用 Data Center Command-Line Interface (DCLI) 导入虚拟机。

过程

  1. VMware Integrated OpenStack 部署中,将包含所需虚拟机的集群添加为计算集群。
    有关说明,请参见 向部署中添加计算集群
  2. 记录每个网络适配器的 MAC 地址
    1. vSphere Client 中,打开主机和集群视图。
    2. 要导入虚拟机,请右键单击每个虚拟机,然后选择编辑设置...
    3. 展开网络适配器设置,并记录其 MAC 地址。
  3. 为虚拟机创建一个临时的含糊网络。
    • 对于 NSX-T 3.0,创建一个分段。请参见添加分段并记录添加的分段的名称。
    • 对于 NSX-T 3.2,创建一个分段。请参见添加分段并记录添加的分段的 ID。
      注: 您可以从 NSX-T 3.2 的 管理器 > 逻辑交换机视图中标识分段 ID。
  4. 通过 viocli update nova-compute 编辑 Nova 计算配置,添加 import_net_id 参数,并将其值设置为在步骤 5 中创建的分段的名称或 ID。
    viocli update nova-compute
    conf:
      nova_compute:
        vmware:
          import_net_id: name or id
    
    Note:
    For NSX-T 3.0, set its value to the name
    For NSX-T 3.2 or later, set its value to the id
  5. 创建多个使用虚拟机 vNIC 的 MAC 地址的 Neutron 端口。
    可以创建新的 Neutron 网络,也可以使用现有的 Neutron 网络。
    neutron net-create NAME --tenant-id project-id 
    neutron port-create network --name port --tenant-id project-id --mac-address vm-mac [--fixed-ip ip_address=vm-ip]
    注: 网络和端口的租户 ID 必须与导入虚拟机的租户 ID 相同。
    注: 要创建多个端口,必须重复执行 Neutron port create 命令。可以在同一个 Neutron 网络上创建这些端口,也可以在不同的 Neutron 网络上创建。此方案取决于虚拟机 vNIC 的连接要求。
    选项 说明

    network

    输入虚拟机将连接到的 Neutron 网络的名称。

    --name

    输入端口的名称。

    --tenant-id

    要创建端口,请指定项目的 UUID。

    --mac-address

    输入您在步骤 2d 中记录的虚拟机网络适配器的 MAC 地址。

    --fixed-ip (optional)

    输入虚拟机的 IP 地址。

  6. 打开工具箱并连接到 VMware Integrated OpenStack vAPI 端点。

    该端点位于部署的专用 OpenStack 端点。

    dcli +server https://internal-vip:9449/api +i
    注: 执行命令时,DCLI 会提示您输入 vCenter Server 实例的管理员凭据。为避免每次都输入用户名和密码,可以保存这些凭据。
  7. 将虚拟机导入 VMware Integrated OpenStack
    选项 说明

    --vm

    输入虚拟机的受管对象标识符 (MOID)。

    可以通过运行 com vmware vio vm unmanaged list 命令查看所有非受管虚拟机的 MOID。

    --nics

    以 JSON 格式输入虚拟机 vNIC 的键-值对数组。

    --nic-net-id

    输入虚拟机所连接到的 Neutron 网络的 UUID。

    --nic-port-id

    输入您为虚拟机创建的端口的 UUID。

    --tenant

    指定要将虚拟机导入其中的 OpenStack 项目。

    如果不包括此参数,则默认情况下使用 import_service 项目。

    --root-disk

    对于具有多个磁盘的虚拟机,请按以下格式指定根磁盘数据存储路径:--root-disk '[datastore1] dir/disk_1.vmdk'

    --vcenter

    在多 vCenter 的 VIO 环境中输入 vcenter obj name

    --cinder-az

    用于导入磁盘的 Cinder 可用区

    --default-volume-type

    已导入卷的默认卷类型 ID

    --flavor

    存储在 NOVA 实例元数据中的特定实例 ID

    --volume-type

    磁盘路径和卷类型映射信息

    • 单vCenter部署
    1. 要使用单个 vNIC 和磁盘将虚拟机导入 VIO,请使用以下命令:
      com vmware vio vm unmanaged importvm --vm vm-moid --nic-net-id network-uuid --nic-port-id port-uuid [--tenant project-name] [--root-disk root-disk-path]
    2. 要使用多个 vNIC 和单个磁盘将虚拟机导入 VIO,请使用以下命令:
      com vmware vio vm unmanaged importvm --vm vm-moid --nics '[{"port_id": "port1_uuid"}, {"port_id": "port2_uuid"}]' " 
      例如:
      com vmware vio vm unmanaged importvm --vm vm-88 --tenant admin --nics '[{"port_id": "41fa621e-89d6-493f-876c-ed052905042d"}, {"port_id": "e97c74e9-e930-4837-a6d2-33bd065d8e32"}]'
      注: 在导入过程中,端口会使用相应的 MAC 地址自动绑定到 vNIC。
    3. 要将虚拟机导入到配置了多个磁盘的 VIO,请使用以下命令:
      com vmware vio vm unmanaged importvm --vm vm-moid --root-disk 'root-disk-path' --nics '[{"port_id":"port1_uuid"}]'  --default-volume-type 'volumetye_uuid'
      注: 卷类型可以通过 openstack volume type create <name> 创建,每个磁盘可以指定不同或相同的卷类型。
      例如:
      com vmware vio vm unmanaged importvm --vm vm-33574 --root-disk '[vsanDatastore (1)] ab61b663-a6ac-249f-6c81-bc97e1d51910/imp-002_2.vmdk' --nics '[{"port_id":"dae27a0d-b9b7-4801-ae1c-12333fe21241"}]'  --default-volume-type 'e35d1605-4808-48e2-a940-f5f66eb55b8c' --flavor 9a0248cd-3b51-4626-8f9a-0090fa4a146e --tenant admin --image bc16f0f8-518d-4fc8-a7fe-1314f55dd3cc
    • 多 vCenter 部署
    1. 要将虚拟机导入到具有多 vCenter 的 VIO,请使用以下命令:
      com vmware vio vm unmanaged importvm --vm vm-moid --nics '[{"port_id": "port1_uuid"}, {"port_id": "port2_uuid"}]' --vcenter vcenter_obj

      例如:

      com vmware vio vm unmanaged importvm --vm vm-88 --tenant admin --nics '[{"port_id": "41fa621e-89d6-493f-876c-ed052905042d"}, {"port_id": "e97c74e9-e930-4837-a6d2-33bd065d8e32"}]' --vcenter vcenter2
      注:
      • VIO 环境中的 vcenter_obj 列表可通过执行命令 kubectl -n openstack get vioshim vioadmin1 -o json | jq .status.processedSpec.conf.vioshim.DEFAULT.enabled_backends 获取
      • 如果未添加 --vcenter 选项,则默认 vCenter 是管理 vCenter。
    2. 要将虚拟机导入到配置了多个磁盘的 VIO,必须在不同的 vCenter 中使用不同的可用区名称配置 Cinder 集群,并指定 --cinder-az 选项。
      com vmware vio vm unmanaged importvm --vm vm-60 --tenant admin --nics '[{"port_id": "cc1bba10-1e9b-4818-baa9-6b416738bfb1"}]' --vcent
      er vcenter2 --flavor da10460e-7174-457b-86dd-f8b2b10a578a --root-disk '[vdnetSharedStorage] test-import7/test-import7_2.vmdk' --volume-type
       '[{"disk_path": "[vdnetSharedStorage] test-import7/test-import7.vmdk", "type_id": "3eaeee82-aae5-4803-a3a9-de6cd84e30db"}]' --cinder-aznova1
      
  8. 对于特定实例部分,记录现有特定实例类型的 ID。
  9. 根据特定实例类型将虚拟机导入到 VIO。
    com vmware vio vm unmanaged importvm --vm vm-moid --nic -net-id network-uuid --nic -port-id port-uuid --flavor flavor-uuid --tenant project-name
    例如:
    com vmware vio vm unmanaged importvm --vm vm-109 --nic -net-id e10b0037-6705-46d8-a8c5-20fbfdc1598d --nic -port-id be9bb062-d7b3-47f7-8566-f7b1f1c6ce2d --flavor 256ac8d6-6fb1-4434-a007-bb6db6837e5a --tenant admin

结果

导入后,指定的虚拟机将位于 OpenStack 部署中,可以将其作为 OpenStack 实例进行管理。