您可以将虚拟机从 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) 导入虚拟机。
前提条件
要导入虚拟机,请确认它们位于同一 vCenter Server 实例中。
过程
- 在 VMware Integrated OpenStack 部署中,将包含所需虚拟机的集群添加为计算集群。
有关说明,请参见 向部署中添加计算集群。
- 将虚拟机连接到 Neutron 网络。
在此过程中,可以使用提供商网络或租户网络。
- 在 vSphere Client 中,打开主机和集群视图。
- 要导入虚拟机,请右键单击每个虚拟机,然后选择编辑设置...。
- 从网络适配器旁边的下拉菜单中选择 Neutron 网络。
- 展开网络适配器设置,并记录其 MAC 地址。
- 导入虚拟机后,要将虚拟机的多个 vNIC 连接到不同的 Neutron 网络,必须从 VMware Integrated OpenStack 创建相应的 Neutron 网络。
- 将未导入的虚拟机 vNIC 从 vCenter Server 连接到相应的 Neutron 网络(NSXT 分段)。
注: 可以将多个 vNIC 连接到同一个 Neutron 网络,也可以连接到不同的 Neutron 网络。
- 为虚拟机创建一个临时的含糊网络。
- 对于 NSX-T 2.5,创建一个逻辑交换机。请参见《NSX-T Data Center 管理指南》中的“创建逻辑交换机”,然后执行以下步骤以获取逻辑交换机 ID。
- 在逻辑交换机列中,单击要创建的交换机的名称。
- 记录概览列中显示的交换机 ID。
- 对于 NSX-T 3.0,创建一个分段。按照《NSX-T Data Center 管理指南》中的“添加分段”中的说明进行操作,然后记录添加的分段的名称。
- 对于 NSX-T 3.2,创建一个分段。按照《NSX-T Data Center 管理指南》中的“添加分段”中的说明进行操作,然后记录添加的分段的 ID。
注: 您可以从 NSX-T 3.2 的菜单 管理器 > 逻辑交换机视图中标识分段 ID。
- 对于 NSX-T 2.5,创建一个逻辑交换机。请参见《NSX-T Data Center 管理指南》中的“创建逻辑交换机”,然后执行以下步骤以获取逻辑交换机 ID。
- 通过
viocli update nova-compute
编辑 Nova 计算配置,添加 import_net_id 参数,并将其值设置为在步骤 5 中创建的分段的名称或 ID。viocli update nova-compute
- 创建多个使用虚拟机 vNIC 的 MAC 地址的 Neutron 端口。
neutron port-create network --name port --tenant-id project-id --mac-address vm-mac [--fixed-ip ip_address=vm-ip]
注: 要创建多个端口,必须重复执行 Neutron port create 命令。可以在同一个 Neutron 网络上创建这些端口,也可以在不同的 Neutron 网络上创建。此方案取决于虚拟机 vNIC 的连接要求。选项 说明 network
输入虚拟机所连接到的 Neutron 网络的名称。
--name
输入端口的名称。
--tenant-id
要创建端口,请指定项目的 UUID。
--mac-address
输入您在步骤 2d 中记录的虚拟机网络适配器的 MAC 地址。
--fixed-ip
输入虚拟机的 IP 地址。
如果不希望保留现有的 IP 地址,或者如果虚拟机没有 IP 地址,则可以省略此参数。
- 连接到 VMware Integrated OpenStack vAPI 端点。
该端点位于部署的专用 OpenStack 端点。
dcli +server https://internal-vip:9449/api +i
- 将虚拟机导入 VMware Integrated OpenStack。
- 要使用单个 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。 - 要将虚拟机导入到配置了多 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 环境中的
选项 说明 --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
在 VIO 环境中输入
vcenter obj name
--cinder-az
用于导入磁盘的 Cinder 可用区
--default-volume-type
已导入卷的默认卷类型 ID
--flavor
存储在 NOVA 实例元数据中的特定实例 ID
--volume-type
磁盘路径和卷类型映射信息
注: 执行命令时,DCLI 会提示您输入 vCenter Server 实例的管理员凭据。为避免每次都输入用户名和密码,可以保存这些凭据。 - 要使用单个 vNIC 将虚拟机导入 VIO,请使用以下命令:
- 对于卷类型,从 VMware Integrated OpenStack 创建所需的多个卷类型,并记录卷类型的 ID。
openstack volume type create vol-type-ssd
- 根据卷类型将虚拟机导入到 VIO。
- 使用默认卷类型导入虚拟机。
例如,可以使用以下命令:
"com vmware vio vm unmanaged importvm --vm vm-183 --root-disk '[vdnetSharedStorage] 2nic-001/2nic-001.vmdk' --nics '[{"port_id":"5b8f18e7-f77b-457f-9618-4dcb5fccb833"}, {"port_id": "96a26fe8-1458-4a25-ba85-9a7dcaac88fe"}]' --default-volume-type '059c97ce-f5ef-47fa-8552-1c7eeeac058b' --flavor 0a3cf2a0-754c-4a64-9ce5-a9eb2ef34e0c --tenant admin"
- 要通过为每个磁盘指定卷类型导入虚拟机,请使用以下命令:
com vmware vio vm unmanaged importvm --vm vm-moid --nic -net-id network-uuid --nic -port-id port-uuid --tenant project-name --volume-type '[{"disk_path":"[datastore1] dir/disk_1.vmdk", "type_id": "volume-type1-uuid"}, {"disk_path":"[datastore1] dir/disk_2.vmdk", "type_id": "volume-type2-uuid"}]' "
例如: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 --volume-type [{"disk_path":"[datastore1] dir/disk_1.vmdk", "type_id": "096ef8ea-85ca-40f4-ba7f-9637f5fe95d2"}, {"disk_path":"[datastore1] dir/disk_2.vmdk", "type_id": "9969dd48-23dc-4010-a852-716f173fd59b"}]' --tenant admin
- 使用默认卷类型导入虚拟机。
- 对于特定实例部分,记录现有特定实例类型的 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