您可以将虚拟机从 vSphere 导入 VMware Integrated OpenStack 部署,并像管理 OpenStack 实例一样进行管理。
此过程适用于使用 NSX-T Data Center 网络的部署。对于 VDS 或 NSX Data Center for vSphere 部署,请参见具有 NSX Data Center for vSphere 的 VMware Integrated OpenStack。
以下条件适用于导入的虚拟机:
- 如果虚拟机有多个磁盘,非根磁盘将作为 Cinder 卷导入。
- 导入虚拟机操作只能在 Nova 实例和特定实例之间设置链接。在导入期间,不会根据特定实例配置调整实例大小。
在 Integrated OpenStack Manager 工具箱中使用 Data Center Command-Line Interface (DCLI) 导入虚拟机。
过程
- 在 VMware Integrated OpenStack 部署中,将包含所需虚拟机的集群添加为计算集群。
有关说明,请参见 向部署中添加计算集群。
- 记录每个网络适配器的 MAC 地址
- 在 vSphere Client 中,打开主机和集群视图。
- 要导入虚拟机,请右键单击每个虚拟机,然后选择编辑设置...。
- 展开网络适配器设置,并记录其 MAC 地址。
- 为虚拟机创建一个临时的含糊网络。
- 通过
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
- 创建多个使用虚拟机 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 地址。
- 打开工具箱并连接到 VMware Integrated OpenStack vAPI 端点。
该端点位于部署的专用 OpenStack 端点。
dcli +server https://internal-vip:9449/api +i
注: 执行命令时,DCLI 会提示您输入 vCenter Server 实例的管理员凭据。为避免每次都输入用户名和密码,可以保存这些凭据。 - 将虚拟机导入 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部署
- 要使用单个 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]
- 要使用多个 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。 - 要将虚拟机导入到配置了多个磁盘的 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 部署
- 要将虚拟机导入到具有多 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。
- VIO 环境中的
- 要将虚拟机导入到配置了多个磁盘的 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
- 对于特定实例部分,记录现有特定实例类型的 ID。
- 根据特定实例类型将虚拟机导入到 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