Migration Toolkit for Virtualization 설치 및 사용
VMware vSphere 또는 Red Hat Virtualization에서 Red Hat OpenShift Virtualization으로 마이그레이션
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
1장. Migration Toolkit for Virtualization 정보
MCP(Migration Toolkit for Virtualization)를 사용하여 다음 소스 공급자에서 OpenShift Virtualization 대상 공급자로 가상 머신을 마이그레이션할 수 있습니다.
- VMware vSphere
- RHV(Red Hat Virtualization)
- OpenStack
- VMware vSphere에서 생성한 오픈 가상 어플라이언스(OVA)
- 원격 OpenShift Virtualization 클러스터
소스 공급자로 하나 이상의 OVA(Open Virtual VolumeSnapshot) 파일을 사용하는 마이그레이션은 기술 프리뷰입니다.
소스 공급자로서 하나 이상의 OVA(Open Virtual Appliance) 파일을 사용하는 마이그레이션은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/를 참조하십시오.
OpenStack 소스 공급자를 사용한 마이그레이션은 Cinder 볼륨만 사용하는 VM만 지원합니다.
추가 리소스
1.1. 콜드 및 웜 마이그레이션 정보
MTV는 다음에서 콜드 마이그레이션을 지원합니다.
- VMware vSphere
- RHV(Red Hat Virtualization)
- OpenStack
- 원격 OpenShift Virtualization 클러스터
MTV는 VMware vSphere 및 RHV에서 웜 마이그레이션을 지원합니다.
OpenStack 소스 공급자를 사용한 마이그레이션은 Cinder 볼륨만 사용하는 VM만 지원합니다.
1.1.1. 콜드 마이그레이션
콜드 마이그레이션은 기본 마이그레이션 유형입니다. 데이터가 복사되는 동안 소스 가상 머신이 종료됩니다.
1.1.2. 웜 마이그레이션
대부분의 데이터는 사전 복사 단계에서 복사되며 소스 VM(가상 머신)이 실행 중입니다.
그런 다음 VM이 종료되고 나머지 데이터가 컷오버 단계에서 복사됩니다.
Precopy 단계
사전 복사 단계에서 VM이 종료되지 않습니다.
VM 디스크는 변경된 블록 추적(CBT) 스냅샷을 사용하여 증분적으로 복사됩니다. 스냅샷은 기본적으로 1시간 간격으로 생성됩니다. forklift-controller
배포를 업데이트하여 스냅샷 간격을 변경할 수 있습니다.
각 소스 VM 및 각 VM 디스크에 대해 CBT를 활성화해야 합니다.
VM은 최대 28개의 CBT 스냅샷을 지원할 수 있습니다. 소스 VM에 CBT 스냅샷이 너무 많고 Migration Controller
서비스가 새 스냅샷을 생성할 수 없는 경우 웜 마이그레이션이 실패할 수 있습니다. Migration Controller
서비스는 스냅샷이 더 이상 필요하지 않은 경우 각 스냅샷을 삭제합니다.
사전 복사 단계는 컷오버 단계가 수동으로 시작되거나 시작되도록 예약될 때까지 실행됩니다.
컷오버 단계
VM은 컷오버 단계에서 종료되고 나머지 데이터가 마이그레이션됩니다. RAM에 저장된 데이터는 마이그레이션되지 않습니다.
MTV 콘솔을 사용하여 컷오버 단계를 수동으로 시작하거나 마이그레이션
매니페스트에서 컷오버 시간을 예약할 수 있습니다.
2장. 사전 요구 사항
다음 사전 요구 사항을 검토하여 환경에서 마이그레이션할 준비가 되었는지 확인합니다.
2.1. 소프트웨어 요구 사항
호환되는 Red Hat OpenShift 및 OpenShift Virtualization 버전을 설치해야 합니다.
2.2. 스토리지 지원 및 기본 모드
MTV는 지원되는 스토리지에 다음과 같은 기본 볼륨 및 액세스 모드를 사용합니다.
프로비저너 | 볼륨 모드 | 액세스 모드 |
---|---|---|
kubernetes.io/aws-ebs | 블록 | ReadWriteOnce |
kubernetes.io/azure-disk | 블록 | ReadWriteOnce |
kubernetes.io/azure-file | 파일 시스템 | ReadWriteMany |
kubernetes.io/cinder | 블록 | ReadWriteOnce |
kubernetes.io/gce-pd | 블록 | ReadWriteOnce |
kubernetes.io/hostpath-provisioner | 파일 시스템 | ReadWriteOnce |
manila.csi.openstack.org | 파일 시스템 | ReadWriteMany |
openshift-storage.cephfs.csi.ceph.com | 파일 시스템 | ReadWriteMany |
openshift-storage.rbd.csi.ceph.com | 블록 | ReadWriteOnce |
kubernetes.io/rbd | 블록 | ReadWriteOnce |
kubernetes.io/vsphere-volume | 블록 | ReadWriteOnce |
OpenShift Virtualization 스토리지에서 동적 프로비저닝 을 지원하지 않는 경우 다음 설정을 적용해야 합니다.
파일 시스템
볼륨 모드파일 시스템
볼륨 모드가블록
볼륨 모드보다 느립니다.ReadWriteOnce
액세스 모드ReadWriteOnce
액세스 모드는 실시간 가상 머신 마이그레이션을 지원하지 않습니다.
스토리지 프로필 편집에 대한 자세한 내용은 정적으로 프로비저닝된 스토리지 클래스 활성화를 참조하십시오.
마이그레이션에서 EXT4 파일 시스템으로 생성된 블록 스토리지 및 영구 볼륨을 사용하는 경우 CDI의 파일 시스템 오버헤드를 10% 이상으로 늘립니다. CDI에서 가정하는 기본 오버헤드에는 루트 파티션의 예약된 위치가 완전히 포함되지 않습니다. CDI의 파일 시스템 오버헤드를 이 용량으로 늘리지 않으면 마이그레이션이 실패할 수 있습니다.
OpenStack에서 마이그레이션하거나 RHV에서 MTV가 배포된 OCP 클러스터로 콜드 마이그레이션을 실행하는 경우 마이그레이션은 CDI 없이 영구 볼륨을 할당합니다. 이러한 경우 파일 시스템 오버헤드를 조정해야 할 수 있습니다.
기본값이 10%인 구성된 파일 시스템 오버헤드가 너무 낮으면 공간 부족으로 인해 디스크 전송이 실패합니다. 이러한 경우 파일 시스템 오버헤드를 늘리려고 합니다.
그러나 경우에 따라 스토리지 사용을 줄이기 위해 파일 시스템 오버헤드를 줄일 수 있습니다.
2.3. 네트워크 사전 요구 사항
다음 사전 요구 사항은 모든 마이그레이션에 적용됩니다.
- IP 주소, VLAN 및 기타 네트워크 구성 설정은 마이그레이션 전이나 마이그레이션 중에 변경할 수 없습니다. 마이그레이션 중에 가상 머신의 MAC 주소는 유지됩니다.
- 소스 환경, OpenShift Virtualization 클러스터 및 복제 리포지토리 간의 네트워크 연결은 안정적이고 중단되지 않아야 합니다.
- 둘 이상의 소스 및 대상 네트워크를 매핑하는 경우 추가 대상 네트워크에 대한 네트워크 연결 정의를 생성해야 합니다.
2.3.1. 포트
방화벽은 다음 포트를 통한 트래픽을 활성화해야 합니다.
포트 | 프로토콜 | 소스 | 대상 | 목적 |
---|---|---|---|---|
443 | TCP | OpenShift 노드 | VMware vCenter | VMware 공급자 인벤토리 디스크 전송 인증 |
443 | TCP | OpenShift 노드 | VMware ESXi 호스트 | 디스크 전송 인증 |
902 | TCP | OpenShift 노드 | VMware ESXi 호스트 | 디스크 전송 데이터 사본 |
포트 | 프로토콜 | 소스 | 대상 | 목적 |
---|---|---|---|---|
443 | TCP | OpenShift 노드 | RHV 엔진 | RHV 공급자 인벤토리 디스크 전송 인증 |
443 | TCP | OpenShift 노드 | RHV 호스트 | 디스크 전송 인증 |
54322 | TCP | OpenShift 노드 | RHV 호스트 | 디스크 전송 데이터 사본 |
2.4. 소스 가상 머신 사전 요구 사항
다음 사전 요구 사항은 모든 마이그레이션에 적용됩니다.
- ISO/CDROM 디스크를 마운트 해제해야 합니다.
- 각 NIC에는 하나의 IPv4 및/또는 하나의 IPv6 주소가 포함되어야 합니다.
- VM 운영 체제는 OpenShift Virtualization에서 게스트 운영 체제로 사용하기 위해 인증 및 지원되어야 합니다.
-
VM 이름에는 소문자(
a-z
), 숫자(0-9
) 또는 하이픈(-
)만 최대 253자까지 포함되어야 합니다. 첫 문자와 마지막 문자는 영숫자여야 합니다. 이름에는 대문자, 공백, 마침표(.
) 또는 특수 문자가 포함되어서는 안 됩니다. VM 이름은 OpenShift Virtualization 환경에서 VM의 이름을 복제해서는 안 됩니다.
참고Migration Toolkit for Virtualization은 규칙을 준수하지 않는 VM에 새 이름을 자동으로 할당합니다.
Migration Toolkit for Virtualization에서는 새 VM 이름을 자동으로 생성할 때 다음과 같이 변경합니다.
- 제외된 문자가 제거됩니다.
- 대문자는 소문자로 전환됩니다.
-
밑줄(
_
)은 대시(-
)로 변경됩니다.
이 기능을 사용하면 규칙을 따르지 않는 VM 이름을 입력한 경우에도 마이그레이션이 원활하게 진행할 수 있습니다.
2.5. Red Hat Virtualization 사전 요구 사항
다음 사전 요구 사항이 Red Hat Virtualization 마이그레이션에 적용됩니다.
- 호환되는 Red Hat Virtualization 버전을 사용해야 합니다.
타사 인증서로 대체되지 않은 경우 Manager CA 인증서가 있어야 합니다. 이 경우 Manager Apache CA 인증서를 지정합니다.
브라우저에서
https://<engine_host>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA로 이동하여 Manager CA
인증서를 가져올 수 있습니다.- 직접 LUN 디스크를 사용하여 가상 머신을 마이그레이션하는 경우 VM을 실행할 것으로 예상되는 OpenShift Virtualization 대상 클러스터의 노드가 백엔드 스토리지에 액세스할 수 있는지 확인합니다.
- 소스 공급자에서 대상 공급자로 복사 되는 디스크 이미지와 달리 LUN은 소스 공급자의 가상 머신에서분리되지만 제거되지 않은 다음 대상 공급자에 생성된 가상 머신(VM)에 연결됩니다.
- 소스 공급자에 대한 대체가 필요한 경우 마이그레이션 중에 원본 공급자에서 LUN을 제거하지 않습니다. 그러나 소스 공급자의 VM에 LUN을 다시 연결하기 전에 대상 환경의 VM에서 LUN을 사용하지 않도록 하여 데이터 손상이 발생할 수 있습니다.
- 파이버 채널 LUN의 마이그레이션은 지원되지 않습니다.
2.6. OpenStack 사전 요구 사항
다음 사전 요구 사항이 OpenStack 마이그레이션에 적용됩니다.
- 호환되는 OpenStack 버전을 사용해야 합니다.
OpenStack 소스 공급자를 사용한 마이그레이션은 Cinder 볼륨만 사용하는 VM만 지원합니다.
2.6.1. OpenStack 소스 공급자를 통한 마이그레이션에 대한 추가 인증 방법
MTV 버전 2.5 이상에서는 표준 사용자 이름 및 암호 인증 정보 세트 외에 OpenStack 소스 공급자와의 마이그레이션에 다음과 같은 인증 방법을 지원합니다.
- 토큰 인증
- 애플리케이션 인증 정보 인증
이러한 방법을 사용하여 Secret
매니페스트를 준비하는 방법을 제외하고 CLI를 사용하여 다른 가상 머신을 마이그레이션하는 것과 동일한 방식으로 OpenStack 소스 공급자가 있는 가상 머신을 마이그레이션할 수 있습니다.
2.6.1.1. OpenStack 소스 공급자에서 토큰 인증 사용
OpenStack 소스 공급자를 생성할 때 사용자 이름 및 암호 인증 대신 토큰 인증을 사용할 수 있습니다.
MTV는 다음 두 가지 유형의 토큰 인증을 지원합니다.
- 사용자 ID가 있는 토큰
- 사용자 이름이 있는 토큰
각 유형의 토큰 인증에 대해 OpenStack의 데이터를 사용하여 시크릿
매니페스트를 생성해야 합니다.
사전 요구 사항
OpenStack 계정이 있어야 합니다.
프로세스
- OpenStack 웹 콘솔의 대시보드에서 프로젝트 > API 액세스를 클릭합니다.
OpenStack RC 파일 다운로드를 확장하고 OpenStack RC 파일을 클릭합니다.
여기에서 <
openstack_rc_file>이라고 하는 다운로드된 파일에
는 토큰 인증에 사용되는 다음 필드가 포함되어 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow OS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
OS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
토큰 인증에 필요한 데이터를 가져오려면 다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack token issue
$ openstack token issue
여기에서 <
openstack_token_output
>이라고 하는 출력에는사용자 ID
가 있는토큰
을 사용하여 인증하는 데 필요한 토큰, userID 및projectID
가 포함됩니다.다음과 유사한
시크릿
매니페스트를 생성합니다.사용자 ID가 있는 토큰을 사용한 인증의 경우:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> projectID: <projectID_from_openstack_token_output> userID: <userID_from_openstack_token_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> projectID: <projectID_from_openstack_token_output> userID: <userID_from_openstack_token_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
사용자 이름이 있는 토큰을 사용한 인증의 경우:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> projectName: <OS_PROJECT_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> projectName: <OS_PROJECT_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
-
2 단계부터 "소스 공급자의
공급자
매니페스트 생성"부터 가상 머신 마이그레이션의 절차에 따라 가상 머신을 계속 마이그레이션합니다.
2.6.1.2. OpenStack 소스 공급자에서 애플리케이션 인증 정보 사용
OpenStack 소스 공급자를 생성할 때 사용자 이름 및 암호 인증 대신 애플리케이션 자격 증명 인증을 사용할 수 있습니다.
MTV는 다음 두 가지 유형의 애플리케이션 인증 정보를 지원합니다.
- 애플리케이션 인증 정보 ID
- 애플리케이션 인증 정보 이름
각 애플리케이션 인증 유형에 대해 OpenStack의 데이터를 사용하여 시크릿
매니페스트를 생성해야 합니다.
사전 요구 사항
OpenStack 계정이 있어야 합니다.
프로세스
- OpenStack 웹 콘솔의 대시보드에서 프로젝트 > API 액세스를 클릭합니다.
OpenStack RC 파일 다운로드를 확장하고 OpenStack RC 파일을 클릭합니다.
여기에서 <
openstack_rc_file>이라고 하는 다운로드된 파일에
는 애플리케이션 인증 정보 인증에 사용되는 다음 필드가 포함되어 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow OS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
OS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
애플리케이션 인증 정보 인증에 필요한 데이터를 가져오려면 다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack application credential create --role member --role reader --secret redhat forklift
$ openstack application credential create --role member --role reader --secret redhat forklift
여기에서 <
openstack_credential_output>이라고 하는 출력에는
다음이 포함됩니다.-
애플리케이션 인증 정보 ID를 사용하여 인증에 필요한 ID 및
시크릿
-
애플리케이션 인증 정보
이름을
사용하여 인증에 필요한 이름 및시크릿
-
애플리케이션 인증 정보 ID를 사용하여 인증에 필요한 ID 및
다음과 유사한
시크릿
매니페스트를 생성합니다.애플리케이션 인증 정보 ID를 사용한 인증의 경우:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialID: <id_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialID: <id_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
애플리케이션 인증 정보 이름을 사용한 인증의 경우:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialName: <name_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialName: <name_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
-
2 단계부터 "소스 공급자의
공급자
매니페스트 생성"부터 가상 머신 마이그레이션의 절차에 따라 가상 머신을 계속 마이그레이션합니다.
2.7. VMware 사전 요구 사항
마이그레이션을 가속화하기 위해 VDDK 이미지를 생성하는 것이 좋습니다. 자세한 내용은 VDDK 이미지 생성을 참조하십시오.
VMware 마이그레이션에는 다음과 같은 사전 요구 사항이 적용됩니다.
- 호환되는 VMware vSphere 버전을 사용해야 합니다.
- 최소 VMware 권한 세트가 있는 사용자로 로그인해야 합니다.
- VMware Tools 를 모든 소스 VM(가상 시스템)에 설치해야 합니다.
-
VM 운영 체제는 OpenShift Virtualization에서 게스트 운영 체제로 사용하고
virt-v2v
를 사용한 KVM으로 변환하려면 인증 및 지원되어야 합니다. - 웜 마이그레이션을 실행하는 경우 VM 및 VM 디스크에서 변경된 블록 추적(CBT) 을 활성화해야 합니다.
- vCenter 호스트의 SHA-1 지문을 가져와야 합니다.
- 동일한 마이그레이션 계획에서 ESXi 호스트에서 10개 이상의 VM을 마이그레이션하는 경우 호스트의 Cryostat 서비스 메모리를 늘려야 합니다.
- MTV(Migration Toolkit for Virtualization)가 절전 머신 마이그레이션을 지원하지 않기 때문에 하이버네이션을 비활성화하는 것이 좋습니다.
정전이 발생하면 중단이 비활성화된 VM에 대한 데이터가 손실될 수 있습니다. 그러나 하이버네이션이 비활성화되지 않은 경우 마이그레이션이 실패합니다.
MTV 또는 OpenShift Virtualization은 VMWare에서 VM 마이그레이션을 위해 Btrfs 변환을 지원하지 않습니다.
VMware 권한
MCP(Migration Toolkit for Virtualization)를 사용하여 가상 머신을 OpenShift Virtualization으로 마이그레이션하려면 다음과 같은 최소 VMware 권한이 필요합니다.
권한 | 설명 |
---|---|
| |
| 전원이 켜진 가상 머신의 전원을 끌 수 있습니다. 이 작업은 게스트 운영 체제의 전원을 끕니다. |
| 전원이 꺼진 가상 머신의 전원을 켜고 일시 중지된 가상 머신을 다시 시작할 수 있습니다. |
참고
모든 | |
| 임의의 읽기 및 쓰기 액세스를 위해 가상 머신에서 디스크를 열 수 있습니다. 원격 디스크 마운트에 주로 사용됩니다. |
| VMX, 디스크, 로그 및 NVRAM을 포함하여 가상 머신과 연결된 파일에 대한 작업을 허용합니다. |
| 임의의 읽기 액세스를 위해 가상 머신에서 디스크를 열 수 있습니다. 원격 디스크 마운트에 주로 사용됩니다. |
| VMX, 디스크, 로그 및 NVRAM을 포함하여 가상 머신과 관련된 파일에 대한 읽기 작업을 허용합니다. |
| VMX, 디스크, 로그 및 NVRAM을 포함하여 가상 머신과 연결된 파일에 대한 쓰기 작업을 허용합니다. |
| 템플릿 복제를 허용합니다. |
| 기존 가상 머신 복제 및 리소스를 할당할 수 있습니다. |
| 가상 머신에서 새 템플릿을 생성할 수 있습니다. |
| 가상 머신을 이동하지 않고도 가상 머신의 게스트 운영 체제를 사용자 지정할 수 있습니다. |
| 템플릿에서 가상 머신을 배포할 수 있습니다. |
| 기존의 전원이 꺼진 가상 머신을 템플릿으로 표시할 수 있습니다. |
| 기존 템플릿을 가상 머신으로 표시할 수 있습니다. |
| 사용자 지정 사양을 생성, 수정 또는 삭제할 수 있습니다. |
| 가상 머신의 디스크에서 승격 작업을 수행할 수 있습니다. |
| 사용자 지정 사양을 읽을 수 있습니다. |
| |
| 가상 머신의 현재 상태에서 스냅샷을 생성할 수 있습니다. |
| 스냅샷 기록에서 스냅샷을 제거할 수 있습니다. |
2.7.1. VDDK 이미지 생성
MCP(Migration Toolkit for Virtualization)는 VMware VDDK(Virtual Disk Development Kit) SDK를 사용하여 VMware vSphere에서 가상 디스크 전송을 가속화합니다. 따라서 선택 사항이지만 VDDK 이미지를 생성하는 것이 좋습니다.
이 기능을 사용하려면 VMware VDDK(가상 디스크 개발 키트)를 다운로드하고 VDDK 이미지를 빌드한 후 VDDK 이미지를 이미지 레지스트리로 내보냅니다.
VDDK 패키지에는 심볼릭 링크가 포함되어 있으므로 심볼릭 링크(symlink)를 유지하는 파일 시스템에서 VDDK 이미지를 생성하는 절차를 수행해야 합니다.
VDDK 이미지를 공용 레지스트리에 저장하면 VMware 라이센스 조건을 위반할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift 이미지 레지스트리.
-
Podman이
설치되어 있어야 합니다. - 심볼릭 링크(symlinks)를 유지하는 파일 시스템에서 작업하고 있습니다.
- 외부 레지스트리를 사용하는 경우 OpenShift Virtualization에서 액세스할 수 있어야 합니다.
프로세스
임시 디렉터리를 만들고 해당 디렉터리로 이동합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir /tmp/<dir_name> && cd /tmp/<dir_name>
$ mkdir /tmp/<dir_name> && cd /tmp/<dir_name>
- 브라우저에서 VMware VDDK 버전 8 다운로드 페이지로 이동합니다.
버전 8.0.1을 선택하고 다운로드를 클릭합니다.
참고OpenShift Virtualization 4.12로 마이그레이션하려면 VMware VDDK 버전 7 다운로드 페이지에서 VDDK 버전 7.0.3.2를 다운로드합니다.
- VDDK 아카이브 파일을 임시 디렉터리에 저장합니다.
VDDK 아카이브를 추출합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
$ tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
Dockerfile
을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat > Dockerfile <<EOF FROM registry.access.redhat.com/ubi8/ubi-minimal USER 1001 COPY vmware-vix-disklib-distrib /vmware-vix-disklib-distrib RUN mkdir -p /opt ENTRYPOINT ["cp", "-r", "/vmware-vix-disklib-distrib", "/opt"] EOF
$ cat > Dockerfile <<EOF FROM registry.access.redhat.com/ubi8/ubi-minimal USER 1001 COPY vmware-vix-disklib-distrib /vmware-vix-disklib-distrib RUN mkdir -p /opt ENTRYPOINT ["cp", "-r", "/vmware-vix-disklib-distrib", "/opt"] EOF
VDDK 이미지를 빌드합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman build . -t <registry_route_or_server_path>/vddk:<tag>
$ podman build . -t <registry_route_or_server_path>/vddk:<tag>
VDDK 이미지를 레지스트리로 푸시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman push <registry_route_or_server_path>/vddk:<tag>
$ podman push <registry_route_or_server_path>/vddk:<tag>
- OpenShift Virtualization 환경에서 이미지에 액세스할 수 있는지 확인합니다.
2.7.2. vCenter 호스트의 SHA-1 지문 가져오기
Secret
CR을 생성하려면 vCenter 호스트의 SHA-1 지문을 가져와야 합니다.
프로세스
다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl s_client \ -connect <vcenter_host>:443 \ < /dev/null 2>/dev/null \ | openssl x509 -fingerprint -noout -in /dev/stdin \ | cut -d '=' -f 2
$ openssl s_client \ -connect <vcenter_host>:443 \
1 < /dev/null 2>/dev/null \ | openssl x509 -fingerprint -noout -in /dev/stdin \ | cut -d '=' -f 2
- 1
- vCenter 호스트의 IP 주소 또는 FQDN을 지정합니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67
01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67
2.7.3. ESXi 호스트의 Cryostat 서비스 메모리 증가
동일한 마이그레이션 계획에서 ESXi 호스트에서 10개 이상의 VM을 마이그레이션하는 경우 호스트의 Cryostat 서비스 메모리를 늘려야 합니다. 그렇지 않으면 Cryostat 서비스 메모리가 10개의 병렬 연결로 제한되므로 마이그레이션이 실패합니다.
프로세스
- ESXi 호스트에 root로 로그인합니다.
/etc/vmware/hostd/config.xml
:에서maxMemory
의 값을1000000000
으로 변경합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... <nfcsvc> <path>libnfcsvc.so</path> <enabled>true</enabled> <maxMemory>1000000000</maxMemory> <maxStreamMemory>10485760</maxStreamMemory> </nfcsvc> ...
... <nfcsvc> <path>libnfcsvc.so</path> <enabled>true</enabled> <maxMemory>1000000000</maxMemory> <maxStreamMemory>10485760</maxStreamMemory> </nfcsvc> ...
hostd
를 다시 시작하십시오.Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/init.d/hostd restart
# /etc/init.d/hostd restart
호스트를 재부팅할 필요가 없습니다.
2.8. 오픈 가상 어플라이언스(OVA) 사전 요구 사항
다음 사전 요구 사항은 OVA(Open Virtual Appliance) 파일 마이그레이션에 적용됩니다.
- 모든 OVA 파일은 VMware vSphere에서 생성합니다.
VMware vSphere에서 생성되지 않았지만 vSphere와 호환되는 OVA 파일의 마이그레이션이 성공할 수 있습니다. 그러나 이러한 파일의 마이그레이션은 MTV에서 지원되지 않습니다. MTV는 VMware vSphere에서 생성한 OVA 파일만 지원합니다.
OVA 파일은 다음 구조 중 하나에 있는 NFS 공유 디렉터리 아래의 하나 이상의 폴더에 있습니다.
모든 VM 정보를 보유하는 하나 이상의 압축된 OVF(Open Virtualization Format) 패키지입니다.
각 압축 패키지의 파일 이름에는
.ova
확장자가 있어야 합니다. 여러 압축 패키지를 동일한 폴더에 저장할 수 있습니다.이 구조를 사용하면 MTV는 루트 폴더와 압축 패키지의 첫 번째 하위 폴더를 검사합니다.
예를 들어 NFS 공유가
/nfs
이면:
폴더/nfs
가 스캔됩니다.
폴더/nfs/subfolder1
이 스캔됩니다.
그러나/nfs/subfolder1/subfolder2
는 스캔되지 않습니다.추출된 OVF 패키지입니다.
이 구조를 사용하면 MTV는 추출된 OVF 패키지에 대해 루트 폴더, 첫 번째 하위 폴더 및 두 번째 수준 하위 폴더를 검사합니다. 그러나 폴더에는
.ovf
파일 하나만 있을 수 있습니다. 그러지 않으면 마이그레이션이 실패합니다.예를 들어 NFS 공유가
/nfs
인 경우:
OVF 파일/nfs/vm.ovf
가 스캔됩니다.
OVF 파일/nfs/subfolder1/vm.ovf
가 스캔됩니다.
OVF 파일/nfs/subfolder1/subfolder2/vm.ovf
가 스캔됩니다.
그러나 OVF 파일/nfs/subfolder1/subfolder2/subfolder3/vm.ovf
가 검색되지 않습니다.
2.9. 소프트웨어 호환성 지침
호환되는 소프트웨어 버전을 설치해야 합니다.
Migration Toolkit for Virtualization | Red Hat OpenShift | OpenShift Virtualization | VMware vSphere | Red Hat Virtualization | OpenStack |
---|---|---|---|---|---|
2.5.7 | 4.12 이상 | 4.12 이상 | 6.5 이상 | 4.4 SP1 이상 | 16.1 이상 |
MTV 2.5는 RHV(Red Hat Virtualization) 4.4 SP1에서만 테스트되었습니다. RHV(Red Hat Virtualization) 4.3에서 마이그레이션은 MTV 2.5에서 테스트되지 않았습니다.
RHV 4.3에서는 MTV용 RHV 4.4에 도입된 개선 사항이 없으며 RHV 4.3에서 새로운 기능을 테스트하지 않았기 때문에 RHV 4.3의 마이그레이션이 RHV 4.4에서 마이그레이션되는 것과 동일한 수준에서 작동하지 않을 수 있으며 일부 기능이 누락될 수 있습니다.
따라서 OpenShift Virtualization으로 마이그레이션하기 전에 RHV를 지원되는 버전으로 업그레이드하는 것이 좋습니다.
그러나 RHV 4.3.11의 마이그레이션은 MTV 2.3에서 테스트되었으며 MTV 2.5를 사용하는 여러 환경에서 실제로 작동할 수 있습니다. 이 경우 OpenShift Virtualization으로 마이그레이션하기 전에 RHVM(Red Hat Virtualization Manager)을 이전에 지원되는 버전으로 업그레이드하는 것이 좋습니다.
OpenShift Kubernetes Engine(OKE)에서 MTV 2.5.3 이상의 배포가 활성화됩니다. 자세한 내용은 OpenShift Kubernetes Engine 정보를 참조하십시오.
2.9.1. OpenShift Operator Life Cycles
OpenShift Container Platform과 함께 사용하기 위해 Red Hat에서 제공하는 Operator의 소프트웨어 유지 관리 라이프 사이클 분류에 대한 자세한 내용은 OpenShift Operator 라이프 사이클 을 참조하십시오.
3장. MTV Operator 설치 및 구성
Red Hat OpenShift 웹 콘솔 또는 CLI(명령줄 인터페이스)를 사용하여 MTV Operator를 설치할 수 있습니다.
MTV(Migration Toolkit for Virtualization) 버전 2.4 이상에서 MTV Operator에는 Red Hat OpenShift 웹 콘솔용 MTV 플러그인이 포함되어 있습니다.
Red Hat OpenShift 웹 콘솔 또는 CLI를 사용하여 MTV Operator를 설치한 후 Operator를 구성할 수 있습니다.
3.1. Red Hat OpenShift 웹 콘솔을 사용하여 MTV Operator 설치
Red Hat OpenShift 웹 콘솔을 사용하여 MTV Operator를 설치할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift 4.12 이상이 설치되어 있어야 합니다.
- OpenShift Virtualization Operator가 OpenShift 마이그레이션 대상 클러스터에 설치되어 있습니다.
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 Operator → OperatorHub 를 클릭합니다.
- 키워드로 필터링 필드를 사용하여 mtv-operator 를 검색합니다.
- Migration Toolkit for Virtualization Operator 를 클릭한 다음 설치를 클릭합니다.
- 버튼이 활성화되면 ForkliftController 생성 을 클릭합니다.
생성을 클릭합니다.
표시된 목록에 ForkliftController가 표시됩니다.
- 워크로드 → 포드를 클릭하여 MTV Pod 가 실행 중인지 확인합니다.
Operators → 설치된 Operator 를 클릭하여 Migration Toolkit for Virtualization Operator 가 Succeeded 상태로 openshift-mtv 프로젝트에 표시되는지 확인합니다.
플러그인이 준비되면 페이지를 다시 로드하라는 메시지가 표시됩니다. 마이그레이션 메뉴 항목은 Red Hat OpenShift 웹 콘솔 왼쪽에 표시되는 탐색 모음에 자동으로 추가됩니다.
3.2. 명령줄 인터페이스에서 MTV Operator 설치
CLI(명령줄 인터페이스)에서 MTV Operator를 설치할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift 4.12 이상이 설치되어 있어야 합니다.
- OpenShift Virtualization Operator가 OpenShift 마이그레이션 대상 클러스터에 설치되어 있습니다.
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
프로세스
openshift-mtv 프로젝트를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: project.openshift.io/v1 kind: Project metadata: name: openshift-mtv EOF
$ cat << EOF | oc apply -f - apiVersion: project.openshift.io/v1 kind: Project metadata: name: openshift-mtv EOF
migration
이라는OperatorGroup
CR을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: migration namespace: openshift-mtv spec: targetNamespaces: - openshift-mtv EOF
$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: migration namespace: openshift-mtv spec: targetNamespaces: - openshift-mtv EOF
Operator에 대한
서브스크립션
CR을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: mtv-operator namespace: openshift-mtv spec: channel: release-v2.5 installPlanApproval: Automatic name: mtv-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: "mtv-operator.v2.5.7" EOF
$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: mtv-operator namespace: openshift-mtv spec: channel: release-v2.5 installPlanApproval: Automatic name: mtv-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: "mtv-operator.v2.5.7" EOF
ForkliftController
CR을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: ForkliftController metadata: name: forklift-controller namespace: openshift-mtv spec: olm_managed: true EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: ForkliftController metadata: name: forklift-controller namespace: openshift-mtv spec: olm_managed: true EOF
MTV Pod가 실행 중인지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n openshift-mtv
$ oc get pods -n openshift-mtv
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE forklift-api-bb45b8db4-cpzlg 1/1 Running 0 6m34s forklift-controller-7649db6845-zd25p 2/2 Running 0 6m38s forklift-must-gather-api-78fb4bcdf6-h2r4m 1/1 Running 0 6m28s forklift-operator-59c87cfbdc-pmkfc 1/1 Running 0 28m forklift-ui-plugin-5c5564f6d6-zpd85 1/1 Running 0 6m24s forklift-validation-7d84c74c6f-fj9xg 1/1 Running 0 6m30s forklift-volume-populator-controller-85d5cb64b6-mrlmc 1/1 Running 0 6m36s
NAME READY STATUS RESTARTS AGE forklift-api-bb45b8db4-cpzlg 1/1 Running 0 6m34s forklift-controller-7649db6845-zd25p 2/2 Running 0 6m38s forklift-must-gather-api-78fb4bcdf6-h2r4m 1/1 Running 0 6m28s forklift-operator-59c87cfbdc-pmkfc 1/1 Running 0 28m forklift-ui-plugin-5c5564f6d6-zpd85 1/1 Running 0 6m24s forklift-validation-7d84c74c6f-fj9xg 1/1 Running 0 6m30s forklift-volume-populator-controller-85d5cb64b6-mrlmc 1/1 Running 0 6m36s
3.3. MTV Operator 구성
CLI 또는 사용자 인터페이스를 사용하여 MTV Operator의 다음 설정을 구성할 수 있습니다.
- 동시에 마이그레이션할 수 있는 계획당 최대 VM(가상 머신) 수
-
자동으로 삭제하기 전에 보고서를
수집해야
하는 기간 - 기본 컨트롤러 컨테이너에 할당된 CPU 제한
- 기본 컨트롤러 컨테이너에 할당된 메모리 제한
- 웜 마이그레이션을 시작하기 전에 새 스냅샷을 요청하는 간격
- 웜 마이그레이션 중에 스냅샷 생성 또는 제거 상태를 확인하는 빈도
-
storageclass
가 파일 시스템(CLI)인 경우 파일 시스템 오버헤드로 할당된 영구 볼륨의 공간 백분율
이러한 설정은 forklift-controller
CR의 spec
부분에서 적절한 매개변수의 기본값을 변경하여 구성됩니다.
사용자 인터페이스를 사용하여 이러한 설정을 구성하는 절차는 MTV 설정 구성에 표시됩니다. CLI를 사용하여 이러한 설정을 구성하는 절차는 다음과 같습니다.
프로세스
-
다음과 같이 라벨 및 값을 추가하여
forklift-controller
CR의spec
부분에 있는 매개변수 값을 변경합니다.
spec: label: value
spec:
label: value
- 1
- CLI를 사용하여 구성할 수 있는 레이블은 각 라벨 및 기본값에 대한 설명과 함께 다음 표에 표시됩니다.
레이블 | 설명 | 기본값 |
---|---|---|
| 동시에 마이그레이션할 수 있는 계획당 최대 VM 수입니다. |
|
|
보존을 위한 기간은 보고서를 자동으로 삭제하기 전에 보고서를 |
|
| 기본 컨트롤러 컨테이너에 할당된 CPU 제한입니다. |
|
| 기본 컨트롤러 컨테이너에 할당된 메모리 제한입니다. |
|
| 웜 마이그레이션을 시작하기 전에 새 스냅샷을 요청하는 간격(분)입니다. |
|
| 시스템이 웜 마이그레이션 중에 스냅샷 생성 또는 제거 상태를 확인하는 빈도(초)입니다. |
|
|
|
|
|
영구 블록 볼륨에 할당된 고정된 양의 추가 공간입니다. 이 설정은 블록 기반 모든 |
|
4장. Red Hat OpenShift 웹 콘솔을 사용하여 가상 머신 마이그레이션
Red Hat OpenShift 웹 콘솔을 사용하여 VM(가상 머신)을 OpenShift Virtualization으로 마이그레이션할 수 있습니다.
모든 사전 요구 사항이 충족되었는지 확인해야 합니다.
VMware만 해당: 최소 VMware 권한 세트가 있어야 합니다.
VMware만 해당: VMware VDDK(가상 디스크 개발 키트) 이미지를 생성하면 마이그레이션 속도가 향상됩니다.
4.1. MTV 사용자 인터페이스
MCP(Migration Toolkit for Virtualization) 사용자 인터페이스가 OpenShift 웹 콘솔에 통합되어 있습니다.
왼쪽 패널에서 마이그레이션 진행의 구성 요소(예: 마이그레이션 용 공급자)와 관련된 페이지를 선택하거나 관리자인 경우 마이그레이션 에 대한 정보가 포함된 개요 를 선택할 수 있으며 MTV 설정을 구성할 수 있습니다.
그림 4.1. MTV 확장 인터페이스

