第 5 章 从命令行迁移虚拟机
您可以使用命令行将虚拟机迁移到 OpenShift Virtualization。
- 仅 VMware:您必须拥有最少的 VMware 权限集合。
- 仅 VMware:您必须具有 vCenter SHA-1 指纹。
- 仅 VMware:您必须创建一个 VMware Virtual Disk Development Kit(VDDK) 镜像。
- 您必须确保满足所有先决条件。
5.1. 迁移虚拟机 复制链接链接已复制到粘贴板!
您可以通过创建 MTV 自定义资源(CR)从命令行(CLI)迁移虚拟机。
您必须为集群范围的 CR 指定一个名称。
您必须为命名空间范围 CR 指定名称和命名空间。
作为技术预览,MTV 支持使用 OpenStack 源供应商的迁移。
使用 OpenStack 源供应商进行迁移只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
使用 OpenStack 源提供程序进行迁移只支持仅使用 Cinder 卷的虚拟机。
先决条件
- 仅 VMware:在所有集群可以访问的安全 registry 中必须有 VMware Virtual Disk Development Kit(VDDK)镜像。
流程
为源供应商凭证创建
Secret清单:$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: openshift-mtv ownerReferences:1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: <provider_type>2 type: Opaque stringData: user: <user>3 password: <password>4 insecureSkipVerify: <true/false>5 domainName: <domain_name>6 projectName: <project_name>7 regionName: <region name>8 cacert: |9 <ca_certificate> url: <api_end_point>10 thumbprint: <vcenter_fingerprint>11 EOF- 1
ownerReferences部分是可选的。- 2
- 指定源供应商的类型。允许的值有
ovirt、vsphere和openstack。当访问远程系统时,需要此标签来验证凭据是否正确,并在指定第三方证书时检索 Manager CA 证书。 - 3
- 指定 vCenter 用户、RHV Manager 用户或 OpenStack 用户。
- 4
- 指定用户密码。
- 5
- 指定
<true> 来跳过证书验证,它会进行不安全的迁移,然后不需要证书。不安全的迁移意味着传输的数据通过不安全的连接发送,并可能会公开潜在的敏感数据。指定 <false> 验证证书。 - 6
- 仅 OpenStack:指定域名。
- 7
- 仅 OpenStack:指定项目名称。
- 8
- 仅 OpenStack:指定 OpenStack 区域的名称。
- 9
- 仅 RHV 和 OpenStack:对于 RHV,请输入 Manager CA 证书,除非被第三方证书替代,在这种情况下,输入 Manager Apache CA 证书。您可以在 https://<engine_host>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA 中检索 Manager CA 证书。对于 OpenStack,请输入用于连接到源环境的 CA 证书。当
insecureSkipVerify设置为 <true> 时,不使用该证书。 - 10
- 指定 API 端点 URL,例如
https://<vCenter_host>/sdk用于 vSphere、https://<engine_host>/ovirt-engine/api/用于 RHV,或 OpenStack 的https://<identity_service>/v3。 - 11
- 仅 VMware:指定 vCenter SHA-1 指纹。
为源供应商创建
Provider清单:$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <provider> namespace: openshift-mtv spec: type: <provider_type>1 url: <api_end_point>2 settings: vddkInitImage: <registry_route_or_server_path>/vddk:<tag>3 secret: name: <secret>4 namespace: openshift-mtv EOF仅限 VMware:创建一个
Host清单:$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Host metadata: name: <vmware_host> namespace: openshift-mtv spec: provider: namespace: openshift-mtv name: <source_provider>1 id: <source_host_mor>2 ipAddress: <source_network_ip>3 EOF创建
NetworkMap清单来映射源和目标网络:$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: openshift-mtv spec: map: - destination: name: <pod> namespace: openshift-mtv type: pod1 source:2 id: <source_network_id>3 name: <source_network_name> - destination: name: <network_attachment_definition>4 namespace: <network_attachment_definition_namespace>5 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF创建
StorageMap清单来映射源和目标存储:$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: openshift-mtv spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>1 source: id: <source_datastore>2 - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_datastore> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF可选:在
PlanCR 中指定的阶段创建一个Hook清单以在虚拟机中运行自定义代码:$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: openshift-mtv spec: image: quay.io/konveyor/hook-runner1 playbook: |2 LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF为迁移创建
Plan清单:$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>1 namespace: openshift-mtv spec: warm: true2 provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv map: network:3 name: <network_map>4 namespace: openshift-mtv storage: name: <storage_map>5 namespace: openshift-mtv targetNamespace: openshift-mtv vms:6 - id: <source_vm>7 - name: <source_vm> hooks:8 - hook: namespace: openshift-mtv name: <hook>9 step: <step>10 EOF- 1
- 指定
PlanCR 的名称。 - 2
- 指定迁移是温迁移还是冷迁移。如果您指定了 warm 迁移,且没有为
Migration清单中的cutover参数指定一个值,则只有 precopy 阶段将运行。 - 3
- 您可以添加多个网络映射。
- 4
- 指定
NetworkMapCR 的名称。 - 5
- 指定
StorageMapCR 的名称。 - 6
- 您可以使用
id或name参数来指定源虚拟机。 - 7
- 指定 VMware VM MOR、RHV VM UUID 或 OpenStack VM UUID。
- 8
- 可选:为虚拟机指定最多两个 hook。每个 hook 必须在不同的迁移步骤中运行。
- 9
- 指定
HookCR 的名称。 - 10
- 在迁移完成后,允许的值是
PreHook(迁移计划启动或PostHook)。
创建运行
PlanCR 的Migration清单:$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration>1 namespace: openshift-mtv spec: plan: name: <plan>2 namespace: openshift-mtv cutover: <cutover_time>3 EOF您可以将多个
MigrationCR 与一个PlanCR 关联。如果迁移没有完成,您可以在不更改PlanCR 的情况下创建新的MigrationCR,以迁移剩余的虚拟机。检索
MigrationCR 以监控迁移的进度:$ oc get migration/<migration> -n openshift-mtv -o yaml