第 5 章 从命令行迁移虚拟机
您可以使用命令行将虚拟机迁移到 OpenShift Virtualization。
-
您必须以具有
cluster-admin权限的用户身份登录。 - 仅 VMware:您必须拥有最少的 VMware 权限集合。
- 仅 VMware:您必须具有 vCenter SHA-1 指纹。
- 仅 VMware:您必须创建一个 VMware Virtual Disk Development Kit(VDDK) 镜像。
- 您必须确保满足所有先决条件。
5.1. 迁移虚拟机 复制链接链接已复制到粘贴板!
您可以通过创建 MTV 自定义资源(CR)从命令行(CLI)迁移虚拟机。
您必须为集群范围的 CR 指定一个名称。
您必须为命名空间范围 CR 指定名称和命名空间。
先决条件
-
您必须以具有
cluster-admin权限的用户身份登录。 - 仅 VMware:在所有集群可以访问的安全 registry 中必须有 VMware Virtual Disk Development Kit(VDDK)镜像。
流程
为源供应商凭证创建
Secret清单:$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: openshift-mtv type: Opaque stringData: user: <user>1 password: <password>2 cacert: |3 <engine_ca_certificate> thumbprint: <vcenter_fingerprint>4 EOF为源供应商创建
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。
- 8
- 可选:为虚拟机指定最多两个 hook。每个 hook 必须在不同的迁移步骤中运行。
- 9
- 指定
HookCR 的名称。 - 10
- 在迁移完成后,允许的值为
PreHook(migation 计划启动或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