구성 요소와 관련된 페이지에서 페이지의 왼쪽 상단에 있는 프로젝트 목록을 클릭하고 작업할 수 있는 프로젝트(네임스페이스)를 확인할 수 있습니다.
- 관리자인 경우 모든 프로젝트를 볼 수 있습니다.
- 관리자가 아닌 경우 작업할 수 있는 권한이 있는 프로젝트만 볼 수 있습니다.
4.2. MTV 개요 페이지
MCP(Migration Toolkit for Virtualization) 개요 페이지에는 마이그레이션에 대한 시스템 전체 정보와 변경할 수 있는 설정 목록이 표시됩니다.
관리자 권한이 있는 경우 Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 개요를 클릭하여 개요 페이지에 액세스할 수 있습니다.
개요 페이지에는 다음 정보가 표시됩니다.
마이그레이션: MTV를 사용하여 수행되는 마이그레이션 수입니다.
- 합계
- 실행 중
- 실패
- succeeded
- 취소됨
가상 머신 마이그레이션: MTV를 사용하여 마이그레이션된 VM 수입니다.
- 합계
- 실행 중
- 실패
- succeeded
- 취소됨
- operator: MTV Operator가 배포된 네임스페이스와 Operator의 상태입니다.
conditions: MTV Operator의 상태:
-
실패: 마지막 실패.
false
는 배포 이후의 실패를 나타냅니다. - running: Operator가 현재 실행 중인지와 다음 조정을 대기 중인지 여부입니다.
- 성공: 마지막으로 성공적인 조정입니다.
-
실패: 마지막 실패.
4.3. MTV 설정 구성
관리자 권한이 있는 경우 개요 페이지에 액세스하여 해당 페이지에서 다음 설정을 변경할 수 있습니다.
설정 | 설명 | 기본값 |
---|---|---|
최대 동시 가상 머신 마이그레이션 | 동시에 마이그레이션할 수 있는 계획당 최대 VM 수 | 20 |
다음 시간 이후 정리를 수집해야 합니다. |
보존 기간은 보고서를 자동으로 삭제하기 전에 | 비활성화됨 |
컨트롤러 기본 컨테이너 CPU 제한 | 기본 컨트롤러 컨테이너에 할당된 CPU 제한 | 500m |
컨트롤러 기본 컨테이너 메모리 제한 | 기본 컨트롤러 컨테이너에 할당된 메모리 제한 | 800 Mi |
사전 복사 내부(분) | 웜 마이그레이션을 시작하기 전에 새 스냅샷을 요청하는 간격 | 60 |
스냅샷 폴링 간격(초) | 웜 마이그레이션 중에 스냅샷 생성 또는 제거 상태를 확인하는 빈도 | 10 |
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 개요 를 클릭합니다. 설정 목록은 페이지 오른쪽에 있습니다.
- 설정 목록에서 변경할 설정의 편집 아이콘을 클릭합니다.
- 목록에서 설정을 선택합니다.
- 저장을 클릭합니다.
4.4. 공급자 추가
Red Hat OpenShift 웹 콘솔을 사용하여 가상 머신 마이그레이션의 소스 공급자 및 대상 공급자를 추가할 수 있습니다.
4.4.1. 소스 공급자 추가
MTV를 사용하여 다음 소스 공급자에서 VM을 마이그레이션할 수 있습니다.
- VMware vSphere
- Red Hat Virtualization
- OpenStack
- VMware vSphere에서 생성한 오픈 가상 어플라이언스(OVA)
- OpenShift Virtualization
Red Hat OpenShift 웹 콘솔을 사용하여 소스 공급자를 추가할 수 있습니다.
4.4.1.1. VMware vSphere 소스 공급자 추가
Red Hat OpenShift 웹 콘솔을 사용하여 VMware vSphere 소스 공급자를 추가할 수 있습니다.
Migration Toolkit for Virtualization에서 지원하지만 2023 FIPS 요구 사항을 준수하지 않는 vSphere 버전에서 마이그레이션을 활성화하기 위해 VMware vSphere 소스 공급자와의 마이그레이션에는 적용되지 않습니다. 따라서 사용자는 vSphere 소스 공급자의 마이그레이션이 FIPS 준수 여부를 고려해야 합니다. 지원되는 vSphere 버전은 소프트웨어 호환성 지침에 지정됩니다.
사전 요구 사항
- 모든 클러스터에서 액세스할 수 있는 보안 레지스트리의 VMware VDDK(가상 디스크 개발 키트) 이미지.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 공급자 를 클릭합니다.
- 공급자 생성을 클릭합니다.
- vSphere 를 클릭합니다.
다음 필드를 지정합니다.
- provider resource name: 소스 공급자의 이름입니다.
-
URL: 소스 VM이 마운트된 vCenter 끝점의 URL입니다. URL에
sdk
경로(일반적으로/sdk
)가 포함되어 있는지 확인합니다. 예:https://vCenter-host-example.com/sdk
. FQDN에 대한 인증서가 지정된 경우 이 필드의 값이 인증서의 FQDN과 일치해야 합니다. -
VDDK init 이미지:
VDDKInitImage
경로. 마이그레이션을 가속화하기 위해 VDDK init 이미지를 생성하는 것이 좋습니다. 자세한 내용은 VDDK 이미지 생성을 참조하십시오. -
username: vCenter user. 예:
user@vsphere.local
. - 암호: vCenter 사용자 암호.
- SHA-1 지문: 현재 공급자에는 모든 상황에서 vCenter 서버의 TLS 인증서의 SHA-1 지문이 필요합니다. vSphere는 이를 서버의 지문이라고 합니다.
CA 인증서의 유효성을 검증하기 위해 다음 옵션 중 하나를 선택합니다.
- 인증서 검증 건너뛰기 : CA 인증서의 유효성을 검사하지 않고 마이그레이션합니다.
시스템 CA 인증서 사용: 시스템 CA 인증서를 검증한 후 마이그레이션.
- 인증서 검증을 건너뛰려면 Skip certificate validation 확인란을 선택합니다.
- 시스템 CA 인증서를 확인하려면 Skip certificate validation 확인란을 선택 해제합니다.
생성 을 클릭하여 공급자를 추가하고 저장합니다.
공급자가 공급자 목록에 나타납니다.
4.4.1.2. Red Hat Virtualization 소스 공급자 추가
Red Hat OpenShift 웹 콘솔을 사용하여 Red Hat Virtualization 소스 공급자를 추가할 수 있습니다.
사전 요구 사항
- 관리자 CA 인증서가 타사 인증서로 대체되지 않은 경우 Manager Apache CA 인증서를 지정합니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 공급자 를 클릭합니다.
- 공급자 생성을 클릭합니다.
- Red Hat Virtualization을 클릭합니다.
다음 필드를 지정합니다.
- provider resource name: 소스 공급자의 이름입니다.
-
URL: 소스 VM이 마운트된RHVM(Red Hat Virtualization Manager)의 API 끝점 URL입니다. URL에 Cryostat API 서버(일반적으로
/ovirt-engine/api
)로 이어지는 경로가 포함되어 있는지 확인합니다. 예:https://rhv-host-example.com/ovirt-engine/api
. - 사용자 이름: 사용자 이름.
- 암호: 암호.
CA 인증서의 유효성을 검증하기 위해 다음 옵션 중 하나를 선택합니다.
- 인증서 검증 건너뛰기 : CA 인증서의 유효성을 검사하지 않고 마이그레이션합니다.
사용자 정의 CA 인증서 사용: 사용자 정의 CA 인증서를 검증한 후 마이그레이션.
- 인증서 검증을 건너뛰려면 Skip certificate validation 확인란을 선택합니다.
- 사용자 정의 CA 인증서의 유효성을 확인하려면 Skip 인증서 유효성 검사 확인란을 지우고 CA 인증서를 텍스트 박스로 끌어오 거나 선택을 클릭합니다.
생성 을 클릭하여 공급자를 추가하고 저장합니다.
공급자가 공급자 목록에 나타납니다.
4.4.1.3. OpenStack 소스 공급자 추가
Red Hat OpenShift 웹 콘솔을 사용하여 OpenStack 소스 공급자를 추가할 수 있습니다.
OpenStack 소스 공급자를 사용한 마이그레이션은 Cinder 볼륨만 사용하는 VM만 지원합니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 공급자 를 클릭합니다.
- 공급자 생성을 클릭합니다.
- OpenStack 을 클릭합니다.
다음 필드를 지정합니다.
- provider resource name: 소스 공급자의 이름입니다.
-
URL: OpenStack Identity(Keystone) 끝점의 URL입니다. 예:
http://controller:5000/v3
. 인증 유형: 다음 인증 방법 중 하나를 선택하고 선택한 것과 관련된 정보를 제공합니다. 예를 들어 애플리케이션 인증 정보 ID 를 인증 유형으로 선택하는 경우 애플리케이션 인증 정보 ID 및 애플리케이션 인증 정보 시크릿 필드가 활성화되고 ID와 시크릿을 제공해야 합니다.
애플리케이션 인증 정보 ID
- 애플리케이션 인증 정보 ID: OpenStack 애플리케이션 인증 정보 ID
-
애플리케이션 인증 정보 시크릿: OpenStack https://github.com/kubev2v/forklift-documentation/pull/402pplication 인증 정보
시크릿
애플리케이션 인증 정보 이름
- 애플리케이션 인증 정보 이름: OpenStack 애플리케이션 인증 정보 이름
-
애플리케이션 인증 정보 시크릿 : : : OpenStack 애플리케이션 인증 정보
시크릿
- 사용자 이름: OpenStack 사용자 이름
- domain: OpenStack 도메인 이름
사용자 ID가 있는 토큰
- 토큰: OpenStack 토큰
- 사용자 ID: OpenStack 사용자 ID
- 프로젝트 ID: OpenStack 프로젝트 ID
사용자 이름이 있는 토큰
- 토큰: OpenStack 토큰
- 사용자 이름: OpenStack 사용자 이름
- 프로젝트: OpenStack 프로젝트
- 도메인 이름: OpenStack 도메인 이름
암호
- 사용자 이름: OpenStack 사용자 이름
- 암호: OpenStack 암호
- 프로젝트: OpenStack 프로젝트
- domain: OpenStack 도메인 이름
CA 인증서의 유효성을 검증하기 위해 다음 옵션 중 하나를 선택합니다.
- 인증서 검증 건너뛰기 : CA 인증서의 유효성을 검사하지 않고 마이그레이션합니다.
사용자 정의 CA 인증서 사용: 사용자 정의 CA 인증서를 검증한 후 마이그레이션.
- 인증서 검증을 건너뛰려면 Skip certificate validation 확인란을 선택합니다.
- 사용자 정의 CA 인증서의 유효성을 확인하려면 Skip 인증서 유효성 검사 확인란을 지우고 CA 인증서를 텍스트 박스로 끌어오 거나 선택을 클릭합니다.
생성 을 클릭하여 공급자를 추가하고 저장합니다.
공급자가 공급자 목록에 나타납니다.
4.4.1.4. OVA(Open Virtual Appliance) 소스 공급자 추가
Red Hat OpenShift 웹 콘솔을 사용하여 VMware vSphere에서 생성한 OVA(Open Virtual Appliance) 파일을 소스 공급자로 추가할 수 있습니다.
소스 공급자로 하나 이상의 OVA(Open Virtual VolumeSnapshot) 파일을 사용하는 마이그레이션은 기술 프리뷰입니다.
소스 공급자로서 하나 이상의 OVA(Open Virtual Appliance) 파일을 사용하는 마이그레이션은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/를 참조하십시오.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 공급자 를 클릭합니다.
- 공급자 생성을 클릭합니다.
- OVA(Open Virtual Appliance) 를 클릭합니다.
다음 필드를 지정합니다.
- provider resource name: 소스 공급자의 이름
- URL: OVA를 제공하는 NFS 파일 공유의 URL
생성 을 클릭하여 공급자를 추가하고 저장합니다.
공급자가 공급자 목록에 나타납니다.
참고오류가 발생했음을 나타내는 오류 메시지가 표시될 수 있습니다. 이 메시지는 무시해도 됩니다.
4.4.1.5. Red Hat OpenShift Virtualization 소스 공급자 추가
Red Hat OpenShift Virtualization 공급자를 소스 공급자와 대상 공급자로 사용할 수 있습니다.
특히 OpenShift Virtualization 공급자로 자동 추가되는 호스트 클러스터는 소스 공급자와 대상 공급자로 사용할 수 있습니다.
MTV가 배포된 클러스터에서 다른 클러스터로 VM을 마이그레이션하거나 원격 클러스터에서 MTV가 배포된 클러스터로 마이그레이션할 수 있습니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 공급자 를 클릭합니다.
- 공급자 생성을 클릭합니다.
- OpenShift Virtualization을 클릭합니다.
다음 필드를 지정합니다.
- provider resource name: 소스 공급자의 이름
- URL: API 서버의 끝점의 URL
서비스 계정 전달자 토큰:
cluster-admin
권한이 있는 서비스 계정의 토큰URL 및 서비스 계정 전달자 토큰이 모두 비어 있으면 로컬 OpenShift 클러스터가 사용됩니다.
생성 을 클릭하여 공급자를 추가하고 저장합니다.
공급자가 공급자 목록에 나타납니다.
4.4.2. 대상 공급자 추가
Red Hat OpenShift 웹 콘솔을 사용하여 OpenShift Virtualization 대상 공급자를 추가할 수 있습니다.
4.4.2.1. OpenShift Virtualization 대상 공급자 추가
Red Hat OpenShift Virtualization 공급자를 소스 공급자와 대상 공급자로 사용할 수 있습니다.
특히 OpenShift Virtualization 공급자로 자동 추가되는 호스트 클러스터는 소스 공급자와 대상 공급자로 사용할 수 있습니다.
MTV를 설치한 클러스터인 기본 OpenShift Virtualization 대상 공급자 외에도 Red Hat OpenShift 웹 콘솔에 OpenShift Virtualization 대상 공급자를 추가할 수도 있습니다.
MTV가 배포된 클러스터에서 다른 클러스터로 VM을 마이그레이션하거나 원격 클러스터에서 MTV가 배포된 클러스터로 마이그레이션할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 OpenShift Virtualization 서비스 계정 토큰이 있어야 합니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 공급자 를 클릭합니다.
- 공급자 생성을 클릭합니다.
- OpenShift Virtualization을 클릭합니다.
다음 필드를 지정합니다.
- provider resource name: 소스 공급자의 이름
- URL: API 서버의 끝점의 URL
서비스 계정 전달자 토큰:
cluster-admin
권한이 있는 서비스 계정의 토큰URL 및 서비스 계정 전달자 토큰이 모두 비어 있으면 로컬 OpenShift 클러스터가 사용됩니다.
생성 을 클릭하여 공급자를 추가하고 저장합니다.
공급자가 공급자 목록에 나타납니다.
4.4.2.2. OpenShift Virtualization 공급자의 마이그레이션 네트워크 선택
Red Hat OpenShift 웹 콘솔에서 OpenShift Virtualization 공급자에 대한 기본 마이그레이션 네트워크를 선택하여 성능을 향상시킬 수 있습니다. 기본 마이그레이션 네트워크는 디스크를 구성된 네임스페이스로 전송하는 데 사용됩니다.
마이그레이션 네트워크를 선택하지 않으면 기본 마이그레이션 네트워크는 Pod
네트워크이며 디스크 전송에는 적합하지 않을 수 있습니다.
마이그레이션 계획을 생성할 때 다른 네트워크를 선택하여 공급자의 기본 마이그레이션 네트워크를 덮어쓸 수 있습니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 공급자 를 클릭합니다.
-
공급자 오른쪽에 있는 옵션 메뉴
에서 마이그레이션 네트워크 선택을 선택합니다.
- 사용 가능한 네트워크 목록에서 네트워크를 선택하고 Select 를 클릭합니다.
4.5. 네트워크 매핑 생성
Red Hat OpenShift 웹 콘솔을 사용하여 소스 네트워크를 OpenShift Virtualization 네트워크에 매핑하여 하나 이상의 네트워크 매핑을 생성할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift 웹 콘솔에 소스 및 대상 공급자가 추가되었습니다.
- 둘 이상의 소스 및 대상 네트워크를 매핑하는 경우 추가 OpenShift Virtualization 네트워크에는 자체 네트워크 연결 정의가 필요합니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 가상화를 위한 마이그레이션 → NetworkMaps를 클릭합니다.
- NetworkMap 만들기를 클릭합니다.
다음 필드를 지정합니다.
- name: 네트워크 매핑 목록에 표시할 이름을 입력합니다.
- 소스 공급자: 소스 공급자를 선택합니다.
- 대상 공급자: 대상 공급자를 선택합니다.
- 소스 네트워크와 대상 네임스페이스/네트워크 를 선택합니다.
- 선택 사항: 추가 네트워크 매핑을 생성하거나 여러 소스 네트워크를 단일 대상 네트워크에 매핑하려면 추가를 클릭합니다.
- 추가 네트워크 매핑을 생성하는 경우 대상 네트워크로 네트워크 연결 정의를 선택합니다.
생성을 클릭합니다.
네트워크 매핑이 NetworkMaps 화면에 표시됩니다.
4.6. 스토리지 매핑 생성
Red Hat OpenShift 웹 콘솔을 사용하여 소스 디스크 스토리지를 OpenShift Virtualization 스토리지 클래스에 매핑하여 스토리지 매핑을 생성할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift 웹 콘솔에 소스 및 대상 공급자가 추가되었습니다.
- VM 마이그레이션을 지원하는 로컬 및 공유 영구 스토리지입니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 가상화를 위한 마이그레이션 → 스토리지 맵을 클릭합니다.
- 스토리지 맵 생성을 클릭합니다.
다음 필드를 지정합니다.
- name: 스토리지 매핑 목록에 표시할 이름을 입력합니다.
- 소스 공급자: 소스 공급자를 선택합니다.
- 대상 공급자: 대상 공급자를 선택합니다.
스토리지 매핑을 생성하려면 스토리지 소스 추가 를 클릭하고 다음과 같이 대상 스토리지 클래스에 매핑합니다.
- 소스 공급자가 VMware vSphere인 경우 소스 데이터 저장소와 대상 스토리지 클래스 를 선택합니다.
- 소스 공급자가 Red Hat Virtualization인 경우 소스 스토리지 도메인과 대상 스토리지 클래스 를 선택합니다.
- 소스 공급자가 OpenStack인 경우 소스 볼륨 유형 과 대상 스토리지 클래스 를 선택합니다.
- 소스 공급자가 하나 이상의 OVA 파일 세트인 경우 OVA 파일 내의 모든 가상 디스크에 적용되는 더미 스토리지의 Source 및 Target 스토리지 클래스 를 선택합니다.
- 스토리지 공급자가 OpenShift Virtualization인 경우 소스 스토리지 클래스와 대상 스토리지 클래스 를 선택합니다.
- 선택 사항: 여러 스토리지 소스를 단일 대상 스토리지 클래스에 매핑하는 등 추가 스토리지 매핑을 생성하려면 추가를 클릭합니다.
생성을 클릭합니다.
매핑은 StorageMaps 페이지에 표시됩니다.
4.7. 마이그레이션 계획 생성
Red Hat OpenShift 웹 콘솔을 사용하여 마이그레이션 계획을 생성할 수 있습니다.
마이그레이션 계획을 사용하면 가상 머신을 함께 그룹화하거나 동일한 마이그레이션 매개변수(예: 클러스터 멤버의 멤버 또는 전체 애플리케이션)를 사용하여 마이그레이션할 수 있습니다.
마이그레이션 계획의 지정된 단계에서 Ansible 플레이북 또는 사용자 정의 컨테이너 이미지를 실행하도록 후크를 구성할 수 있습니다.
사전 요구 사항
- MTV가 대상 클러스터에 설치되지 않은 경우 웹 콘솔의 공급자 페이지에 대상 공급자를 추가해야 합니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 계획을 클릭합니다.
- 계획 생성을 클릭합니다.
다음 필드를 지정합니다.
- 계획 이름: 마이그레이션 계획 목록에 표시할 마이그레이션 계획 이름을 입력합니다.
- 계획 설명: 선택 사항: 마이그레이션 계획에 대한 간략한 설명입니다.
- 소스 공급자: 소스 공급자를 선택합니다.
- 대상 공급자: 대상 공급자를 선택합니다.
대상 네임스페이스: 다음 중 하나를 수행합니다.
- 목록에서 대상 네임스페이스 선택
- 텍스트 상자에 이름을 입력하여 대상 네임스페이스를 만든 다음 만들기 "<the_name_you_entered>"를 클릭합니다.
Select a different network 를 클릭하고 목록에서 네트워크를 선택한 다음 Select 를 클릭하여 이 계획에 대한 마이그레이션 전송 네트워크를 변경할 수 있습니다.
OpenShift Virtualization 공급자의 마이그레이션 전송 네트워크를 정의하고 네트워크가 대상 네임스페이스에 있는 경우 정의한 네트워크가 모든 마이그레이션 계획의 기본 네트워크입니다. 그렇지 않으면
Pod
네트워크가 사용됩니다.
- 다음을 클릭합니다.
- 소스 VM 목록을 필터링하는 옵션을 선택하고 다음을 클릭합니다.
- 마이그레이션할 VM을 선택한 다음 다음을 클릭합니다.
- 기존 네트워크 매핑을 선택하거나 새 네트워크 매핑을 생성합니다.
. 선택 사항: 추가 를 클릭하여 추가 네트워크 매핑을 추가합니다.
새 네트워크 매핑을 생성하려면 다음을 수행합니다.
- 각 소스 네트워크의 대상 네트워크를 선택합니다.
- 선택 사항: 현재 매핑을 템플릿으로 저장하고 네트워크 매핑의 이름을 입력합니다.
- 다음을 클릭합니다.
기존 스토리지 매핑을 선택하거나 새 스토리지 매핑을 생성할 수 있습니다.
새 스토리지 매핑을 생성하려면 다음을 수행합니다.
- 소스 공급자가 VMware인 경우 소스 데이터 저장소와 대상 스토리지 클래스 를 선택합니다.
- 소스 공급자가 Red Hat Virtualization인 경우 소스 스토리지 도메인과 대상 스토리지 클래스 를 선택합니다.
- 소스 공급자가 OpenStack인 경우 소스 볼륨 유형 과 대상 스토리지 클래스 를 선택합니다.
- 선택 사항: 현재 매핑을 템플릿으로 저장하고 스토리지 매핑의 이름을 입력합니다.
- 다음을 클릭합니다.
마이그레이션 유형을 선택하고 다음을 클릭합니다.
- 콜드 마이그레이션: 데이터가 복사되는 동안 소스 VM이 중지됩니다.
웜 마이그레이션: 데이터가 증분적으로 복사되는 동안 소스 VM이 실행됩니다. 나중에 컷오버를 실행하여 VM을 중지하고 나머지 VM 데이터 및 메타데이터를 복사합니다.
참고웜 마이그레이션은 vSphere 및 Red Hat Virtualization에서만 지원됩니다.
- 다음을 클릭합니다.
선택 사항: 마이그레이션 전후에 Ansible 플레이북을 실행하기 위해 마이그레이션 후크를 생성할 수 있습니다.
- 후크 추가를 클릭합니다.
- 후크를 실행할 단계: 사전 마이그레이션 또는 마이그레이션 후를 선택합니다.
후크 정의를 선택합니다.
- Ansible Playbook: Ansible 플레이북 검색 또는 필드에 붙여넣습니다.
사용자 정의 컨테이너 이미지 : 기본
hook-runner
이미지를 사용하지 않으려면 이미지 경로 <registry_path>/<image_name>:<tag
>를 입력합니다.참고Red Hat OpenShift 클러스터에서 레지스트리에 액세스할 수 있어야 합니다.
- 다음을 클릭합니다.
마이그레이션 계획을 검토하고 마침 을 클릭합니다.
마이그레이션 계획이 계획 페이지에 저장됩니다.
마이그레이션 계획의 옵션 메뉴
를 클릭하고 세부 정보 보기를 선택하여 마이그레이션 계획 세부 정보를 확인할 수 있습니다.
4.8. 마이그레이션 계획 실행
마이그레이션 계획을 실행하고 Red Hat OpenShift 웹 콘솔에서 진행 상황을 볼 수 있습니다.
사전 요구 사항
- 유효한 마이그레이션 계획.
프로세스
Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 계획을 클릭합니다.
계획 목록에는 소스 및 대상 공급자, 마이그레이션 중인 VM(가상 머신) 수, 상태 및 각 계획에 대한 설명이 표시됩니다.
- 마이그레이션 계획 옆에 있는 시작을 클릭하여 마이그레이션을 시작합니다.
열리는 확인 창에서 시작을 클릭합니다.
VM 화면별 마이그레이션 세부 정보가 열리고 마이그레이션 진행 상황을 표시합니다.
웜 마이그레이션만 해당:
- 사전 복사 단계가 시작됩니다.
- 컷오버 를 클릭하여 마이그레이션을 완료합니다.
마이그레이션이 실패하는 경우:
- 로그 가져오기를 클릭하여 마이그레이션 로그를 검색합니다.
- 열리는 확인 창에서 로그 가져오기를 클릭합니다.
- 로그 가져오기가 로그 다운로드 로 변경될 때까지 기다린 다음 버튼을 클릭하여 로그를 다운로드합니다.
마이그레이션 실패 여부에 관계없이 마이그레이션의 상태를 클릭하여 마이그레이션 세부 정보를 확인합니다.
VM 화면별 마이그레이션 세부 정보가 열리고 마이그레이션 시작 및 종료 시간, 복사된 데이터 양, 마이그레이션 중인 각 VM의 진행률 파이프라인이 표시됩니다.
- 개별 VM을 확장하여 해당 단계 및 각 단계의 경과된 시간 및 상태를 확인합니다.
4.9. 마이그레이션 계획 옵션
Red Hat OpenShift 웹 콘솔의 가상화 계획 페이지에서 마이그레이션 계획 옆에 있는 옵션 메뉴
를 클릭하여 다음 옵션에 액세스할 수 있습니다.
- get logs: 마이그레이션 로그를 검색합니다. 로그 가져오기를 클릭하면 확인 창이 열립니다. 창에서 로그 가져오기 를 클릭한 후 로그 가져오기가 로그 다운로드 로 변경될 때까지 기다린 다음 버튼을 클릭하여 로그를 다운로드합니다.
- Edit: 마이그레이션 계획의 세부 정보를 편집합니다. 실행 중이거나 성공적으로 완료된 후에는 마이그레이션 계획을 편집할 수 없습니다.
duplicate: 기존 계획과 동일한 VM(가상 머신), 매개변수, 매핑 및 후크를 사용하여 새 마이그레이션 계획을 생성합니다. 이 기능을 다음 작업에 사용할 수 있습니다.
- VM을 다른 네임스페이스로 마이그레이션합니다.
- 아카이브된 마이그레이션 계획을 편집합니다.
- 다른 상태로 마이그레이션 계획을 편집합니다(예: 실패, 취소, 실행 중, 중요 또는 준비됨).
archive: 마이그레이션 계획의 로그, 기록 및 메타데이터를 삭제합니다. 계획을 편집하거나 다시 시작할 수 없습니다. 이는 단지 볼 수 있습니다.
참고Archive 옵션은 되돌릴 수 없습니다. 그러나 보관된 계획을 복제할 수 있습니다.
Delete: 마이그레이션 계획을 영구적으로 제거합니다. 실행 중인 마이그레이션 계획을 삭제할 수 없습니다.
참고삭제 옵션은 되돌릴 수 없습니다.
마이그레이션 계획을 삭제해도
가져오기
Pod,변환
Pod, 구성 맵, 시크릿, 실패한 VM 및 데이터 볼륨과 같은 임시 리소스가 제거되지 않습니다. (BZ#2018974) 임시 리소스를 정리하려면 마이그레이션 계획을 삭제하기 전에 보관해야 합니다.- View details: 마이그레이션 계획의 세부 정보를 표시합니다.
- restart: 실패한 마이그레이션 또는 취소된 마이그레이션 계획을 다시 시작합니다.
- 예약된 컷오버 취소: 웜 마이그레이션 계획에 대해 예약된 컷오버 마이그레이션을 취소합니다.
4.10. 마이그레이션 취소
Red Hat OpenShift 웹 콘솔을 사용하여 마이그레이션 계획이 진행되는 동안 일부 또는 모든 VM(가상 머신)의 마이그레이션을 취소할 수 있습니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 가상화 계획을 클릭합니다.
- 실행 중인 마이그레이션 계획의 이름을 클릭하여 마이그레이션 세부 정보를 확인합니다.
- 하나 이상의 VM을 선택하고 취소 를 클릭합니다.
예, 취소 를 클릭하여 취소를 확인합니다.
VM별 마이그레이션 세부 정보 목록에서 취소된 VM의 상태가 취소됩니다. 마이그레이션되지 않은 가상 머신 및 마이그레이션된 가상 머신은 영향을 받지 않습니다.
마이그레이션 계획 페이지의 마이그레이션 계획 옆에 있는 재시작 을 클릭하여 취소된 마이그레이션 을 다시 시작할 수 있습니다.
5장. 명령줄에서 가상 머신 마이그레이션
명령줄에서 가상 머신을 OpenShift Virtualization으로 마이그레이션할 수 있습니다.
- VMware만 해당: 최소 VMware 권한 세트가 있어야 합니다.
- VMware만 해당: vCenter SHA-1 지문이 있어야 합니다.
- VMware만 해당: VMware VDDK(가상 디스크 개발 키트) 이미지를 생성하면 마이그레이션 속도가 향상됩니다.
- 모든 사전 요구 사항이 충족되었는지 확인해야 합니다.
5.1. 관리자가 아닌 사용자에게 마이그레이션 계획 구성 요소 작업에 필요한 권한
관리자인 경우 마이그레이션 계획의 모든 구성 요소(예: 공급자, 네트워크 매핑 및 마이그레이션 계획)와 함께 작업할 수 있습니다.
기본적으로 관리자가 아닌 사용자는 마이그레이션 계획 및 해당 구성 요소에서 작업할 수 있는 기능이 제한됩니다. 관리자는 역할을 수정하여 모든 구성 요소에 대한 전체 액세스 권한을 허용하거나 제한된 권한을 부여할 수 있습니다.
예를 들어 관리자는 마이그레이션 계획에 다음 클러스터 역할 중 하나 이상을 관리자가 아닌 사용자를 할당할 수 있습니다.
Role | 설명 |
---|---|
| 마이그레이션 계획을 볼 수 있지만 생성, 삭제 또는 수정할 수는 없습니다. |
|
개별 마이그레이션 계획을 생성, 삭제 또는 수정( |
|
모든 |
사전 정의된 클러스터 역할에는 리소스(예: 계획
), API 그룹(예: forklift.konveyor.io-v1beta1
) 및 작업(예: 보기
,편집
)이 포함됩니다.
보다 포괄적인 예로 네임스페이스당 다음 권한 세트를 비관리자에게 부여할 수 있습니다.
- 액세스할 수 있는 네임스페이스에 대한 스토리지 맵, 네트워크 맵 및 마이그레이션 계획을 생성하고 수정합니다.
- 관리자가 생성한 공급자를 스토리지 맵, 네트워크 맵 및 마이그레이션 계획에 연결
- 공급자를 생성하거나 시스템 설정을 변경할 수 없음
작업 | API 그룹 | 리소스 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
관리자가 아닌 사용자는 네트워크 맵 또는 스토리지 맵에 템플릿을 사용하는 경우에도 마이그레이션 계획을 생성하기 위해 네트워크 맵 및 스토리지 맵에 대한 편집
역할의 일부인 생성 권한이 있어야 합니다.
5.2. VMware vSphere moRef 검색
CLI에서 MCP(Migration Toolkit for Virtualization)를 사용하여 VMware vSphere 소스 공급자가 있는 VM을 마이그레이션하는 경우 vSphere에서 데이터 저장소, 네트워크 및 VM과 같은 특정 엔티티의 관리형 오브젝트 참조(moRef)를 알아야 합니다.
인벤토리 서비스에서 하나 이상의 vSphere 엔티티의 moRef를 검색할 수 있습니다. 그런 다음 각 moRef를 다른 엔티티의 moRef를 검색하기 위한 참조로 사용할 수 있습니다.
프로세스
프로젝트의 경로를 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route -n openshift-mtv
oc get route -n openshift-mtv
인벤토리
서비스 경로를 검색합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route <inventory_service> -n openshift-mtv
$ oc get route <inventory_service> -n openshift-mtv
액세스 토큰을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TOKEN=$(oc whoami -t)
$ TOKEN=$(oc whoami -t)
VMware vSphere 공급자의 moRef를 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere -k
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere -k
VMware vSphere 소스 공급자의 데이터 저장소를 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere/<provider id>/datastores/ -k
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere/<provider id>/datastores/ -k
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ { "id": "datastore-11", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/v2v_general_porpuse_ISCSI_DC", "revision": 46, "name": "v2v_general_porpuse_ISCSI_DC", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-11" }, { "id": "datastore-730", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/f01-h27-640-SSD_2", "revision": 46, "name": "f01-h27-640-SSD_2", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-730" }, ...
[ { "id": "datastore-11", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/v2v_general_porpuse_ISCSI_DC", "revision": 46, "name": "v2v_general_porpuse_ISCSI_DC", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-11" }, { "id": "datastore-730", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/f01-h27-640-SSD_2", "revision": 46, "name": "f01-h27-640-SSD_2", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-730" }, ...
이 예에서 데이터 저장소 v2v_general_porpuse_ISCSI_DC
의 moRef는 datastore-11
이고 데이터 저장소 f01-h27-640-SSD_2
의 moRef는 datastore-730
입니다.
5.3. 가상 머신 마이그레이션
MTV CR(사용자 정의 리소스)을 생성하여 CLI(명령줄)에서 VM(가상 머신)을 마이그레이션합니다.
클러스터 범위 CR의 이름을 지정해야 합니다.
네임스페이스 범위 CR의 이름과 네임스페이스를 모두 지정해야 합니다.
소스 공급자로 하나 이상의 OVA(Open Virtual VolumeSnapshot) 파일을 사용하는 마이그레이션은 기술 프리뷰입니다.
소스 공급자로서 하나 이상의 OVA(Open Virtual Appliance) 파일을 사용하는 마이그레이션은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/를 참조하십시오.
OpenStack 소스 공급자를 사용한 마이그레이션은 Cinder 볼륨만 사용하는 VM만 지원합니다.
사전 요구 사항
- VMware만 해당: 모든 클러스터에서 액세스할 수 있는 보안 레지스트리에 VMware VDDK(가상 디스크 개발 키트) 이미지가 있어야 합니다.
- RHV(Red Hat Virtualization)만 해당: 직접 LUN 디스크가 있는 가상 머신을 마이그레이션하는 경우 VM이 실행될 것으로 예상되는 OpenShift Virtualization 대상 클러스터의 노드가 백엔드 스토리지에 액세스할 수 있는지 확인합니다.
- 소스 공급자에서 대상 공급자로 복사 되는 디스크 이미지와 달리 LUN은 소스 공급자의 가상 머신에서분리되지만 제거되지 않은 다음 대상 공급자에 생성된 가상 머신(VM)에 연결됩니다.
- 소스 공급자에 대한 대체가 필요한 경우 마이그레이션 중에 원본 공급자에서 LUN을 제거하지 않습니다. 그러나 소스 공급자의 VM에 LUN을 다시 연결하기 전에 대상 환경의 VM에서 LUN을 사용하지 않도록 하여 데이터 손상이 발생할 수 있습니다.
- 파이버 채널 LUN의 마이그레이션은 지원되지 않습니다.
프로세스
소스 공급자 인증 정보에 대한
시크릿
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: <provider_type> createdForResourceType: providers type: Opaque stringData: user: <user> password: <password> insecureSkipVerify: <true/false> domainName: <domain_name> projectName: <project_name> regionName: <region name> cacert: | <ca_certificate> url: <api_end_point> thumbprint: <vcenter_fingerprint> token: <service_account_bearer_token> EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:
1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: <provider_type>
2 createdForResourceType: providers type: Opaque stringData:
3 user: <user>
4 password: <password>
5 insecureSkipVerify: <true/false>
6 domainName: <domain_name>
7 projectName: <project_name>
8 regionName: <region name>
9 cacert: |
10 <ca_certificate> url: <api_end_point>
11 thumbprint: <vcenter_fingerprint>
12 token: <service_account_bearer_token>
13 EOF
- 1
ownerReferences
섹션은 선택 사항입니다.- 2
- 소스 공급자 유형을 지정합니다. 허용되는 값은
ovirt
,vsphere
,openstack
,ova
,openshift
입니다. 이 레이블은 원격 시스템에 액세스할 수 있을 때 인증 정보가 올바른지 확인하고 타사 인증서가 지정되면 RHV의 경우 Manager CA 인증서를 검색하는 데 필요합니다. - 3
- OVA의
stringData
섹션은 다르며Secret
매니페스트에 대한 설명에 설명되어 있습니다. - 4
- vCenter 사용자, RHV Manager 사용자 또는 OpenStack 사용자를 지정합니다.
- 5
- 사용자 암호를 지정합니다.
- 6
- 비보안 마이그레이션을 진행하는 인증서 확인을 건너뛰려면 <
true
>를 지정한 다음 인증서가 필요하지 않습니다. 비보안 마이그레이션은 전송된 데이터가 안전하지 않은 연결을 통해 전송되고 잠재적으로 민감한 데이터가 노출될 수 있음을 의미합니다. <false>
를 지정하면 인증서가 확인됩니다. - 7
- OpenStack만 해당: 도메인 이름을 지정합니다.
- 8
- OpenStack만 해당: 프로젝트 이름을 지정합니다.
- 9
- OpenStack만 해당: OpenStack 리전의 이름을 지정합니다.
- 10
- 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>로 설정된 경우 인증서가 사용되지 않습니다
. - 11
- API 엔드포인트 URL을 지정합니다(예: vSphere의 경우
https://<vCenter_host>/sdk
, RHV의 경우https://<engine_host>/ovirt-engine/api
또는 OpenStack의 경우https://<identity_service>/v
3). - 12
- VMware만 해당: vCenter SHA-1 지문을 지정합니다.
- 13
- OpenShift만 해당:
cluster-admin
권한이 있는 서비스 계정의 토큰입니다.
참고OVA
Secret
매니페스트의stringData
섹션은 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow stringData: url: <nfs_server:/nfs_path>
stringData: url: <nfs_server:/nfs_path>
여기서:
nfs_server
: 공유가 생성된 서버의 IP 또는 호스트 이름
OVA 파일이 저장된 서버의 경로입니다.소스 공급자에 대한
공급자
매니페스트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: <provider_type> url: <api_end_point> settings: vddkInitImage: <registry_route_or_server_path>/vddk:<tag> secret: name: <secret> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> 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: <namespace> 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: <namespace> spec: provider: namespace: <namespace> 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: <namespace> spec: provider: namespace: <namespace> name: <source_provider>
1 id: <source_host_mor>
2 ipAddress: <source_network_ip>
3 EOF
- 1
- VMware
Provider
CR의 이름을 지정합니다. - 2
- VMware 호스트의 관리형 오브젝트 참조(moRef)를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
- 3
- VMware 마이그레이션 네트워크의 IP 주소를 지정합니다.
NetworkMap
매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.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: <namespace> spec: map: - destination: name: <network_name> type: pod source: id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus source: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> 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: name: <network_attachment_definition>
6 namespace: <network_attachment_definition_namespace>
7 type: multus
8 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
- 1
- 허용되는 값은
pod
및multus
입니다. - 2
id
또는name
매개변수를 사용하여 소스 네트워크를 지정할 수 있습니다.- 3
- VMware 네트워크 moRef, RHV 네트워크 UUID 또는 OpenStack 네트워크 UUID를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
- 4
- 각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다.
- 5
type
이multus
인 경우에만 필요합니다. OpenShift Virtualization 네트워크 연결 정의의 네임스페이스를 지정합니다.- 6
- 각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다.
- 7
type
이multus
인 경우에만 필요합니다. 여기에서namespace
속성은 네임스페이스 속성을 사용하거나 다음과 같이 빌드된 이름으로 지정할 수 있습니다. <network_namespace>/<network_name
> .- 8
- OpenShift만 해당.
소스 및 대상 스토리지를 매핑하는
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: <namespace> 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: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> 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: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
- 1
- 허용되는 값은
ReadWriteOnce
및ReadWriteMany
입니다. - 2
- VMware datastore moRef, RHV 스토리지 도메인 UUID 또는 OpenStack
volume_type
UUID를 지정합니다. 예를 들면f2737930-b567-451a-9ceb-2887f6207009
입니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
참고OVA의 경우
StorageMap
은 OVA의 모든 디스크가 연결된 단일 스토리지만 대상의 스토리지 클래스에 매핑할 수 있습니다. 이러한 이유로 UI에서 "Dummy storage for source provider <provider_name>"이라고 합니다.선택 사항:
Plan
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: <namespace> 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: <namespace> 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: <namespace> spec: warm: true provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> namespace: <namespace> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> spec: warm: true
2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:
3 network:
4 name: <network_map>
5 namespace: <namespace> storage:
6 name: <storage_map>
7 namespace: <namespace> targetNamespace: <target_namespace> vms:
8 - id: <source_vm>
9 - name: <source_vm> namespace: <namespace>
10 hooks:
11 - hook: namespace: <namespace> name: <hook>
12 step: <step>
13 EOF
- 1
Plan
CR의 이름을 지정합니다.- 2
- 마이그레이션이 워밍인지 또는 콜드인지를 지정합니다. 마이그레이션 매니페스트에서
cutover
매개변수 값을 지정하지 않고 웜마이그레이션
을 지정하면 사전 복사 단계만 실행됩니다. - 3
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 4
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 5
NetworkMap
CR의 이름을 지정합니다.- 6
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 7
StorageMap
CR의 이름을 지정합니다.- 8
- OpenShift Virtualization을 제외한 모든 소스 공급자의 경우
id
또는name
매개변수를 사용하여 소스 VM을 지정할 수 있습니다.
OpenShift Virtualization 소스 공급자만 해당:id.
매개변수가 아닌name
매개변수만 사용하여 소스 VM을 지정할 수 있습니다. - 9
- VMware VM moRef, RHV VM UUID 또는 OpenStack VM UUID를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
- 10
- OpenShift Virtualization 소스 공급자만 사용할 수 있습니다.
- 11
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 12
Hook
CR의 이름을 지정합니다.- 13
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
이거나마이그레이션이 완료된 후 postHook
입니다.
Plan
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: <namespace> spec: plan: name: <plan> namespace: <namespace> cutover: <cutover_time> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration>
1 namespace: <namespace> spec: plan: name: <plan>
2 namespace: <namespace> cutover: <cutover_time>
3 EOF
여러
마이그레이션
CR을 단일계획
CR과 연결할 수 있습니다. 마이그레이션이 완료되지 않으면Plan
CR을 변경하지 않고 새마이그레이션
CR을 생성하여 나머지 VM을 마이그레이션할 수 있습니다.Migration
CR을 검색하여 마이그레이션 진행 상황을 모니터링합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get migration/<migration> -n <namespace> -o yaml
$ oc get migration/<migration> -n <namespace> -o yaml
5.4. vCenter 호스트의 SHA-1 지문 가져오기
Secret
CR을 생성하려면 vCenter 호스트의 SHA-1 지문을 가져와야 합니다.
프로세스
다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl s_client \ -connect <vcenter_host>:443 \ < /dev/null 2>/dev/null \ | openssl x509 -fingerprint -noout -in /dev/stdin \ | cut -d '=' -f 2
$ openssl s_client \ -connect <vcenter_host>:443 \
1 < /dev/null 2>/dev/null \ | openssl x509 -fingerprint -noout -in /dev/stdin \ | cut -d '=' -f 2
- 1
- vCenter 호스트의 IP 주소 또는 FQDN을 지정합니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67
01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67
5.5. 마이그레이션 취소
CLI(명령줄 인터페이스)에서 마이그레이션이 진행되는 동안 전체 마이그레이션 또는 개별 VM(가상 머신)을 취소할 수 있습니다.
전체 마이그레이션 취소
Migration
CR을 삭제합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete migration <migration> -n <namespace>
$ oc delete migration <migration> -n <namespace>
1 - 1
Migration
CR의 이름을 지정합니다.
개별 VM 마이그레이션 취소
마이그레이션
매니페스트의spec.cancel
블록에 개별 VM을 추가합니다.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: <namespace> ... spec: cancel: - id: vm-102 - id: vm-203 - name: rhel8-vm EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration> namespace: <namespace> ... spec: cancel: - id: vm-102
1 - id: vm-203 - name: rhel8-vm EOF
- 1
id
키 또는name
키를 사용하여 VM을 지정할 수 있습니다.
id
키의 값은 RHV VM의 관리 오브젝트 참조, VMware VM 또는 VM UUID 입니다.Migration
CR을 검색하여 나머지 VM의 진행 상황을 모니터링합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get migration/<migration> -n <namespace> -o yaml
$ oc get migration/<migration> -n <namespace> -o yaml
6장. 고급 마이그레이션 옵션
6.1. 웜 마이그레이션의 사전 복사 간격 변경
ForkliftController
사용자 정의 리소스(CR)를 패치하여 스냅샷 간격을 변경할 수 있습니다.
프로세스
ForkliftController
CR을 패치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc patch forkliftcontroller/<forklift-controller> -n openshift-mtv -p '{"spec": {"controller_precopy_interval": <60>}}' --type=merge
$ oc patch forkliftcontroller/<forklift-controller> -n openshift-mtv -p '{"spec": {"controller_precopy_interval": <60>}}' --type=merge
1 - 1
- 사전 복사 간격을 분 단위로 지정합니다. 기본값은
60
입니다.
forklift-controller
Pod를 다시 시작할 필요가 없습니다.
6.2. Validation 서비스에 대한 사용자 지정 규칙 생성
유효성 검사
서비스는 OCI(Open Policy Agent) 정책 규칙을 사용하여 마이그레이션을 위한 각 VM(가상 머신)의 적합성을 확인합니다. 유효성 검사
서비스는 공급자 인벤토리
서비스에 VM 속성으로 저장되는 각 VM에 대한 우려 목록을 생성합니다. 웹 콘솔에는 공급자 인벤토리의 각 VM에 대한 문제가 표시됩니다.
사용자 지정 규칙을 만들어 Validation
서비스의 기본 규칙 집합을 확장할 수 있습니다. 예를 들어 VM에 여러 디스크가 있는지 확인하는 규칙을 생성할 수 있습니다.
6.2.1. Rego 파일 정보
검증 규칙은 OCI(Open Policy Agent) 기본 쿼리 언어인 Rego 로 작성됩니다. 규칙은 Validation
Pod의 /usr/share/opa/policies/io/konveyor/forklift/<provider
> 디렉터리에 .rego
파일로 저장됩니다.
각 검증 규칙은 별도의 .rego
파일에 정의되고 특정 조건에 대한 테스트입니다. 조건이 true
로 평가되면 규칙은 {"category", "label", "assessment"}
해시를 문제에
추가합니다. 문제가
있는 콘텐츠는 VM의 인벤토리 레코드에 있는 concerns
키에 추가됩니다. 웹 콘솔에는 공급자 인벤토리의 각 VM에 대한 concerns
키 내용이 표시됩니다.
다음 .rego
파일 예제에서는 VMware VM 클러스터에서 활성화된 분산 리소스 스케줄링을 확인합니다.
drs_enabled.rego example
package io.konveyor.forklift.vmware has_drs_enabled { input.host.cluster.drsEnabled } concerns[flag] { has_drs_enabled flag := { "category": "Information", "label": "VM running in a DRS-enabled cluster", "assessment": "Distributed resource scheduling is not currently supported by OpenShift Virtualization. The VM can be migrated but it will not have this feature in the target environment." } }
package io.konveyor.forklift.vmware
has_drs_enabled {
input.host.cluster.drsEnabled
}
concerns[flag] {
has_drs_enabled
flag := {
"category": "Information",
"label": "VM running in a DRS-enabled cluster",
"assessment": "Distributed resource scheduling is not currently supported by OpenShift Virtualization. The VM can be migrated but it will not have this feature in the target environment."
}
}
6.2.2. 기본 검증 규칙 확인
사용자 지정 규칙을 만들기 전에 Validation
서비스의 기본 규칙을 확인하여 기존 기본값을 설명하는 규칙을 만들지 않아야 합니다.
예: 기본 규칙에 default valid_input = false
행이 포함되어 있고 default valid_input = true
줄이 포함된 사용자 정의 규칙을 생성하면 검증
서비스가 시작되지 않습니다.
프로세스
Validation
Pod의 터미널에 연결합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsh <validation_pod>
$ oc rsh <validation_pod>
공급자의 OPA 정책 디렉터리로 이동합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/opa/policies/io/konveyor/forklift/<provider>
$ cd /usr/share/opa/policies/io/konveyor/forklift/<provider>
1 - 1
vmware
또는ovirt
를 지정합니다.
기본 정책을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow grep -R "default" *
$ grep -R "default" *
6.2.3. 검증 규칙 생성
검증 서비스에 규칙이 포함된 구성 맵 CR(사용자 정의 리소스)을 적용하여 검증
규칙을 생성합니다.
-
기존 규칙과 동일한 이름으로 규칙을 만드는 경우
유효성 검사
서비스는 규칙을 사용하여OR
작업을 수행합니다. -
기본 규칙과 일치하지 않는 규칙을 생성하면
검증
서비스가 시작되지 않습니다.
검증 규칙 예
검증 규칙은 공급자 인벤토리
서비스에서 수집한 VM(가상 머신) 속성을 기반으로 합니다.
예를 들어 VMware API는 이 경로를 사용하여 VMware VM에 NUMA 노드 유사성이 MOR: Cryostat.config.extraConfig["numa.nodeAffinity"]
가 구성되어 있는지 확인합니다.
공급자 인벤토리
서비스는 이 구성을 단순화하고 목록 값을 사용하여 테스트 가능한 속성을 반환합니다.
"numaNodeAffinity": [ "0", "1" ],
"numaNodeAffinity": [
"0",
"1"
],
이 속성을 기반으로 Rego 쿼리를 생성하고 forklift-validation-config
구성 맵에 추가합니다.
`count(input.numaNodeAffinity) != 0`
`count(input.numaNodeAffinity) != 0`
프로세스
다음 예에 따라 구성 맵 CR을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: ConfigMap metadata: name: <forklift-validation-config> namespace: openshift-mtv data: vmware_multiple_disks.rego: |- package <provider_package> has_multiple_disks { count(input.disks) > 1 } concerns[flag] { has_multiple_disks flag := { "category": "<Information>", "label": "Multiple disks detected", "assessment": "Multiple disks detected on this VM." } } EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: ConfigMap metadata: name: <forklift-validation-config> namespace: openshift-mtv data: vmware_multiple_disks.rego: |- package <provider_package>
1 has_multiple_disks {
2 count(input.disks) > 1 } concerns[flag] { has_multiple_disks
3 flag := { "category": "<Information>",
4 "label": "Multiple disks detected", "assessment": "Multiple disks detected on this VM." } } EOF
forklift-controller
배포를0
으로 스케일링하여Validation
Pod를 중지합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
$ oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
forklift-controller
배포를1
로 확장하여Validation
Pod를 시작합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
$ oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
Validation
Pod 로그를 확인하여 Pod가 시작되었는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -f <validation_pod>
$ oc logs -f <validation_pod>
사용자 정의 규칙이 기본 규칙과 충돌하면
Validation
Pod가 시작되지 않습니다.소스 공급자를 제거합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete provider <provider> -n openshift-mtv
$ oc delete provider <provider> -n openshift-mtv
소스 공급자를 추가하여 새 규칙을 적용합니다.
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> 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 secret: name: <secret>
3 namespace: openshift-mtv EOF
인벤토리
서비스에서 변경 사항을 감지하고 VM의 유효성을 검사하도록 사용자 지정 규칙을 생성한 후 규칙 버전을 업데이트해야 합니다.
6.2.4. 인벤토리 규칙 버전 업데이트
공급자 인벤토리 서비스에서 변경 사항을 감지하고
규칙 버전을 업데이트해야 합니다.
검증
서비스를 트리거하도록 규칙을 업데이트할 때마다 인벤토리
규칙 버전은 각 공급자에 대한 rules_version.rego
파일에 기록됩니다.
프로세스
현재 규칙 버전을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version
$ GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version
1 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "result": { "rules_version": 5 } }
{ "result": { "rules_version": 5 } }
Validation
Pod의 터미널에 연결합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsh <validation_pod>
$ oc rsh <validation_pod>
-
/usr/share/opa/policies/io/konveyor/forklift/<provider>/rules_version.rego
파일에서 규칙 버전을 업데이트합니다. -
Validation
Pod 터미널에서 로그아웃합니다. 업데이트된 규칙 버전을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version
$ GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version
1 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "result": { "rules_version": 6 } }
{ "result": { "rules_version": 6 } }
6.3. 인벤토리 서비스 JSON 검색
인벤토리
서비스 쿼리를 VM(가상 머신 )으로 전송하여 인벤토리
서비스 JSON을 검색합니다. 출력에는 유효성 검사
서비스 규칙에 의해 쿼리되는 인벤토리 속성이 포함된 "입력"
키가 포함되어 있습니다.
"입력"
키의 모든 속성을 기반으로 검증 규칙을 생성할 수 있습니다(예: input.snapshot.kind
).
프로세스
프로젝트의 경로를 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route -n openshift-mtv
oc get route -n openshift-mtv
인벤토리
서비스 경로를 검색합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route <inventory_service> -n openshift-mtv
$ oc get route <inventory_service> -n openshift-mtv
액세스 토큰을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TOKEN=$(oc whoami -t)
$ TOKEN=$(oc whoami -t)
HTTP GET 요청을 트리거합니다(예: Curl 사용).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers -k
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers -k
공급자의
UUID
를 검색합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider> -k
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider> -k
1 공급자의 VM을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/vms -k
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/vms -k
VM의 세부 정보를 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/workloads/<vm> -k
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/workloads/<vm> -k
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "input": { "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/workloads/vm-431", "id": "vm-431", "parent": { "kind": "Folder", "id": "group-v22" }, "revision": 1, "name": "iscsi-target", "revisionValidated": 1, "isTemplate": false, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-33" } ], "disks": [ { "key": 2000, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 17179869184, "shared": false, "rdm": false }, { "key": 2001, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target_1-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 10737418240, "shared": false, "rdm": false } ], "concerns": [], "policyVersion": 5, "uuid": "42256329-8c3a-2a82-54fd-01d845a8bf49", "firmware": "bios", "powerState": "poweredOn", "connectionState": "connected", "snapshot": { "kind": "VirtualMachineSnapshot", "id": "snapshot-3034" }, "changeTrackingEnabled": false, "cpuAffinity": [ 0, 2 ], "cpuHotAddEnabled": true, "cpuHotRemoveEnabled": false, "memoryHotAddEnabled": false, "faultToleranceEnabled": false, "cpuCount": 2, "coresPerSocket": 1, "memoryMB": 2048, "guestName": "Red Hat Enterprise Linux 7 (64-bit)", "balloonedMemory": 0, "ipAddress": "10.19.2.96", "storageUsed": 30436770129, "numaNodeAffinity": [ "0", "1" ], "devices": [ { "kind": "RealUSBController" } ], "host": { "id": "host-29", "parent": { "kind": "Cluster", "id": "domain-c26" }, "revision": 1, "name": "IP address or host name of the vCenter host or RHV Engine host", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/hosts/host-29", "status": "green", "inMaintenance": false, "managementServerIp": "10.19.2.96", "thumbprint": <thumbprint>, "timezone": "UTC", "cpuSockets": 2, "cpuCores": 16, "productName": "VMware ESXi", "productVersion": "6.5.0", "networking": { "pNICs": [ { "key": "key-vim.host.PhysicalNic-vmnic0", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic1", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic2", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic3", "linkSpeed": 10000 } ], "vNICs": [ { "key": "key-vim.host.VirtualNic-vmk2", "portGroup": "VM_Migration", "dPortGroup": "", "ipAddress": "192.168.79.13", "subnetMask": "255.255.255.0", "mtu": 9000 }, { "key": "key-vim.host.VirtualNic-vmk0", "portGroup": "Management Network", "dPortGroup": "", "ipAddress": "10.19.2.13", "subnetMask": "255.255.255.128", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk1", "portGroup": "Storage Network", "dPortGroup": "", "ipAddress": "172.31.2.13", "subnetMask": "255.255.0.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk3", "portGroup": "", "dPortGroup": "dvportgroup-48", "ipAddress": "192.168.61.13", "subnetMask": "255.255.255.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk4", "portGroup": "VM_DHCP_Network", "dPortGroup": "", "ipAddress": "10.19.2.231", "subnetMask": "255.255.255.128", "mtu": 1500 } ], "portGroups": [ { "key": "key-vim.host.PortGroup-VM Network", "name": "VM Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-Management Network", "name": "Management Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-VM_10G_Network", "name": "VM_10G_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Storage", "name": "VM_Storage", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_DHCP_Network", "name": "VM_DHCP_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-Storage Network", "name": "Storage Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Isolated_67", "name": "VM_Isolated_67", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" }, { "key": "key-vim.host.PortGroup-VM_Migration", "name": "VM_Migration", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" } ], "switches": [ { "key": "key-vim.host.VirtualSwitch-vSwitch0", "name": "vSwitch0", "portGroups": [ "key-vim.host.PortGroup-VM Network", "key-vim.host.PortGroup-Management Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic4" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch1", "name": "vSwitch1", "portGroups": [ "key-vim.host.PortGroup-VM_10G_Network", "key-vim.host.PortGroup-VM_Storage", "key-vim.host.PortGroup-VM_DHCP_Network", "key-vim.host.PortGroup-Storage Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic2", "key-vim.host.PhysicalNic-vmnic0" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch2", "name": "vSwitch2", "portGroups": [ "key-vim.host.PortGroup-VM_Isolated_67", "key-vim.host.PortGroup-VM_Migration" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic3", "key-vim.host.PhysicalNic-vmnic1" ] } ] }, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "vms": null, "networkAdapters": [], "cluster": { "id": "domain-c26", "parent": { "kind": "Folder", "id": "group-h23" }, "revision": 1, "name": "mycluster", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/clusters/domain-c26", "folder": "group-h23", "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "hosts": [ { "kind": "Host", "id": "host-44" }, { "kind": "Host", "id": "host-29" } ], "dasEnabled": false, "dasVms": [], "drsEnabled": true, "drsBehavior": "fullyAutomated", "drsVms": [], "datacenter": null } } } }
{ "input": { "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/workloads/vm-431", "id": "vm-431", "parent": { "kind": "Folder", "id": "group-v22" }, "revision": 1, "name": "iscsi-target", "revisionValidated": 1, "isTemplate": false, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-33" } ], "disks": [ { "key": 2000, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 17179869184, "shared": false, "rdm": false }, { "key": 2001, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target_1-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 10737418240, "shared": false, "rdm": false } ], "concerns": [], "policyVersion": 5, "uuid": "42256329-8c3a-2a82-54fd-01d845a8bf49", "firmware": "bios", "powerState": "poweredOn", "connectionState": "connected", "snapshot": { "kind": "VirtualMachineSnapshot", "id": "snapshot-3034" }, "changeTrackingEnabled": false, "cpuAffinity": [ 0, 2 ], "cpuHotAddEnabled": true, "cpuHotRemoveEnabled": false, "memoryHotAddEnabled": false, "faultToleranceEnabled": false, "cpuCount": 2, "coresPerSocket": 1, "memoryMB": 2048, "guestName": "Red Hat Enterprise Linux 7 (64-bit)", "balloonedMemory": 0, "ipAddress": "10.19.2.96", "storageUsed": 30436770129, "numaNodeAffinity": [ "0", "1" ], "devices": [ { "kind": "RealUSBController" } ], "host": { "id": "host-29", "parent": { "kind": "Cluster", "id": "domain-c26" }, "revision": 1, "name": "IP address or host name of the vCenter host or RHV Engine host", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/hosts/host-29", "status": "green", "inMaintenance": false, "managementServerIp": "10.19.2.96", "thumbprint": <thumbprint>, "timezone": "UTC", "cpuSockets": 2, "cpuCores": 16, "productName": "VMware ESXi", "productVersion": "6.5.0", "networking": { "pNICs": [ { "key": "key-vim.host.PhysicalNic-vmnic0", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic1", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic2", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic3", "linkSpeed": 10000 } ], "vNICs": [ { "key": "key-vim.host.VirtualNic-vmk2", "portGroup": "VM_Migration", "dPortGroup": "", "ipAddress": "192.168.79.13", "subnetMask": "255.255.255.0", "mtu": 9000 }, { "key": "key-vim.host.VirtualNic-vmk0", "portGroup": "Management Network", "dPortGroup": "", "ipAddress": "10.19.2.13", "subnetMask": "255.255.255.128", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk1", "portGroup": "Storage Network", "dPortGroup": "", "ipAddress": "172.31.2.13", "subnetMask": "255.255.0.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk3", "portGroup": "", "dPortGroup": "dvportgroup-48", "ipAddress": "192.168.61.13", "subnetMask": "255.255.255.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk4", "portGroup": "VM_DHCP_Network", "dPortGroup": "", "ipAddress": "10.19.2.231", "subnetMask": "255.255.255.128", "mtu": 1500 } ], "portGroups": [ { "key": "key-vim.host.PortGroup-VM Network", "name": "VM Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-Management Network", "name": "Management Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-VM_10G_Network", "name": "VM_10G_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Storage", "name": "VM_Storage", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_DHCP_Network", "name": "VM_DHCP_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-Storage Network", "name": "Storage Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Isolated_67", "name": "VM_Isolated_67", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" }, { "key": "key-vim.host.PortGroup-VM_Migration", "name": "VM_Migration", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" } ], "switches": [ { "key": "key-vim.host.VirtualSwitch-vSwitch0", "name": "vSwitch0", "portGroups": [ "key-vim.host.PortGroup-VM Network", "key-vim.host.PortGroup-Management Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic4" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch1", "name": "vSwitch1", "portGroups": [ "key-vim.host.PortGroup-VM_10G_Network", "key-vim.host.PortGroup-VM_Storage", "key-vim.host.PortGroup-VM_DHCP_Network", "key-vim.host.PortGroup-Storage Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic2", "key-vim.host.PhysicalNic-vmnic0" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch2", "name": "vSwitch2", "portGroups": [ "key-vim.host.PortGroup-VM_Isolated_67", "key-vim.host.PortGroup-VM_Migration" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic3", "key-vim.host.PhysicalNic-vmnic1" ] } ] }, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "vms": null, "networkAdapters": [], "cluster": { "id": "domain-c26", "parent": { "kind": "Folder", "id": "group-h23" }, "revision": 1, "name": "mycluster", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/clusters/domain-c26", "folder": "group-h23", "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "hosts": [ { "kind": "Host", "id": "host-44" }, { "kind": "Host", "id": "host-29" } ], "dasEnabled": false, "dasVms": [], "drsEnabled": true, "drsBehavior": "fullyAutomated", "drsVms": [], "datacenter": null } } } }
7장. Migration Toolkit for Virtualization 업그레이드
Red Hat OpenShift 웹 콘솔을 사용하여 새 버전을 설치하여 MTV Operator를 업그레이드할 수 있습니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 Operator → 설치된 Operator → Migration Toolkit for Virtualization Operator → 서브스크립션 을 클릭합니다.
업데이트 채널을 올바른 릴리스로 변경합니다.
Red Hat OpenShift 문서의 업데이트 채널 변경을 참조하십시오.
Upgrade 상태가 Up to date 에서 Upgrade available 로 변경되는지 확인합니다. 그러지 않으면
CatalogSource
Pod를 다시 시작합니다.-
카탈로그 소스(예:
redhat-operators
)를 확인합니다. 명령줄에서 카탈로그 소스 Pod를 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -n openshift-marketplace | grep <catalog_source>
$ oc get pod -n openshift-marketplace | grep <catalog_source>
Pod를 삭제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pod -n openshift-marketplace <catalog_source_pod>
$ oc delete pod -n openshift-marketplace <catalog_source_pod>
업그레이드 상태가 최신 에서 업그레이드 가능 으로 변경됩니다.
서브스크립션 탭에서 업데이트 승인을 자동으로 설정하면 업그레이드 가 자동으로 시작됩니다.
-
카탈로그 소스(예:
서브스크립션 탭에서 업데이트 승인을 Manual 로 설정한 경우 업그레이드를 승인합니다.
Red Hat OpenShift 설명서에서 보류 중인 업그레이드 수동 승인을 참조하십시오.
-
MTV 2.2에서 업그레이드하고 VMware 소스 공급자를 정의한 경우 VDDK
init
이미지를 추가하여 VMware 공급자를 편집합니다. 그렇지 않으면 업데이트가 VMware 공급 업체의 상태를Critical
로 변경합니다. 자세한 내용은 VMSphere 소스 공급자 추가를 참조하십시오. -
MTV 2.2의 Red Hat OpenShift 대상 공급자의 NFS에 매핑된 경우 NFS 스토리지 프로필에서
AccessModes
및VolumeMode
매개변수를 편집합니다. 그렇지 않으면 업그레이드가 NFS 매핑을 무효화합니다. 자세한 내용은 스토리지 프로필 사용자 지정을 참조하십시오.
8장. Migration Toolkit for Virtualization 설치 제거
Red Hat OpenShift 웹 콘솔 또는 CLI(명령줄 인터페이스)를 사용하여 MCP(Migration Toolkit for Virtualization)를 설치 제거할 수 있습니다.
8.1. Red Hat OpenShift 웹 콘솔을 사용하여 MTV 설치 제거
Red Hat OpenShift 웹 콘솔을 사용하여 openshift-mtv
프로젝트 및 CRD(사용자 정의 리소스 정의)를 삭제하여 MCP(Migration Toolkit for Virtualization)를 설치 제거할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
프로세스
- 홈 → 프로젝트를 클릭합니다.
- openshift-mtv 프로젝트를 찾습니다.
-
프로젝트 오른쪽에 있는 옵션 메뉴
에서 프로젝트 삭제 를 선택합니다.
- 프로젝트 삭제 창에서 프로젝트 이름을 입력하고 삭제 를 클릭합니다.
- Administration → CustomResourceDefinitions 를 클릭합니다.
-
검색 필드에 포크리를 입력하여
forklift
.konveyor.io -
각 CRD 오른쪽에 있는 옵션 메뉴
에서 Delete CustomResourceDefinition 을 선택합니다.
8.2. 명령줄 인터페이스에서 MTV 설치 제거
openshift-mtv
프로젝트 및 forklift.konveyor.io
CRD(사용자 정의 리소스 정의)를 삭제하여 CLI(명령줄 인터페이스)에서 MCP(Migration Toolkit for Virtualization)를 설치 제거할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
프로세스
프로젝트를 삭제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete project openshift-mtv
$ oc delete project openshift-mtv
CRD를 삭제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get crd -o name | grep 'forklift' | xargs oc delete
$ oc get crd -o name | grep 'forklift' | xargs oc delete
OAuthClient를 삭제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete oauthclient/forklift-ui
$ oc delete oauthclient/forklift-ui
9장. 문제 해결
이 섹션에서는 일반적인 마이그레이션 문제를 해결하는 데 필요한 정보를 제공합니다.
9.1. 오류 메시지
이 섹션에서는 오류 메시지와 해결 방법에 대해 설명합니다.
웜 가져오기 재시도 제한에 도달했습니다.
VMware 가상 머신(VM)이 사전 복사 단계에서 변경된 블록 추적(CBT) 스냅샷의 최대 수(28)에 도달한 경우 웜 마이그레이션 중에 웜 가져오기 재시도 제한에
도달한 오류 메시지가 표시됩니다.
이 문제를 해결하려면 VM에서 일부 CBT 스냅샷을 삭제하고 마이그레이션 계획을 다시 시작하십시오.
필요한 크기로 디스크 이미지의 크기를 조정할 수 없음
대상 공급자의 가상 머신은 블록 스토리지에서 EXT4 파일 시스템을 사용하여 영구 볼륨을 사용하므로 마이그레이션이 실패할 때 디스크 이미지의 크기를 조정할 수 없음
메시지가 표시됩니다. CDI에서 가정하는 기본 오버헤드에는 루트 파티션에 예약된 위치가 완전히 포함되지 않기 때문에 문제가 발생합니다.
이 문제를 해결하려면 CDI의 파일 시스템 오버헤드를 10% 이상 늘립니다.
9.2. must-gather 툴 사용
must-gather
툴을 사용하여 MTV CR(사용자 정의 리소스)에 대한 로그 및 정보를 수집할 수 있습니다. must-gather
데이터 파일을 모든 고객 사례에 연결해야 합니다.
필터링 옵션을 사용하여 특정 네임스페이스, 마이그레이션 계획 또는 VM(가상 머신)에 대한 데이터를 수집할 수 있습니다.
필터링된 must-gather
명령에 존재하지 않는 리소스를 지정하는 경우 아카이브 파일이 생성되지 않습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 OpenShift Virtualization 클러스터에 로그인해야 합니다. -
Red Hat OpenShift CLI(
oc
) 가 설치되어 있어야 합니다.
로그 및 CR 정보 수집
-
must-gather
데이터를 저장하려는 디렉터리로 이동합니다. oc adm must-gather
명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7
데이터는
/must-gather/must-gather.tar.gz
로 저장됩니다. Red Hat 고객 포털에서 해당 지원 사례에 이 파일을 업로드할 수 있습니다.선택 사항:
oc adm must-gather
명령을 다음 옵션과 함께 실행하여 필터링된 데이터를 수집합니다.namespace:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- NS=<namespace> /usr/bin/targeted
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- NS=<namespace> /usr/bin/targeted
마이그레이션 계획:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
가상 머신:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- VM=<vm_id> NS=<namespace> /usr/bin/targeted
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- VM=<vm_id> NS=<namespace> /usr/bin/targeted
1 - 1
Plan
CR에 표시되는 대로 VM ID 를 지정합니다.
9.3. 아키텍처
이 섹션에서는 MTV 사용자 지정 리소스, 서비스 및 워크플로우에 대해 설명합니다.
9.3.1. MTV 사용자 정의 리소스 및 서비스
MTV(Migration Toolkit for Virtualization)는 Red Hat OpenShift Operator로 제공됩니다. 다음 CR(사용자 정의 리소스) 및 서비스를 생성하고 관리합니다.
MTV 사용자 정의 리소스
-
공급자
CR은 MTV가 소스 및 대상 공급자에 연결하고 상호 작용할 수 있는 속성을 저장합니다. -
NetworkMapping
CR은 소스 및 대상 공급자의 네트워크를 매핑합니다. -
StorageMapping
CR은 소스 및 대상 공급자의 스토리지를 매핑합니다. -
plan
CR에는 동일한 마이그레이션 매개변수 및 관련 네트워크 및 스토리지 매핑이 있는 VM 목록이 포함되어 있습니다. Migration
CR은 마이그레이션 계획을 실행합니다.마이그레이션 계획당 하나의 마이그레이션 CR만 지정된 시간에 실행할 수 있습니다.
단일
계획
CR에 대해 여러마이그레이션
CR을 생성할 수 있습니다.
MTV 서비스
인벤토리
서비스는 다음 작업을 수행합니다.- 소스 및 대상 공급자에 연결합니다.
- 매핑 및 계획을 위한 로컬 인벤토리를 유지 관리합니다.
- VM 구성을 저장합니다.
-
VM 구성 변경이 감지되면
유효성 검사
서비스를 실행합니다.
-
유효성 검사
서비스는 규칙을 적용하여 마이그레이션을 위한 VM의 적합성을 확인합니다. Migration Controller
서비스는 마이그레이션을 오케스트레이션합니다.마이그레이션 계획을 생성할 때
Migration Controller
서비스는 계획의 유효성을 검사하고 status 레이블을 추가합니다. 계획 검증에 실패하면 계획 상태가Not ready
이고 마이그레이션을 수행하는 데 계획을 사용할 수 없습니다. 계획이 검증을 통과하면 계획 상태가Ready
이며 마이그레이션을 수행하는 데 사용할 수 있습니다. 마이그레이션에 성공하면Migration Controller
서비스가 계획 상태를Completed
로 변경합니다.-
Populator Controller
서비스는 Volume Populators를 사용하여 디스크 전송을 오케스트레이션합니다. -
Kubevirt 컨트롤러
및CDI(Containerized Data Import) 컨트롤러
서비스는 대부분의 기술 작업을 처리합니다.
9.3.2. 고급 마이그레이션 워크플로
상위 수준 워크플로는 사용자 관점에서 마이그레이션 프로세스를 보여줍니다.
- 소스 공급자, 대상 공급자, 네트워크 매핑 및 스토리지 매핑을 생성합니다.
다음 리소스가 포함된
Plan
CR(사용자 정의 리소스)을 생성합니다.- 소스 제공자
- 대상 공급자( MTV가 대상 클러스터에 설치되지 않은 경우)
- 네트워크 매핑
- 스토리지 매핑
- 하나 이상의 VM(가상 머신)
Plan
CR을 참조하는Migration
CR을 생성하여 마이그레이션 계획을 실행합니다.어떠한 이유로든 모든 VM을 마이그레이션할 수 없는 경우 모든 VM이 마이그레이션될 때까지 동일한
Plan
CR에 대해 여러 개의Migration
CR을 생성할 수 있습니다.-
Plan
CR의 각 VM에 대해Migration Controller
서비스는Migration
CR의 VM 마이그레이션 진행 상황을 기록합니다. Plan
CR의 각 VM의 데이터 전송이 완료되면Migration Controller
서비스에서VirtualMachine
CR을 생성합니다.모든 VM이 마이그레이션되면
Migration Controller
서비스는Plan
CR의 상태를Completed
로 업데이트합니다. 각 소스 VM의 전원 상태는 마이그레이션 후 유지됩니다.
9.3.3. 자세한 마이그레이션 워크플로
자세한 마이그레이션 워크플로를 사용하여 마이그레이션 실패 문제를 해결할 수 있습니다.
워크플로우는 다음 단계를 설명합니다.
원격 OpenShift 클러스터의 웜 마이그레이션 또는 마이그레이션:
마이그레이션
계획을 실행하기 위해 마이그레이션 CR(사용자 정의 리소스)을 생성하면Migration Controller
서비스에서 각 소스 VM 디스크에 대한DataVolume
CR을 생성합니다.각 VM 디스크의 경우:
-
CDI(Containerized Data Importer) 컨트롤러
서비스는DataVolume
CR에 지정된 매개변수를 기반으로 PVC(영구 볼륨 클레임)를 생성합니다. -
StorageClass
에 동적 프로비저너가 있는 경우StorageClass
프로비전 프로그램에 의해 PV(영구 볼륨)가 동적으로 프로비저닝됩니다. -
CDI 컨트롤러
서비스는가져오기
Pod를 생성합니다. 가져오기
Pod는 VM 디스크를 PV로 스트리밍합니다.VM 디스크가 전송된 후 다음을 수행합니다.
Migration Controller
서비스는 VMWare에서 가져올 때 연결된 PVC를 사용하여변환
Pod를 생성합니다.변환
Pod는virt-v2v
를 실행하여 대상 VM의 PVC에 장치 드라이버를 설치하고 구성합니다.-
Migration Controller
서비스는 PVC에 연결된 각 소스 VM(가상 머신)에 대한VirtualMachine
CR을 생성합니다. VM이 소스 환경에서 실행된 경우
마이그레이션
컨트롤러는 VM의 전원을 켜면KubeVirt 컨트롤러
서비스에서virt-launcher
Pod 및VirtualMachineInstance
CR을 생성합니다.virt-launcher
Pod는 VM 디스크로 연결된 PVC를 사용하여QEMU-KVM
을 실행합니다.
RHV 또는 OpenStack에서 로컬 OpenShift 클러스터로 콜드 마이그레이션:
마이그레이션 계획을 실행하기 위해
Migration
Controller(사용자 정의 리소스)를 생성할 때Migration Controller
서비스는PersistentVolumeClaim
CR 각 소스 VM 디스크에 대해 생성되며 소스가 RHV일 때OvirtVolumePopulator
CR 또는 소스가 OpenStack인 경우OpenstackVolumePopulator
CR을 생성합니다.각 VM 디스크의 경우:
-
Populat
or 컨트롤러
서비스는 임시 PVC(영구 볼륨 클레임)를 생성합니다. StorageClass
에 동적 프로비저너가 있는 경우StorageClass
프로비전 프로그램에 의해 PV(영구 볼륨)가 동적으로 프로비저닝됩니다.-
Migration Controller
서비스는 모든 PVC 를 바인딩할 더미 Pod를 생성합니다. Pod 이름에pvcinit
가 포함되어 있습니다.
-
-
Populator Controller
서비스는 팝업 Pod를
생성합니다. 팝업 Pod
는 디스크 데이터를 PV로 전송합니다.VM 디스크가 전송된 후 다음을 수행합니다.
- 임시 PVC가 삭제되고 초기 PVC는 데이터와 함께 PV를 가리킵니다.
-
Migration Controller
서비스는 PVC에 연결된 각 소스 VM(가상 머신)에 대한VirtualMachine
CR을 생성합니다. VM이 소스 환경에서 실행된 경우
마이그레이션
컨트롤러는 VM의 전원을 켜면KubeVirt 컨트롤러
서비스에서virt-launcher
Pod 및VirtualMachineInstance
CR을 생성합니다.virt-launcher
Pod는 VM 디스크로 연결된 PVC를 사용하여QEMU-KVM
을 실행합니다.
VMWare에서 로컬 OpenShift 클러스터로 콜드 마이그레이션:
마이그레이션
계획을 실행하기 위해 마이그레이션 CR(사용자 정의 리소스)을 생성하면Migration Controller
서비스에서 각 소스 VM 디스크에 대한DataVolume
CR을 생성합니다.각 VM 디스크의 경우:
-
CDI(Containerized Data Importer) 컨트롤러
서비스는DataVolume
CR에 지정된 매개변수를 기반으로 빈 PVC(영구 볼륨 클레임)를 생성합니다. -
StorageClass
에 동적 프로비저너가 있는 경우StorageClass
프로비전 프로그램에 의해 PV(영구 볼륨)가 동적으로 프로비저닝됩니다.
모든 VM 디스크의 경우:
-
Migration Controller
서비스는 모든 PVC 를 바인딩할 더미 Pod를 생성합니다. Pod 이름에pvcinit
가 포함되어 있습니다. -
Migration Controller
서비스는 모든 PVC에 대한변환
Pod를 생성합니다. 변환
Pod는virt-v2v
를 실행하여 VM을 KVM 하이퍼바이저로 변환하고 디스크의 데이터를 해당 PV로 전송합니다.VM 디스크가 전송된 후 다음을 수행합니다.
-
Migration Controller
서비스는 PVC에 연결된 각 소스 VM(가상 머신)에 대한VirtualMachine
CR을 생성합니다. VM이 소스 환경에서 실행된 경우
마이그레이션
컨트롤러는 VM의 전원을 켜면KubeVirt 컨트롤러
서비스에서virt-launcher
Pod 및VirtualMachineInstance
CR을 생성합니다.virt-launcher
Pod는 VM 디스크로 연결된 PVC를 사용하여QEMU-KVM
을 실행합니다.
9.4. 로그 및 사용자 정의 리소스
문제 해결을 위해 로그 및 CR(사용자 정의 리소스) 정보를 다운로드할 수 있습니다. 자세한 내용은 자세한 마이그레이션 워크플로 를 참조하십시오.
9.4.1. 수집된 로그 및 사용자 정의 리소스 정보
Red Hat OpenShift 웹 콘솔 또는 CLI(명령줄 인터페이스)를 사용하여 다음 대상에 대한 로그 및 CR(사용자 정의 리소스) yaml
파일을 다운로드할 수 있습니다.
- 마이그레이션 계획: 웹 콘솔 또는 CLI.
- 가상 머신: 웹 콘솔 또는 CLI.
- 네임스페이스: CLI만 해당
must-gather
툴은 아카이브 파일에서 다음 로그 및 CR 파일을 수집합니다.
CRs:
-
DataVolume
CR: 마이그레이션된 VM에 마운트된 디스크를 나타냅니다. -
VirtualMachine
CR: 마이그레이션된 VM을 나타냅니다. -
CR
계획
: VM 및 스토리지 및 네트워크 매핑을 정의합니다. -
작업
CR: 선택 사항: 사전 마이그레이션 후크, 마이그레이션 후 후크 또는 둘 다를 나타냅니다.
-
로그:
-
Importer
pod: Disk-to-data-volume 변환 로그가져오기
Pod 이름 지정 규칙은importer-<migration_plan>-<vm_id><5_char_id
>입니다(예:importer-mig-plan-ed90dfc6-9a17-4a17-4anfh
. 여기서ed90dfc6-9a17-4a17-4a8
은 잘린 RHV VM ID이고btnfh
는 생성된 5자 ID입니다. -
변환
pod: VM 변환 로그.변환
Pod는virt-v2v
를 실행하여 VM의 PVC에 장치 드라이버를 설치하고 구성합니다.변환
Pod 이름 지정 규칙은 <migration_plan>-<vm_id><5_char_id
>입니다. -
virt-launcher
Pod: VM 시작 관리자 로그. 마이그레이션된 VM의 전원이 켜지면virt-launcher
Pod는 VM 디스크로 연결된 PVC를 사용하여QEMU-KVM
을 실행합니다. -
Forklift-controller
Pod:must-gather
명령으로 지정된 마이그레이션 계획, 가상 머신 또는 네임스페이스에 대해 로그가 필터링됩니다. -
Forklift-must-gather-api
Pod:must-gather
명령으로 지정된 마이그레이션 계획, 가상 머신 또는 네임스페이스에 대해 로그가 필터링됩니다. hook-job
pod: 로그는 후크 작업으로 필터링됩니다.hook-job
이름 지정 규칙은 <migration_plan>-<vm_id><5_char_id
>입니다(예:plan2j-vm-3696-posthook-4mx85
또는plan2j-vm-3696-mwqnl
).참고must-gather
아카이브 파일에 비어 있거나 제외된 로그 파일이 포함되지 않습니다.
-
VMware 마이그레이션 계획에 대한 must-gather 아카이브 구조의 예
must-gather └── namespaces ├── target-vm-ns │ ├── crs │ │ ├── datavolume │ │ │ ├── mig-plan-vm-7595-tkhdz.yaml │ │ │ ├── mig-plan-vm-7595-5qvqp.yaml │ │ │ └── mig-plan-vm-8325-xccfw.yaml │ │ └── virtualmachine │ │ ├── test-test-rhel8-2disks2nics.yaml │ │ └── test-x2019.yaml │ └── logs │ ├── importer-mig-plan-vm-7595-tkhdz │ │ └── current.log │ ├── importer-mig-plan-vm-7595-5qvqp │ │ └── current.log │ ├── importer-mig-plan-vm-8325-xccfw │ │ └── current.log │ ├── mig-plan-vm-7595-4glzd │ │ └── current.log │ └── mig-plan-vm-8325-4zw49 │ └── current.log └── openshift-mtv ├── crs │ └── plan │ └── mig-plan-cold.yaml └── logs ├── forklift-controller-67656d574-w74md │ └── current.log └── forklift-must-gather-api-89fc7f4b6-hlwb6 └── current.log
must-gather
└── namespaces
├── target-vm-ns
│ ├── crs
│ │ ├── datavolume
│ │ │ ├── mig-plan-vm-7595-tkhdz.yaml
│ │ │ ├── mig-plan-vm-7595-5qvqp.yaml
│ │ │ └── mig-plan-vm-8325-xccfw.yaml
│ │ └── virtualmachine
│ │ ├── test-test-rhel8-2disks2nics.yaml
│ │ └── test-x2019.yaml
│ └── logs
│ ├── importer-mig-plan-vm-7595-tkhdz
│ │ └── current.log
│ ├── importer-mig-plan-vm-7595-5qvqp
│ │ └── current.log
│ ├── importer-mig-plan-vm-8325-xccfw
│ │ └── current.log
│ ├── mig-plan-vm-7595-4glzd
│ │ └── current.log
│ └── mig-plan-vm-8325-4zw49
│ └── current.log
└── openshift-mtv
├── crs
│ └── plan
│ └── mig-plan-cold.yaml
└── logs
├── forklift-controller-67656d574-w74md
│ └── current.log
└── forklift-must-gather-api-89fc7f4b6-hlwb6
└── current.log
9.4.2. 웹 콘솔에서 로그 및 사용자 정의 리소스 정보 다운로드
Red Hat OpenShift 웹 콘솔을 사용하여 완료, 실패 또는 취소된 마이그레이션 계획 또는 마이그레이션된 VM(가상 머신)의 로그 및 정보를 다운로드할 수 있습니다.
프로세스
- Red Hat OpenShift 웹 콘솔에서 마이그레이션 → 가상화 계획을 클릭합니다.
- 마이그레이션 계획 이름 옆에 있는 로그 가져오기를 클릭합니다.
로그 가져오기 창에서 로그 가져오기 를 클릭합니다.
로그가 수집됩니다.
로그 컬렉션 전체
메시지가 표시됩니다.- 로그 다운로드를 클릭하여 아카이브 파일을 다운로드합니다.
- 마이그레이션된 VM의 로그를 다운로드하려면 마이그레이션 계획 이름을 클릭한 다음 VM 옆에 있는 로그 가져오기를 클릭합니다.
9.4.3. 명령줄 인터페이스에서 로그 및 사용자 정의 리소스 정보에 액세스
must-gather
툴을 사용하여 명령줄 인터페이스에서 로그 및 CR(사용자 정의 리소스)에 액세스할 수 있습니다. must-gather
데이터 파일을 모든 고객 사례에 연결해야 합니다.
필터링 옵션을 사용하여 특정 네임스페이스, 완료, 실패 또는 취소된 마이그레이션 계획 또는 마이그레이션된 VM(가상 머신)에 대한 데이터를 수집할 수 있습니다.
필터링된 must-gather
명령에 존재하지 않는 리소스를 지정하는 경우 아카이브 파일이 생성되지 않습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 OpenShift Virtualization 클러스터에 로그인해야 합니다. -
Red Hat OpenShift CLI(
oc
) 가 설치되어 있어야 합니다.
프로세스
-
must-gather
데이터를 저장하려는 디렉터리로 이동합니다. oc adm must-gather
명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7
데이터는
/must-gather/must-gather.tar.gz
로 저장됩니다. Red Hat 고객 포털에서 해당 지원 사례에 이 파일을 업로드할 수 있습니다.선택 사항:
oc adm must-gather
명령을 다음 옵션과 함께 실행하여 필터링된 데이터를 수집합니다.namespace:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- NS=<namespace> /usr/bin/targeted
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- NS=<namespace> /usr/bin/targeted
마이그레이션 계획:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
가상 머신:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- VM=<vm_name> NS=<namespace> /usr/bin/targeted
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.5.7 \ -- VM=<vm_name> NS=<namespace> /usr/bin/targeted
1 - 1
Plan
CR에 표시되는 VM ID가 아닌 VM 이름을 지정해야 합니다.