5장. 명령줄에서 가상 머신 마이그레이션
명령줄에서 가상 머신을 OpenShift Virtualization으로 마이그레이션할 수 있습니다.
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다. - VMware만 해당: 최소한의 VMware 권한 집합이 있어야 합니다.
- VMware만 해당: vCenter SHA-1 지문이 있어야 합니다.
- VMware만 해당: VMware VDDK(가상 디스크 개발 키트) 이미지를 생성해야 합니다.
- 모든 사전 요구 사항이 충족되었는지 확인해야 합니다.
5.1. 가상 머신 마이그레이션
MTV CR(사용자 정의 리소스)을 생성하여 CLI(명령줄)에서 VM(가상 머신)을 마이그레이션합니다.
클러스터 범위 CR의 이름을 지정해야 합니다.
네임스페이스 범위 CR에 이름과 네임스페이스를 모두 지정해야 합니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다. - VMware만 해당: 모든 클러스터에서 액세스할 수 있는 보안 레지스트리에 VMware VDDK(가상 디스크 개발 키트) 이미지가 있어야 합니다.
절차
소스 공급자 인증 정보에 대한
Secret
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: openshift-mtv type: Opaque stringData: user: <user> password: <password> cacert: | <engine_ca_certificate> thumbprint: <vcenter_fingerprint> EOF
$ 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
소스 공급자에 대한
공급자
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <provider> namespace: openshift-mtv spec: type: <provider_type> url: <api_end_point> settings: vddkInitImage: <registry_route_or_server_path>/vddk:<tag> secret: name: <secret> namespace: openshift-mtv EOF
$ 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만 해당:
호스트
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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> id: <source_host_mor> ipAddress: <source_network_ip> EOF
$ 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
네트워크 맵
매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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: pod source: id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> 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
$ 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: pod
1 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
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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> source: id: <source_datastore> - 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
$ 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
선택 사항:
계획
CR에 지정된 단계에서 VM에서 사용자 정의 코드를 실행하도록후크
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: openshift-mtv spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: openshift-mtv spec: image: quay.io/konveyor/hook-runner
1 playbook: |
2 LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
마이그레이션에 대한
계획
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> namespace: openshift-mtv spec: warm: true provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv map: network: name: <network_map> namespace: openshift-mtv storage: name: <storage_map> namespace: openshift-mtv targetNamespace: openshift-mtv vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: openshift-mtv name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: openshift-mtv spec: warm: true
2 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
Plan
CR의 이름을 지정합니다.- 2
- 마이그레이션이 웜인지 콜드인지 지정합니다. 마이그레이션 매니페스트에서
cutover
매개변수 값을 지정하지 않고 웜마이그레이션
을 지정하면 사전 복사 단계만 실행됩니다. - 3
- 여러 네트워크 매핑을 추가할 수 있습니다.
- 4
NetworkMap
CR의 이름을 지정합니다.- 5
StorageMap
CR의 이름을 지정합니다.- 6
id
또는name
매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 7
- VMware VM MOR 또는 RHV VM UUID를 지정합니다.
- 8
- 선택 사항: VM에 후크를 최대 2개까지 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 9
후크
CR의 이름을 지정합니다.- 10
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
입니다. 마이그레이션이 완료된 후PostHook
입니다.
계획
CR을 실행할마이그레이션
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration> namespace: openshift-mtv spec: plan: name: <plan> namespace: openshift-mtv cutover: <cutover_time> EOF
$ 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
여러
마이그레이션
CR을 단일계획
CR과 연결할 수 있습니다. 마이그레이션이 완료되지 않으면Plan
CR을 변경하지 않고 새Migration
CR을 생성하여 나머지 VM을 마이그레이션할 수 있습니다.Migration
CR을 검색하여 마이그레이션의 진행 상황을 모니터링합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get migration/<migration> -n openshift-mtv -o yaml
$ oc get migration/<migration> -n openshift-mtv -o yaml