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 정보
Migration Toolkit for Virtualization(MTV)을 사용하여 VMware vSphere 또는 Red Hat Virtualization에서 OpenShift Virtualization으로 가상 머신을 마이그레이션할 수 있습니다.
추가 리소스
1.1. 콜드 및 웜 마이그레이션 정보
MTV는 RHV(Red Hat Virtualization) 및 VMware vSphere 및 RHV에서 웜 마이그레이션을 지원합니다.
1.1.1. 콜드 마이그레이션
콜드 마이그레이션은 기본 마이그레이션 유형입니다. 데이터를 복사하는 동안 소스 가상 머신이 종료됩니다.
1.1.2. 웜 마이그레이션
소스 VM(가상 머신)이 실행되는 동안 대부분의 데이터가 사전 복사 단계에서 복사됩니다.
그런 다음 VM이 종료되고 컷오버 단계에서 나머지 데이터가 복사됩니다.
사전 복사 단계
사전 복사 단계에서 VM이 종료되지 않습니다.
VM 디스크는 변경된 블록 추적(CBT) 스냅샷을 사용하여 증분적으로 복사됩니다. 스냅샷은 기본적으로 1시간 간격으로 생성됩니다. forklift-controller
배포를 업데이트하여 스냅샷 간격을 변경할 수 있습니다.
각 소스 VM 및 각 VM 디스크에 대해 CBT를 활성화해야 합니다.
VM은 최대 28개의 CBT 스냅샷을 지원할 수 있습니다. 소스 VM에 너무 많은 CBT 스냅샷이 있고 Migration Controller
서비스에 새 스냅샷을 생성할 수 없는 경우 웜 마이그레이션이 실패할 수 있습니다. Migration Controller
서비스는 스냅샷이 더 이상 필요하지 않은 경우 각 스냅샷을 삭제합니다.
사전 복사 단계는 컷오버 단계가 수동으로 시작되거나 시작될 때까지 실행됩니다.
컷오버 단계
컷오버 단계에서 VM이 종료되고 나머지 데이터가 마이그레이션됩니다. RAM에 저장된 데이터는 마이그레이션되지 않습니다.
MTV 콘솔을 사용하여 컷오버 단계를 수동으로 시작하거나 마이그레이션
매니페스트에서 컷오버 시간을 예약할 수 있습니다.
2장. 사전 요구 사항
다음 사전 요구 사항을 검토하여 환경이 마이그레이션 준비가 되었는지 확인합니다.
2.1. 소프트웨어 요구 사항
호환되는 OpenShift Container Platform 및 OpenShift Virtualization 버전을 설치해야 합니다.
2.2. 스토리지 지원 및 기본 모드
MTV는 지원되는 스토리지에 다음과 같은 기본 볼륨 및 액세스 모드를 사용합니다.
OpenShift Virtualization 스토리지에서 동적 프로비저닝 을 지원하지 않는 경우 다음 설정을 적용해야 합니다.
파일 시스템
볼륨 모드파일 시스템
볼륨 모드는블록
볼륨 모드보다 느립니다.ReadWriteOnce
액세스 모드ReadWriteOnce
액세스 모드는 실시간 가상 머신 마이그레이션을 지원하지 않습니다.
스토리지 프로파일 편집에 대한 자세한 내용은 정적으로 프로비저닝된 스토리지 클래스 활성화를 참조하십시오.
마이그레이션에서 EXT4 파일 시스템으로 생성된 블록 스토리지 및 영구 볼륨을 사용하는 경우 CDI의 파일 시스템 오버헤드를 10% 이상으로 늘립니다. CDI에서 가정하는 기본 오버헤드에는 root 파티션의 예약된 위치가 포함되어 있지 않습니다. 이 용량으로 CDI에서 파일 시스템 오버헤드를 늘리지 않으면 마이그레이션이 실패할 수 있습니다.
provisioner | 볼륨 모드 | 액세스 모드 |
---|---|---|
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 |
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 Engine | RHV 공급자 인벤토리 디스크 전송 인증 |
443 | TCP | OpenShift 노드 | RHV 호스트 | 디스크 전송 인증 |
54322 | TCP | OpenShift 노드 | RHV 호스트 | 디스크 전송 데이터 복사 |
2.4. 소스 가상 머신 사전 요구 사항
다음 사전 요구 사항은 모든 마이그레이션에 적용됩니다.
- ISO/CDROM 디스크를 마운트 해제해야 합니다.
- 각 NIC에는 하나의 IPv4 및/또는 하나의 IPv6 주소를 포함해야 합니다.
-
VM 운영 체제는 OpenShift Virtualization의 게스트 운영 체제로 사용하고
virt-v2v
를 사용한 KVM으로 전환하기 위해 인증되고 지원되어야 합니다. -
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 인증서가 있어야 합니다.
브라우저에서
https://<engine_host>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA로 이동하여 CA
인증서를 가져올 수 있습니다. Manager Apache CA 인증서가 타사 CA 인증서로 교체된 경우 Manager Apache CA 인증서와 Manager CA 인증서가 모두 있어야 합니다.
2.6. VMware 사전 요구 사항
다음 사전 요구 사항이 VMware 마이그레이션에 적용됩니다.
- 호환 가능한 VMware vSphere 버전을 사용해야 합니다.
- 최소 VMware 권한 세트를 가진 사용자로 로그인해야 합니다.
- 모든 소스 가상 머신(VM)에 VMware Tools 를 설치해야 합니다.
- 웜 마이그레이션을 실행하는 경우 VM 및 VM 디스크에서 변경된 블록 추적(CBT) 을 활성화해야 합니다.
- VMware VDDK(가상 디스크 개발 키트) 이미지를 생성해야 합니다.
- vCenter 호스트의 SHA-1 지문을 가져와야 합니다.
- 동일한 마이그레이션 계획에서 ESXi 호스트에서 10개 이상의 VM을 마이그레이션하는 경우 호스트의 gRPC 서비스 메모리를 늘려야 합니다.
- MTV(Migration Toolkit for Virtualization)에서 ECDHEd VM 마이그레이션을 지원하지 않으므로 하이버네이션을 비활성화하는 것이 좋습니다.
정전이 발생하는 경우 하이버네이션이 비활성화된 VM의 경우 데이터가 손실될 수 있습니다. 그러나 하이베이션이 비활성화되지 않은 경우 마이그레이션이 실패합니다.
VMWare에서 VM을 마이그레이션하기 위해 MTV 및 OpenShift Virtualization은 Btrfs 변환을 지원하지 않습니다.
VMware 권한
MCO(Migration Toolkit for Virtualization)를 사용하여 가상 머신을 OpenShift Virtualization으로 마이그레이션하려면 다음과 같은 최소 VMware 권한 세트가 필요합니다.
권한 | 설명 |
---|---|
| |
| 전원이 꺼진 가상 머신의 전원을 끄십시오. 이 작업은 게스트 운영 체제의 전원을 끕니다. |
| 전원이 꺼진 가상 머신의 전원을 켜고 일시 중단된 가상 머신을 다시 시작할 수 있습니다. |
참고
모든 | |
| 임의의 읽기 및 쓰기 액세스에 대해 가상 시스템에서 디스크를 열 수 있습니다. 주로 원격 디스크 마운트에 사용됩니다. |
| VMX, 디스크, 로그, NVRAM을 포함하여 가상 머신과 관련된 파일에 대한 작업을 허용합니다. |
| 임의의 읽기 액세스를 위해 가상 시스템에서 디스크를 열 수 있습니다. 주로 원격 디스크 마운트에 사용됩니다. |
| VMX, 디스크, 로그, NVRAM을 포함하여 가상 머신과 관련된 파일에 대한 읽기 작업을 허용합니다. |
| VMX, 디스크, 로그, NVRAM을 포함하여 가상 머신과 관련된 파일에 대한 쓰기 작업을 허용합니다. |
| 템플릿 복제를 허용합니다. |
| 기존 가상 머신 복제 및 리소스 할당. |
| 가상 머신에서 새 템플릿을 생성할 수 있습니다. |
| 가상 머신을 이동하지 않고 가상 머신의 게스트 운영 체제를 사용자 지정할 수 있습니다. |
| 템플릿에서 가상 머신을 배포할 수 있습니다. |
| 기존의 전원 끄기 가상 머신을 템플릿으로 표시할 수 있습니다. |
| 기존 템플릿을 가상 머신으로 표시할 수 있습니다. |
| 사용자 지정 사양을 생성, 수정 또는 삭제할 수 있습니다. |
| 가상 머신의 디스크에서 승격 작업을 수행할 수 있습니다. |
| 사용자 지정 사양을 읽을 수 있습니다. |
| |
| 가상 머신의 현재 상태에서 스냅샷을 생성할 수 있습니다. |
| 스냅샷 기록에서 스냅샷을 제거할 수 있습니다. |
2.6.1. VDDK 이미지 생성
MCO(Migration Toolkit for Virtualization)는 VMware VDDK(가상 디스크 개발 키트) SDK를 사용하여 VMware vSphere에서 가상 디스크를 전송합니다.
VMware VDDK(가상 디스크 개발 키트)를 다운로드하고 VDDK 이미지를 빌드하고 VDDK 이미지를 이미지 레지스트리로 푸시해야 합니다. VMware 소스 공급자를 추가하려면 VDDK init 이미지 경로가 필요합니다.
VDDK 이미지를 공용 레지스트리에 저장하면 VMware 라이센스 조건을 위반할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 이미지 레지스트리.
-
Podman이
설치되어 있어야 합니다. - 외부 레지스트리를 사용하는 경우 OpenShift Virtualization에서 액세스할 수 있어야 합니다.
절차
임시 디렉터리를 만들고 해당 디렉터리로 이동합니다.
$ mkdir /tmp/<dir_name> && cd /tmp/<dir_name>
- 브라우저에서 VMware VDDK 버전 7 다운로드 페이지로 이동합니다.
- 버전 7.0.3.2를 선택하고 다운로드를 클릭합니다.
- VDDK 아카이브 파일을 임시 디렉터리에 저장합니다.
VDDK 아카이브를 추출합니다.
$ tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
Dockerfile
을 생성합니다.$ 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 이미지를 빌드합니다.
$ podman build . -t <registry_route_or_server_path>/vddk:<tag>
VDDK 이미지를 레지스트리로 푸시합니다.
$ podman push <registry_route_or_server_path>/vddk:<tag>
- OpenShift Virtualization 환경에서 이미지에 액세스할 수 있는지 확인합니다.
2.6.2. vCenter 호스트의 SHA-1 지문 가져오기
Secret
CR을 생성하려면 vCenter 호스트의 SHA-1 지문을 가져와야 합니다.
절차
다음 명령을 실행합니다.
$ 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을 지정합니다.
출력 예
01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67
2.6.3. ESXi 호스트의 iPXE 서비스 메모리 증가
동일한 마이그레이션 계획에서 ESXi 호스트에서 10개 이상의 VM을 마이그레이션하는 경우 호스트의 gRPC 서비스 메모리를 늘려야 합니다. 그러지 않으면 iPXE 서비스 메모리가 10개의 병렬 연결로 제한되기 때문에 마이그레이션이 실패합니다.
절차
- ESXi 호스트에 root로 로그인합니다.
/etc/vmware/hostd/config.xml
에서maxMemory
의 값을1000000000
으로 변경합니다.... <nfcsvc> <path>libnfcsvc.so</path> <enabled>true</enabled> <maxMemory>1000000000</maxMemory> <maxStreamMemory>10485760</maxStreamMemory> </nfcsvc> ...
hostd
재시작:# /etc/init.d/hostd restart
호스트를 재부팅할 필요가 없습니다.
2.7. 소프트웨어 호환성 지침
호환되는 소프트웨어 버전을 설치해야 합니다.
Migration Toolkit for Virtualization | OpenShift Container Platform | OpenShift Virtualization | VMware vSphere | Red Hat Virtualization |
---|---|---|---|---|
2.3.3 | 4.10 이상 | 4.10 이상 | 6.5 이상 | 4.4.9 이상 |
3장. MTV Operator 설치
OpenShift Container Platform 웹 콘솔 또는 CLI(명령줄 인터페이스)를 사용하여 MTV Operator를 설치할 수 있습니다.
3.1. OpenShift Container Platform 웹 콘솔을 사용하여 MTV Operator 설치
OpenShift Container Platform 웹 콘솔을 사용하여 MTV Operator를 설치할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 4.10 이상이 설치되어 있어야 합니다.
- OpenShift 마이그레이션 대상 클러스터에 OpenShift Virtualization Operator가 설치되어 있습니다.
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
절차
- OpenShift Container Platform 웹 콘솔에서 Operator → OperatorHub를 클릭합니다.
- 키워드로 필터링 필드를 사용하여 mtv-operator 를 검색합니다.
- Virtualization Operator에 대한 마이그레이션 Tookit을 클릭한 다음 설치를 클릭합니다.
- Operator 설치 페이지에서 설치를 클릭합니다.
- Operators → 설치된 Operator 를 클릭하여 가상화 Operator의 Migration Tookit 이 openshift-mtv 프로젝트에 Succeeded 상태로 표시되는지 확인합니다.
- 가상화 Operator에 대한 마이그레이션 Tookit을 클릭합니다.
- 제공된 API 에서 ForkliftController 를 찾은 다음 인스턴스 생성을 클릭합니다.
- 생성을 클릭합니다.
- 워크로드 → 포드를 클릭하여 MTV Pod 가 실행 중인지 확인합니다.
- OpenShift Container Platform 웹 콘솔에 로그인합니다.
- 네트워킹 → 경로 를 클릭합니다.
Project: 목록에서
openshift-mtv
프로젝트를 선택합니다.MTV 웹 콘솔의 로그인 페이지를 여는
forklift-ui
서비스의 URL이 표시됩니다.URL을 클릭하여 MTV 웹 콘솔로 이동합니다.
3.2. 명령줄 인터페이스에서 MTV Operator 설치
CLI(명령줄 인터페이스)에서 MTV Operator를 설치할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 4.10 이상이 설치되어 있어야 합니다.
- OpenShift 마이그레이션 대상 클러스터에 OpenShift Virtualization Operator가 설치되어 있습니다.
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
절차
openshift-mtv 프로젝트를 생성합니다.
$ cat << EOF | oc apply -f - apiVersion: project.openshift.io/v1 kind: Project metadata: name: openshift-mtv EOF
migration
이라는OperatorGroup
CR을 생성합니다.$ 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을 생성합니다.$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: mtv-operator namespace: openshift-mtv spec: channel: release-v2.3.0 installPlanApproval: Automatic name: mtv-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: "mtv-operator.2.3.0" EOF
ForkliftController
CR을 생성합니다.$ 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가 실행 중인지 확인합니다.
$ oc get pods -n openshift-mtv
출력 예
NAME READY STATUS RESTARTS AGE forklift-controller-788bdb4c69-mw268 2/2 Running 0 2m forklift-operator-6bf45b8d8-qps9v 1/1 Running 0 5m forklift-ui-7cdf96d8f6-xnw5n 1/1 Running 0 2m
다음 명령을 사용하여 Forklift 웹 콘솔 URL을 가져옵니다.
$ oc get route virt -n openshift-mtv \ -o custom-columns=:.spec.host
MTV 웹 콘솔의 로그인 페이지를 여는
forklift-ui
서비스의 URL이 표시됩니다.출력 예
https://virt-openshift-mtv.apps.cluster.openshift.com.
3.3. MTV 웹 콘솔 URL 가져오기
OpenShift Container Platform 웹 콘솔 또는 명령줄을 사용하여 언제든지 MTV 웹 콘솔 URL을 가져올 수 있습니다.
사전 요구 사항
- OpenShift Virtualization Operator가 설치되어 있어야 합니다.
- MTV Operator가 설치되어 있어야 합니다.
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
절차
OpenShift Container Platform 웹 콘솔을 사용하는 경우 다음 단계를 따르십시오.
- OpenShift Container Platform 웹 콘솔에 로그인합니다.
- 네트워킹 → 경로 를 클릭합니다.
Project: 목록에서
openshift-mtv
프로젝트를 선택합니다.MTV 웹 콘솔의 로그인 페이지를 여는
forklift-ui
서비스의 URL이 표시됩니다.URL을 클릭하여 MTV 웹 콘솔로 이동합니다.
명령줄을 사용하는 경우 다음 명령을 사용하여 MTV 웹 콘솔 URL을 가져옵니다.
$ oc get route virt -n openshift-mtv \ -o custom-columns=:.spec.host
MTV 웹 콘솔의 로그인 페이지를 여는
forklift-ui
서비스의 URL이 표시됩니다.출력 예
https://virt-openshift-mtv.apps.cluster.openshift.com.
이제 브라우저를 시작하고 MTV 웹 콘솔로 이동할 수 있습니다.
4장. MTV 웹 콘솔을 사용하여 가상 머신 마이그레이션
MTV 웹 콘솔을 사용하여 VM(가상 머신)을 OpenShift Virtualization으로 마이그레이션할 수 있습니다.
모든 사전 요구 사항이 충족되었는지 확인해야 합니다.
VMware만 해당: 최소한의 VMware 권한 집합이 있어야 합니다.
VMware만 해당: VMware VDDK(가상 디스크 개발 키트) 이미지를 생성해야 합니다.
4.1. 공급자 추가
MTV 웹 콘솔을 사용하여 가상 머신 마이그레이션에 대한 소스 공급자 및 대상 공급자를 추가할 수 있습니다.
4.1.1. 소스 공급자 추가
MTV 웹 콘솔을 사용하여 Red Hat Virtualization 소스 공급자 또는 VMware 소스 공급자를 추가할 수 있습니다.
4.1.1.1. VMware 소스 공급자 추가
MTV 웹 콘솔을 사용하여 VMware 소스 공급자를 추가할 수 있습니다.
사전 요구 사항
- 모든 클러스터에서 액세스할 수 있는 보안 레지스트리의 VDDK(가상 디스크 개발 키트) 이미지입니다.
절차
- MTV 웹 콘솔에서 Providers 를 클릭합니다.
- 공급자 추가를 클릭합니다.
- 유형 목록에서 VMware 를 선택합니다.
다음 필드를 작성합니다.
- name: 공급자 목록에 표시할 이름입니다.
- 호스트 이름 또는 IP 주소: vCenter 호스트 이름 또는 IP 주소
-
사용자 이름: vCenter 사용자 (예:
user@vsphere.local
) - 암호: vCenter 사용자 암호
- VDDK init 이미지: VDDKInitImage 경로
- 인증서 확인을 클릭합니다.
- I trust the authenticity of this certificate 확인란을 선택합니다.
추가 를 클릭하여 공급자를 추가하고 저장합니다.
소스 공급자가 공급자 목록에 나타납니다.
4.1.1.1.1. VMware 소스 공급자의 마이그레이션 네트워크 선택
소스 공급자의 MTV 웹 콘솔에서 마이그레이션 네트워크를 선택하여 소스 환경에 대한 위험을 줄이고 성능을 개선할 수 있습니다.
마이그레이션을 위해 기본 네트워크를 사용하면 네트워크가 대역폭이 충분하지 않을 수 있으므로 성능이 저하될 수 있습니다. 디스크 전송 작업이 네트워크를 포화 상태로 유지할 수 있기 때문에 이 상황은 소스 플랫폼에 부정적인 영향을 미칠 수 있습니다.
사전 요구 사항
- 마이그레이션 네트워크에는 디스크 전송을 위해 충분한 처리량, 최소 10Gbps 속도가 있어야 합니다.
기본 게이트웨이를 통해 OpenShift Virtualization 노드에서 마이그레이션 네트워크에 액세스할 수 있어야 합니다.
참고소스 가상 디스크는 대상 네임스페이스의 Pod 네트워크에 연결된 Pod에서 복사합니다.
- 마이그레이션 네트워크에는 점보 프레임이 활성화되어 있어야 합니다.
절차
- MTV 웹 콘솔에서 제공자를클릭합니다.
- VMware 탭을 클릭합니다.
- 공급자 옆에 있는 Hosts (호스트) 열에서 호스트 번호를 클릭하여 호스트 목록을 확인합니다.
- 하나 이상의 호스트를 선택하고 마이그레이션 네트워크 선택을 클릭합니다.
네트워크를 선택합니다.
기본 네트워크를 선택하여 선택을 지울 수 있습니다.
소스 공급자가 VMware인 경우 다음 필드를 완료합니다.
-
ESXi 호스트 관리자 사용자 이름: ESXi 호스트 admin 사용자를 지정합니다(예:
root
). - ESXi 호스트 관리자 암호: ESXi 호스트 관리자 암호를 지정합니다.
-
ESXi 호스트 관리자 사용자 이름: ESXi 호스트 admin 사용자를 지정합니다(예:
소스 공급자가 Red Hat Virtualization인 경우 다음 필드를 완료합니다.
- 사용자 이름: Manager 사용자를 지정합니다.
- 암호: Manager 암호를 지정합니다.
- 저장을 클릭합니다.
각 호스트의 상태가 Ready 인지 확인합니다.
호스트 상태가 Ready 가 아닌 경우 마이그레이션 네트워크에서 호스트에 연결할 수 없거나 인증 정보가 올바르지 않을 수 있습니다. 호스트 구성을 수정하고 변경 사항을 저장할 수 있습니다.
4.1.1.2. Red Hat Virtualization 소스 공급자 추가
MTV 웹 콘솔을 사용하여 Red Hat Virtualization 소스 공급자를 추가할 수 있습니다.
사전 요구 사항
- Manager의 CA 인증서입니다.
- Manager의 Apache CA 인증서( Manager Apache CA 인증서가 타사 CA 인증서로 교체된 경우)
절차
- MTV 웹 콘솔에서 Providers 를 클릭합니다.
- 공급자 추가를 클릭합니다.
- 유형 목록에서 Red Hat Virtualization 을 선택합니다.
다음 필드를 작성합니다.
- name: 공급자 목록에 표시할 이름입니다.
- 호스트 이름 또는 IP 주소: Manager 호스트 이름 또는 IP 주소
- 사용자 이름: Manager 사용자
- 비밀번호: Manager 암호
- CA 인증서: Manager의 CA 인증서입니다. Manager Apache CA 인증서가 타사 CA 인증서로 교체된 경우 두 CA 인증서를 모두 지정해야 합니다.
추가 를 클릭하여 공급자를 추가하고 저장합니다.
소스 공급자가 공급자 목록에 나타납니다.
4.1.2. 대상 공급자 추가
MTV 웹 콘솔을 사용하여 OpenShift Virtualization 대상 공급자를 추가할 수 있습니다.
4.1.2.1. OpenShift Virtualization 대상 공급자 추가
MTV를 설치한 공급자인 기본 OpenShift Virtualization 대상 공급자에 추가하여 OpenShift Virtualization 대상 공급자를 MTV 웹 콘솔에 추가할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 OpenShift Virtualization 서비스 계정 토큰이 있어야 합니다.
절차
- MTV 웹 콘솔에서 Providers 를 클릭합니다.
- 공급자 추가를 클릭합니다.
- 유형 목록에서 OpenShift Virtualization 을 선택합니다.
다음 필드를 완료하십시오.
- 클러스터 이름: 대상 공급자 목록에 표시할 클러스터 이름을 지정합니다.
- url: 클러스터의 API 끝점을 지정합니다.
-
서비스 계정 토큰:
cluster-admin
서비스 계정 토큰을 지정합니다.
- 연결 확인을 클릭하여 자격 증명을 확인합니다.
추가를 클릭합니다.
공급자가 공급자 목록에 나타납니다.
4.1.2.2. OpenShift Virtualization 공급자의 마이그레이션 네트워크 선택
MTV 웹 콘솔에서 OpenShift Virtualization 공급자의 기본 마이그레이션 네트워크를 선택하여 성능을 향상시킬 수 있습니다. 기본 마이그레이션 네트워크는 디스크를 구성된 네임스페이스로 전송하는 데 사용됩니다.
마이그레이션 네트워크를 선택하지 않으면 기본 마이그레이션 네트워크가 Pod
네트워크이며 디스크 전송에는 적합하지 않을 수 있습니다.
마이그레이션 계획을 생성할 때 다른 네트워크를 선택하여 공급자의 기본 마이그레이션 네트워크를 재정의할 수 있습니다.
절차
- MTV 웹 콘솔에서 Providers 를 클릭합니다.
- OpenShift Virtualization 탭을 클릭합니다.
- 공급자를 선택하고 마이그레이션 네트워크 선택을 클릭합니다.
- 사용 가능한 네트워크 목록에서 네트워크를 선택하고 선택을 클릭합니다.
- 공급자 옆에 있는 Networks 열에서 네트워크 번호를 클릭하여 선택한 네트워크가 기본 마이그레이션 네트워크인지 확인합니다.
4.2. 네트워크 매핑 생성
MTV 웹 콘솔을 사용하여 소스 네트워크를 OpenShift Virtualization 네트워크에 매핑하여 하나 이상의 네트워크 매핑을 생성할 수 있습니다.
사전 요구 사항
- 웹 콘솔에 추가된 소스 및 대상 공급자입니다.
- 둘 이상의 소스 및 대상 네트워크를 매핑하는 경우 각 추가 OpenShift Virtualization 네트워크에는 자체 네트워크 연결 정의 가 필요합니다.
절차
- 매핑을 클릭합니다.
- Network 탭을 클릭한 다음 매핑 생성을 클릭합니다.
다음 필드를 완료하십시오.
- name: 네트워크 매핑 목록에 표시할 이름을 입력합니다.
- 소스 공급자: 소스 공급자를 선택합니다.
- 대상 공급자: 대상 공급자를 선택합니다.
- 소스 네트워크: 소스 네트워크를 선택합니다.
- 대상 네임스페이스/네트워크: 대상 네트워크를 선택합니다.
- 선택 사항: 추가 를 클릭하여 추가 네트워크 매핑을 생성하거나 여러 소스 네트워크를 단일 대상 네트워크에 매핑합니다.
- 추가 네트워크 매핑을 생성하는 경우 대상 네트워크로 네트워크 연결 정의를 선택합니다.
생성을 클릭합니다.
네트워크 매핑이 네트워크 매핑 화면에 표시됩니다.
4.3. 스토리지 매핑 생성
MTV 웹 콘솔을 사용하여 소스 데이터 저장소를 OpenShift Virtualization 스토리지 클래스에 매핑하여 스토리지 매핑을 생성할 수 있습니다.
사전 요구 사항
- 웹 콘솔에 추가된 소스 및 대상 공급자입니다.
- VM 마이그레이션을 지원하는 로컬 및 공유 영구 스토리지입니다.
절차
- 매핑을 클릭합니다.
- 스토리지 탭을 클릭한 다음 매핑 생성을 클릭합니다.
- 스토리지 매핑 의 이름을 입력합니다.
- 소스 공급자와 대상 공급자를 선택합니다.
- 소스 공급자가 VMware인 경우 소스 데이터 저장소 및 대상 스토리지 클래스 를 선택합니다.
- 소스 공급자가 Red Hat Virtualization인 경우 소스 스토리지 도메인 및 대상 스토리지 클래스 를 선택합니다.
- 선택 사항: 추가 를 클릭하여 추가 스토리지 매핑을 생성하거나 여러 소스 데이터 저장소 또는 스토리지 도메인을 단일 스토리지 클래스에 매핑합니다.
생성을 클릭합니다.
매핑은 스토리지 매핑 페이지에 표시됩니다.
4.4. 마이그레이션 계획 생성
MTV 웹 콘솔을 사용하여 마이그레이션 계획을 생성할 수 있습니다.
마이그레이션 계획을 통해 가상 머신을 함께 또는 동일한 마이그레이션 매개변수로 그룹화할 수 있습니다(예: 클러스터 멤버의 백분율 또는 전체 애플리케이션).
마이그레이션 계획의 지정된 단계에서 Ansible 플레이북 또는 사용자 정의 컨테이너 이미지를 실행하도록 후크를 구성할 수 있습니다.
사전 요구 사항
- MTV가 대상 클러스터에 설치되어 있지 않은 경우 웹 콘솔의 공급자 페이지에 대상 공급자를 추가해야 합니다.
절차
- 웹 콘솔에서 마이그레이션 계획을 클릭한 다음 마이그레이션 계획 생성을 클릭합니다.
다음 필드를 완료하십시오.
- 계획 이름: 마이그레이션 계획 목록에 표시할 마이그레이션 계획 이름을 입력합니다.
- 계획 설명: 선택 사항: 마이그레이션 계획에 대한 간략한 설명입니다.
- 소스 공급자: 소스 공급자를 선택합니다.
- 대상 공급자: 대상 공급자를 선택합니다.
- 대상 네임스페이스: 기존 대상 네임스페이스를 검색하거나 새 네임스페이스를 생성하도록 입력할 수 있습니다.
이 계획의 마이그레이션 전송 네트워크를 변경할 수 있습니다. 다른 네트워크 선택, 목록에서 네트워크를 선택한 후 선택을 클릭하여 계획의 마이그레이션 전송 네트워크를 변경할 수 있습니다.
OpenShift Virtualization 공급자의 마이그레이션 전송 네트워크를 정의하고 네트워크가 대상 네임스페이스에 있는 경우 모든 마이그레이션 계획의 기본 네트워크입니다. 그렇지 않으면
Pod
네트워크가 사용됩니다.
- 다음을 클릭합니다.
- 소스 VM 목록을 필터링하는 옵션을 선택하고 다음을 클릭합니다.
- 마이그레이션할 VM을 선택한 다음 다음을 클릭합니다.
기존 네트워크 매핑을 선택하거나 새 네트워크 매핑을 생성합니다.
새 네트워크 매핑을 생성하려면 다음을 수행합니다.
- 각 소스 네트워크에 대해 대상 네트워크를 선택합니다.
- 선택 사항: 다시 사용할 매핑 저장 을 선택하고 네트워크 매핑 이름을 입력합니다.
- 다음을 클릭합니다.
기존 스토리지 매핑을 선택하거나 새 스토리지 매핑을 생성합니다.
새 스토리지 매핑을 생성하려면 다음을 수행합니다.
- 각 VMware 데이터 저장소 또는 Red Hat Virtualization 스토리지 도메인의 대상 스토리지 클래스를 선택합니다.
- 선택 사항: 다시 사용할 매핑 저장 을 선택하고 스토리지 매핑 이름을 입력합니다.
- 다음을 클릭합니다.
마이그레이션 유형을 선택하고 다음을 클릭합니다.
- 콜드 마이그레이션: 데이터를 복사하는 동안 소스 VM이 중지됩니다.
- 웜 마이그레이션: 데이터를 점진적으로 복사하는 동안 소스 VM이 실행됩니다. 나중에 VM을 중지하고 나머지 VM 데이터 및 메타데이터를 복사하는 컷오버를 실행합니다.
선택 사항: 마이그레이션 전 또는 마이그레이션 후 Ansible 플레이북을 실행하도록 마이그레이션 후크를 생성할 수 있습니다.
- 후크 추가를 클릭합니다.
- 후크를 실행할 단계를 선택합니다.
후크 정의를 선택합니다.
- Ansible playbook: Ansible 플레이북을 찾아보거나 필드에 붙여넣습니다.
사용자 정의 컨테이너 이미지: 기본
hook-runner
이미지를 사용하지 않으려면 이미지 경로 <registry_path>/<image_name>:<tag
> 를 입력합니다.참고OpenShift Container Platform 클러스터에서 레지스트리에 액세스할 수 있어야 합니다.
- 다음을 클릭합니다.
마이그레이션 계획을 검토하고 완료 를 클릭합니다.
마이그레이션 계획이 마이그레이션 계획 목록에 저장됩니다.
-
마이그레이션 계획의 옵션 메뉴
를 클릭하고 세부 정보 보기 를 선택하여 마이그레이션 계획 세부 정보를 확인합니다.
4.5. 마이그레이션 계획 실행
마이그레이션 계획을 실행하고 MTV 웹 콘솔에서 진행 상황을 볼 수 있습니다.
사전 요구 사항
- 유효한 마이그레이션 계획.
절차
마이그레이션 계획을 클릭합니다.
마이그레이션 계획 목록에 소스 및 대상 공급자, 마이그레이션 중인 VM(가상 머신) 수 및 계획 상태가 표시됩니다.
마이그레이션 계획 옆에 있는 시작을 클릭하여 마이그레이션을 시작합니다.
웜 마이그레이션만 해당:
- 사전 복사 단계가 시작됩니다.
- 컷오버 를 클릭하여 마이그레이션을 완료합니다.
마이그레이션 계획을 확장하여 마이그레이션 세부 정보를 확인합니다.
마이그레이션 세부 정보 화면에는 마이그레이션 시작 및 종료 시간, 복사된 데이터 양, 마이그레이션 중인 각 VM의 진행 파이프라인이 표시됩니다.
- VM을 확장하여 마이그레이션 단계, 각 단계의 경과 시간 및 상태를 확인합니다.
4.6. 마이그레이션 계획 옵션
MTV 웹 콘솔의 마이그레이션 계획 페이지에서 마이그레이션 계획 옆에 있는 옵션 메뉴
를 클릭하여 다음 옵션에 액세스할 수 있습니다.
- edit: 마이그레이션 계획의 세부 사항을 편집합니다. 실행 중 또는 성공적으로 완료된 후에는 마이그레이션 계획을 편집할 수 없습니다.
duplicate: 기존 계획과 동일한 VM(가상 머신), 매개변수, 매핑 및 후크를 사용하여 새 마이그레이션 계획을 생성합니다. 이 기능은 다음 작업에 사용할 수 있습니다.
- VM을 다른 네임스페이스로 마이그레이션합니다.
- 아카이브된 마이그레이션 계획을 편집합니다.
- 다른 상태(예: failed, canceled, running, critical 또는 ready)로 마이그레이션 계획을 편집합니다.
아카이브: 마이그레이션 계획의 로그, 기록 및 메타데이터를 삭제합니다. 계획을 편집하거나 다시 시작할 수 없습니다. 이것은 단지 볼 수 있습니다.
참고Archive 옵션은 되돌릴 수 없습니다. 그러나 보관된 계획을 복제할 수 있습니다.
삭제: 마이그레이션 계획을 영구적으로 제거합니다. 실행 중인 마이그레이션 계획을 삭제할 수 없습니다.
참고삭제 옵션은 되돌릴 수 없습니다.
마이그레이션 계획을 삭제해도
가져오기
Pod,변환
Pod, 구성 맵, 시크릿, 실패한 VM 및 데이터 볼륨과 같은 임시 리소스가 제거되지 않습니다. (BZ#2018974) 임시 리소스를 정리하려면 삭제하기 전에 마이그레이션 계획을 보관해야 합니다.- 세부 정보 보기: 마이그레이션 계획의 세부 정보를 표시합니다.
- 재시작: 실패하거나 취소된 마이그레이션 계획을 다시 시작합니다.
- cancel scheduled cutover: 웜 마이그레이션 계획에 대한 예정된 컷오버 마이그레이션을 취소합니다.
4.7. 마이그레이션 취소
MTV 웹 콘솔을 사용하여 마이그레이션 계획이 진행 중인 동안 일부 또는 모든 VM(가상 머신)의 마이그레이션을 취소할 수 있습니다.
절차
- 마이그레이션 계획을 클릭합니다.
- 실행 중인 마이그레이션 계획의 이름을 클릭하여 마이그레이션 세부 정보를 확인합니다.
- 하나 이상의 VM을 선택하고 취소 를 클릭합니다.
예를 클릭하여 취소 를 확인합니다.
VM의 마이그레이션 세부 정보 목록에서 취소된 VM의 상태가 취소됩니다. 마이그레이션되지 않은 가상 머신과 마이그레이션된 가상 머신은 영향을 받지 않습니다.
마이그레이션 계획 페이지의 마이그레이션 계획 옆에 있는 마이그레이션 재시작 을 클릭하여 취소된 마이그레이션 을 다시 시작할 수 있습니다.
5장. 명령줄에서 가상 머신 마이그레이션
명령줄에서 가상 머신을 OpenShift Virtualization으로 마이그레이션할 수 있습니다.
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다. - VMware만 해당: 최소한의 VMware 권한 집합이 있어야 합니다.
- VMware만 해당: vCenter SHA-1 지문이 있어야 합니다.
- VMware만 해당: VMware VDDK(가상 디스크 개발 키트) 이미지를 생성해야 합니다.
- 모든 사전 요구 사항이 충족되었는지 확인해야 합니다.
5.1. 가상 머신 마이그레이션
MTV CR(사용자 정의 리소스)을 생성하여 CLI(명령줄)에서 VM(가상 머신)을 마이그레이션합니다.
클러스터 범위 CR의 이름을 지정해야 합니다.
네임스페이스 범위 CR에 이름과 네임스페이스를 모두 지정해야 합니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다. - VMware만 해당: 모든 클러스터에서 액세스할 수 있는 보안 레지스트리에 VMware VDDK(가상 디스크 개발 키트) 이미지가 있어야 합니다.
절차
소스 공급자 인증 정보에 대한
Secret
매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: openshift-mtv type: Opaque stringData: user: <user> 1 password: <password> 2 cacert: | 3 <engine_ca_certificate> thumbprint: <vcenter_fingerprint> 4 EOF
소스 공급자에 대한
공급자
매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <provider> namespace: openshift-mtv spec: type: <provider_type> 1 url: <api_end_point> 2 settings: vddkInitImage: <registry_route_or_server_path>/vddk:<tag> 3 secret: name: <secret> 4 namespace: openshift-mtv EOF
VMware만 해당:
호스트
매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Host metadata: name: <vmware_host> namespace: openshift-mtv spec: provider: namespace: openshift-mtv name: <source_provider> 1 id: <source_host_mor> 2 ipAddress: <source_network_ip> 3 EOF
네트워크 맵
매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: openshift-mtv spec: map: - destination: name: <pod> namespace: openshift-mtv type: pod 1 source: 2 id: <source_network_id> 3 name: <source_network_name> - destination: name: <network_attachment_definition> 4 namespace: <network_attachment_definition_namespace> 5 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF
소스 및 대상 스토리지를 매핑할
StorageMap
매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: openshift-mtv spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode> 1 source: id: <source_datastore> 2 - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_datastore> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF
선택 사항:
계획
CR에 지정된 단계에서 VM에서 사용자 정의 코드를 실행하도록후크
매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: openshift-mtv spec: image: quay.io/konveyor/hook-runner 1 playbook: | 2 LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
마이그레이션에 대한
계획
매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> 1 namespace: openshift-mtv spec: warm: true 2 provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv map: network: 3 name: <network_map> 4 namespace: openshift-mtv storage: name: <storage_map> 5 namespace: openshift-mtv targetNamespace: openshift-mtv vms: 6 - id: <source_vm> 7 - name: <source_vm> hooks: 8 - hook: namespace: openshift-mtv name: <hook> 9 step: <step> 10 EOF
- 1
Plan
CR의 이름을 지정합니다.- 2
- 마이그레이션이 웜인지 콜드인지 지정합니다. 마이그레이션 매니페스트에서
cutover
매개변수 값을 지정하지 않고 웜마이그레이션
을 지정하면 사전 복사 단계만 실행됩니다. - 3
- 여러 네트워크 매핑을 추가할 수 있습니다.
- 4
NetworkMap
CR의 이름을 지정합니다.- 5
StorageMap
CR의 이름을 지정합니다.- 6
id
또는name
매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 7
- VMware VM MOR 또는 RHV VM UUID를 지정합니다.
- 8
- 선택 사항: VM에 후크를 최대 2개까지 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 9
후크
CR의 이름을 지정합니다.- 10
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
입니다. 마이그레이션이 완료된 후PostHook
입니다.
계획
CR을 실행할마이그레이션
매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration> 1 namespace: openshift-mtv spec: plan: name: <plan> 2 namespace: openshift-mtv cutover: <cutover_time> 3 EOF
여러
마이그레이션
CR을 단일계획
CR과 연결할 수 있습니다. 마이그레이션이 완료되지 않으면Plan
CR을 변경하지 않고 새Migration
CR을 생성하여 나머지 VM을 마이그레이션할 수 있습니다.Migration
CR을 검색하여 마이그레이션의 진행 상황을 모니터링합니다.$ oc get migration/<migration> -n openshift-mtv -o yaml
5.2. vCenter 호스트의 SHA-1 지문 가져오기
Secret
CR을 생성하려면 vCenter 호스트의 SHA-1 지문을 가져와야 합니다.
절차
다음 명령을 실행합니다.
$ 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을 지정합니다.
출력 예
01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67
5.3. 마이그레이션 취소
CLI(명령줄 인터페이스)에서 마이그레이션이 진행되는 동안 전체 마이그레이션 또는 개별 VM(가상 머신)을 취소할 수 있습니다.
전체 마이그레이션 취소
Migration
CR을 삭제합니다.$ oc delete migration <migration> -n openshift-mtv 1
- 1
Migration
CR의 이름을 지정합니다.
개별 VM의 마이그레이션 취소
마이그레이션
매니페스트의spec.cancel
블록에 개별 VM을 추가합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration> namespace: openshift-mtv ... 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의 진행 상황을 모니터링합니다.$ oc get migration/<migration> -n openshift-mtv -o yaml
6장. 고급 마이그레이션 옵션
6.1. 웜 마이그레이션을 위한 사전 복사 간격 변경
ForkliftController
CR(사용자 정의 리소스)에 패치를 적용하여 스냅샷 간격을 변경할 수 있습니다.
절차
ForkliftController
CR을 패치합니다.$ oc patch forkliftcontroller/<forklift-controller> -n openshift-mtv -p '{"spec": {"controller_precopy_interval": <60>}}' --type=merge 1
- 1
- 사전 복사 간격을 분 단위로 지정합니다. 기본값은
60
입니다.
forklift-controller
Pod를 다시 시작할 필요가 없습니다.
6.2. 유효성 검사 서비스에 대한 사용자 정의 규칙 생성
유효성 검사
서비스에서는OPA(Open Policy Agent) 정책 규칙을 사용하여 마이그레이션을 위한 각 VM(가상 머신)의 적합성을 확인합니다. 유효성 검사
서비스는 각 VM에 대한 우려 목록을 생성합니다. 이 목록은 공급자 인벤토리
서비스에 VM 속성으로 저장됩니다. 웹 콘솔에 공급자 인벤토리의 각 VM에 대한 우려가 표시됩니다.
사용자 지정 규칙을 생성하여 Validation
서비스의 기본 규칙 세트를 확장할 수 있습니다. 예를 들어 VM에 여러 개의 디스크가 있는지 확인하는 규칙을 생성할 수 있습니다.
6.2.1. Rego 파일 정보
검증 규칙은 Rego,OPA(Open Policy Agent) 네이티브 쿼리 언어로 작성됩니다. 규칙은 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 1 has_drs_enabled { input.host.cluster.drsEnabled 2 } 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. 기본 검증 규칙 확인
사용자 지정 규칙을 만들기 전에 유효성 검사 서비스의 기본 규칙을 확인하여 기존 기본값을 재정의하는 규칙을 만들지 않도록 해야 합니다.Before you create a custom rule, you must check the default rules of the Validation
service to ensure that you do not create a rule that overriddens an existing default value.
예: 기본 규칙에 기본 valid_input = false 줄이 포함되어 있고
줄이 포함된 사용자 정의 규칙을 생성하면 default valid_input =
true유효성 검사
서비스가 시작되지 않습니다.
절차
Validation
Pod의 터미널에 연결합니다.$ oc rsh <validation_pod>
공급자의 OPA 정책 디렉터리로 이동합니다.
$ cd /usr/share/opa/policies/io/konveyor/forklift/<provider> 1
- 1
vmware
또는ovirt
를 지정합니다.
기본 정책을 검색합니다.
$ grep -R "default" *
6.2.3. 인벤토리 서비스 JSON 검색
인벤토리
서비스 쿼리를 VM(가상 머신 )으로 전송하여 인벤토리
서비스 JSON을 검색합니다. 출력에는 유효성 검사
서비스 규칙에서 쿼리하는 인벤토리 속성이 포함된 "입력"
키가 포함되어 있습니다.
"input"
키의 속성(예: input.snapshot.kind
)을 기반으로 검증 규칙을 생성할 수 있습니다.
절차
프로젝트의 경로를 검색합니다.
oc get route -n openshift-mtv
인벤토리
서비스 경로를 검색합니다.$ oc get route <inventory_service> -n openshift-mtv
액세스 토큰을 검색합니다.
$ TOKEN=$(oc whoami -t)
HTTP GET 요청을 트리거합니다(예: Curl 사용).
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers -k
공급자의
UUID
를 검색합니다.$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider> -k 1
- 1
- 공급자에 허용되는 값은
vsphere
및ovirt
입니다.
공급자의 VM을 검색합니다.
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/vms -k
VM의 세부 정보를 검색합니다.
$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/workloads/<vm> -k
출력 예
{ "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 } } } }
6.2.4. 검증 규칙 생성
유효성 검사 서비스에 규칙이 포함된 구성 맵 CR(사용자 정의 리소스)을 적용하여 검증
규칙을 생성합니다.
-
기존 규칙과 동일한 이름으로 규칙을 생성하면
유효성 검사
서비스에서OR
규칙을 사용하여 작업을 수행합니다. -
기본 규칙과 일치하는 규칙을 생성하면
유효성 검사
서비스가 시작되지 않습니다.
검증 규칙 예
검증 규칙은 공급자 인벤토리
서비스에서 수집한 VM(가상 머신) 특성을 기반으로 합니다.
예를 들어 VMware API는 이 경로를 사용하여 VMware VM에 NUMA 노드 선호도가 구성되어 있는지 확인합니다. MOR:ECDHE.config.extraConfig["numa.nodeAffinity"]
.
Provider Inventory
서비스는 이 구성을 단순화하고 목록 값이 있는 테스트 가능한 특성을 반환합니다.
"numaNodeAffinity": [ "0", "1" ],
이 특성을 기반으로 Rego 쿼리를 생성하여 forklift-validation-config
구성 맵에 추가합니다.
`count(input.numaNodeAffinity) != 0`
절차
다음 예에 따라 구성 맵 CR을 생성합니다.
$ 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
으로 스케일링하여유효성 검사
Pod를 중지합니다.$ oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
forklift-controller
배포를1
로 확장하여유효성 검사
Pod를 시작합니다.$ oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
검증
Pod 로그를 확인하여 Pod가 시작되었는지 확인합니다.$ oc logs -f <validation_pod>
사용자 정의 규칙이 기본 규칙과 충돌하는 경우
Validation
Pod가 시작되지 않습니다.소스 공급자를 제거합니다.
$ oc delete provider <provider> -n openshift-mtv
새 규칙을 적용하려면 소스 공급자를 추가합니다.
$ 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.5. 인벤토리 규칙 버전 업데이트
공급자 인벤토리 서비스가 변경 사항을 감지하고
규칙 버전을 업데이트해야 합니다.
Validation
서비스를 트리거하도록 규칙을 업데이트할 때마다 인벤토리
규칙 버전은 각 공급자에 대한 rules_version.rego
파일에 기록됩니다.
절차
현재 규칙 버전을 검색합니다.
$ GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version 1
출력 예
{ "result": { "rules_version": 5 } }
Validation
Pod의 터미널에 연결합니다.$ oc rsh <validation_pod>
-
/usr/share/opa/policies/io/konveyor/forklift/<provider>/rules_version.rego
파일에서 규칙 버전을 업데이트합니다. -
검증
Pod 터미널에서 로그아웃합니다. 업데이트된 규칙 버전을 확인합니다.
$ GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version 1
출력 예
{ "result": { "rules_version": 6 } }
7장. Migration Toolkit for Virtualization 업그레이드
OpenShift Container Platform 웹 콘솔을 사용하여 새 버전을 설치하여 MTV Operator를 업그레이드할 수 있습니다.
예를 들어 2.0에서 2.1으로 또는 2.1에서 2.2로 릴리스를 건너뛰지 않고 다음 릴리스로 업그레이드해야 합니다.
절차
- OCP 웹 콘솔에서 Operator → 설치된 Operator → Migration Tookit for Virtualization Operator → 서브스크립션을 클릭합니다.
업데이트 채널을 올바른 릴리스로 변경합니다.
OpenShift Container Platform 설명서의 업데이트 채널 변경 단원을 참조하십시오.
Upgrade 상태가 Up to date 에서 Upgrade available 로 변경되는지 확인합니다. 그러지 않으면
CatalogSource
Pod를 다시 시작합니다.-
카탈로그 소스를 확인합니다(예:
redhat-operators
). 명령줄에서 카탈로그 소스 Pod를 검색합니다.
$ oc get pod -n openshift-marketplace | grep <catalog_source>
Pod를 삭제합니다.
$ oc delete pod -n openshift-marketplace <catalog_source_pod>
상태 변경 사항을 Up to date 에서 Upgrade available 로 업그레이드합니다.
서브스크립션 탭에서 Update approval 를 Automatic 으로 설정하면 업그레이드가 자동으로 시작됩니다.
-
카탈로그 소스를 확인합니다(예:
Subscription 탭에서 Update approval 를 Manual 로 설정한 경우 업그레이드를 승인합니다.
OpenShift Container Platform 설명서에서 수동 업그레이드 승인 단원을 참조하십시오.
웹 콘솔에 로그인하기 전에
forklift-ui
Pod가Ready
상태인지 확인합니다.$ oc get pods -n openshift-mtv
출력 예
NAME READY STATUS RESTARTS AGE forklift-controller-788bdb4c69-mw268 2/2 Running 0 2m forklift-operator-6bf45b8d8-qps9v 1/1 Running 0 5m forklift-ui-7cdf96d8f6-xnw5n 1/1 Running 0 2m
-
VMware 소스 공급자를 MTV 2.2에 추가한 경우 MTV 2.3으로 업그레이드하면 VMware 공급자의 상태가 Critical으로 변경됩니다. 이 문제를 해결하려면 VDDK
init
이미지를 추가하고 VMware 공급자의 인증서를 확인하여 VMwhere 공급자를 편집합니다. 자세한 내용은 VMSphere 소스 공급자 삽입을 참조하십시오. -
MTV 2.2의 OpenShift Container Platform 대상 공급자의 NFS에 매핑한 경우 MTV 2.3으로 업그레이드하면 NFS 매핑이 무효화됩니다. 이 문제를 해결하려면 NFS 스토리지 프로필에서
AccessModes
및VolumeMode
매개변수를 편집합니다. 자세한 내용은 스토리지 프로필 사용자 지정을 참조하십시오.
8장. Migration Toolkit for Virtualization 설치 제거
OpenShift Container Platform 웹 콘솔 또는 CLI(명령줄 인터페이스)를 사용하여 MCP(Migration Toolkit for Virtualization)를 설치 제거할 수 있습니다.
8.1. OpenShift Container Platform 웹 콘솔을 사용하여 MTV 설치 제거
OpenShift Container Platform 웹 콘솔을 사용하여 openshift-mtv
프로젝트 및 CRD(사용자 정의 리소스 정의)를 삭제하여 MTV(Migration Toolkit for Virtualization)를 설치 제거할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
절차
- 홈 → 프로젝트를 클릭합니다.
- openshift-mtv 프로젝트를 찾습니다.
-
프로젝트 오른쪽의 옵션 메뉴
에서 프로젝트 삭제 를 선택합니다.
- 프로젝트 삭제 창에서 프로젝트 이름을 입력하고 삭제 를 클릭합니다.
- Administration → CustomResourceDefinitions 를 클릭합니다.
-
Search 필드에
forklift
를 입력하여forklift.konveyor.io
그룹에서 CRD를 찾습니다. -
각 CRD 오른쪽의 옵션 메뉴
에서 CustomResourceDefinition 삭제 를 선택합니다.
8.2. 명령줄 인터페이스에서 MTV 설치 제거
openshift-mtv
프로젝트 및 forklift.konveyor.io
CRD(사용자 정의 리소스 정의)를 삭제하여 CLI(명령줄 인터페이스)에서 MCO(Migration Toolkit for Virtualization)를 제거할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인해야 합니다.
절차
프로젝트를 삭제합니다.
$ oc delete project openshift-mtv
CRD를 삭제합니다.
$ oc get crd -o name | grep 'forklift' | xargs oc delete
OAuthClient를 삭제합니다.
$ oc delete oauthclient/forklift-ui
9장. 문제 해결
이 섹션에서는 일반적인 마이그레이션 문제 해결에 대한 정보를 제공합니다.
9.1. 오류 메시지
이 섹션에서는 오류 메시지와 해결 방법에 대해 설명합니다.
웜 가져오기 재시도 제한에 도달했습니다.
VMware 가상 머신(VM)이 사전 복사 단계에서 최대 CBT(변경된 블록 추적) 스냅샷에 도달한 경우 웜 가져오기 재시도 제한
도달 오류 메시지가 표시됩니다.
이 문제를 해결하려면 VM에서 일부 CBT 스냅샷을 삭제하고 마이그레이션 계획을 다시 시작합니다.
필요한 크기로 디스크 이미지의 크기를 조정할 수 없음
대상 공급자의 가상 시스템에서 블록 스토리지에서 EXT4 파일 시스템이 있는 영구 볼륨을 사용하므로 마이그레이션이 실패하면 Unable to resize disk image to required size
error 메시지가 표시됩니다. CDI에서 가정하는 기본 오버헤드가 루트 파티션의 예약된 위치를 완전히 포함하지 않기 때문에 문제가 발생합니다.
이 문제를 해결하려면 CDI의 파일 시스템 오버헤드를 10% 이상으로 늘립니다.
9.2. must-gather 툴 사용
must-gather
툴을 사용하여 MTV CR(사용자 정의 리소스)에 대한 로그 및 정보를 수집할 수 있습니다. 모든 고객 사례에 must-gather
데이터 파일을 첨부해야 합니다.
필터링 옵션을 사용하여 특정 네임스페이스, 마이그레이션 계획 또는 VM(가상 머신)에 대한 데이터를 수집할 수 있습니다.
필터링된 must-gather
명령에서 존재하지 않는 리소스를 지정하는 경우 아카이브 파일이 생성되지 않습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 OpenShift Virtualization 클러스터에 로그인해야 합니다. -
OpenShift Container Platform CLI(
oc
) 가 설치되어 있어야 합니다.
로그 및 CR 정보 수집
-
must-gather
데이터를 저장하려는 디렉터리로 이동합니다. oc adm must-gather
명령을 실행합니다.$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0
데이터는
/must-gather/must-gather.tar.gz
로 저장됩니다. Red Hat 고객 포털에서 해당 지원 사례에 이 파일을 업로드할 수 있습니다.선택 사항: 다음 옵션을 사용하여
oc adm must-gather
명령을 실행하여 필터링된 데이터를 수집합니다.네임스페이스:
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0 \ -- NS=<namespace> /usr/bin/targeted
마이그레이션 계획:
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0 \ -- PLAN=<migration_plan> /usr/bin/targeted
가상 머신:
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0 \ -- VM=<vm_id> NS=<namespace> /usr/bin/targeted 1
9.3. 아키텍처
이 섹션에서는 MTV 사용자 지정 리소스, 서비스 및 워크플로우에 대해 설명합니다.
9.3.1. MTV 사용자 정의 리소스 및 서비스
MCO(Migration Toolkit for Virtualization)는 OpenShift Container Platform Operator로 제공됩니다. 다음 CR(사용자 정의 리소스) 및 서비스를 생성하고 관리합니다.
MTV 사용자 정의 리소스
-
공급자
CR은 MTV가 소스 및 대상 공급자에 연결하여 상호 작용할 수 있는 속성을 저장합니다. -
NetworkMapping
CR은 소스 및 대상 공급자의 네트워크를 매핑합니다. -
StorageMapping
CR은 소스 및 대상 공급자의 스토리지를 매핑합니다. -
provisioner
CR은 지원되는 볼륨 및 액세스 모드와 같이 스토리지 프로비저너의 구성을 저장합니다. -
plan
CR에는 동일한 마이그레이션 매개변수 및 관련 네트워크 및 스토리지 매핑이 있는 VM 목록이 포함되어 있습니다. Migration
CR은 마이그레이션 계획을 실행합니다.마이그레이션 계획당 하나의
Migration
CR만 한 번에 실행할 수 있습니다. 단일계획
CR에 대해 여러마이그레이션
CR을 생성할 수 있습니다.
MTV 서비스
인벤토리
서비스는 다음 작업을 수행합니다.- 소스 및 대상 공급자에 연결합니다.
- 매핑 및 계획을 위해 로컬 인벤토리를 유지 관리합니다.
- VM 구성을 저장합니다.
-
VM 구성 변경이 감지된 경우
유효성 검사
서비스를 실행합니다.
-
유효성 검사
서비스는 규칙을 적용하여 마이그레이션에 대한 VM의 적합성을 확인합니다. 사용자 인터페이스
서비스는 다음 작업을 수행합니다.- MTV CR을 생성하고 구성할 수 있습니다.
- CR 상태 및 마이그레이션 진행 상황을 표시합니다.
Migration Controller
서비스는 마이그레이션을 오케스트레이션합니다.마이그레이션 계획을 생성할 때
Migration Controller
서비스는 계획의 유효성을 검사하고 상태 레이블을 추가합니다. 계획 검증에 실패하면 계획 상태가준비되지 않으며
계획을 사용하여 마이그레이션을 수행할 수 없습니다. 계획에서 검증을 통과하면 계획 상태가Ready
이며 마이그레이션을 수행하는 데 사용할 수 있습니다. 마이그레이션이 성공하면마이그레이션 컨트롤러
서비스는 계획 상태를Completed
로 변경합니다.-
Kubevirt 컨트롤러
및CDI(Containerized Data Import) 컨트롤러
서비스는 대부분의 기술 작업을 처리합니다.
9.3.2. 고급 마이그레이션 워크플로
상위 수준 워크플로는 사용자의 관점에서 마이그레이션 프로세스를 보여줍니다.
- 소스 공급자, 대상 공급자, 네트워크 매핑 및 스토리지 매핑을 생성합니다.
다음 리소스를 포함하는
Plan
CR(사용자 정의 리소스)을 생성합니다.- 소스 제공자
- 대상 클러스터에 MTV가 설치되어 있지 않은 경우 대상 공급자
- 네트워크 매핑
- 스토리지 매핑
- 하나 이상의 VM(가상 머신)
Plan
CR을 참조하는마이그레이션
CR을 생성하여 마이그레이션 계획을 실행합니다.어떠한 이유로든 모든 VM을 마이그레이션할 수 없는 경우 모든 VM이 마이그레이션될 때까지 동일한
Plan
CR에 대해 여러 개의Migration
CR을 생성할 수 있습니다.Plan
CR의 각 VM에 대해Migration Controller
서비스는VirtualMachine
CR을 생성하고Migration
CR에서 VM 마이그레이션 진행 상황을 기록합니다.모든 VM이 마이그레이션되면
Migration Controller
서비스가Plan
CR의 상태를Completed
로 업데이트합니다. 마이그레이션 후 각 소스 VM의 전원 상태가 유지됩니다.
9.3.3. 자세한 마이그레이션 워크플로
자세한 마이그레이션 워크플로를 사용하여 마이그레이션 실패 문제를 해결할 수 있습니다.
워크플로우는 다음 단계를 설명합니다.
마이그레이션 계획을 실행하기 위해
Migration
CR(사용자 정의 리소스)을 생성할 때Migration Controller
서비스는 각 소스 VM 디스크에 대한 각 소스 가상 머신(VM) 및DataVolume
CR에 대한VirtualMachine
CR을 생성합니다.각 VM 디스크에 대해 다음을 수행합니다.
-
CDI(Containerized Data Importer) 컨트롤러
서비스는DataVolume
CR에 지정된 매개변수를 기반으로 PVC(영구 볼륨 클레임)를 생성합니다. -
StorageClass
에 동적 프로비저너가 있는 경우 PV(영구 볼륨)는StorageClass
프로비전 프로그램에 의해 동적으로 프로비저닝됩니다. -
CDI 컨트롤러
서비스는가져오기
Pod를 생성합니다. 가져오기
Pod는 VM 디스크를 PV로 스트리밍합니다.VM 디스크가 전송된 후 다음을 수행합니다.
Migration Controller
서비스는 PVC에 연결된변환
Pod를 생성합니다.변환
Pod는 대상 VM의 PVC에 장치 드라이버를 설치하고 구성하는virt-v2v
를 실행합니다.대상 VM의 전원이 켜지면
KubeVirt 컨트롤러
서비스는virt-launcher
Pod 및VirtualMachineInstance
CR을 생성합니다.virt-launcher
Pod는 VM 디스크로 연결된 PVC와 함께QEMU-KVM
을 실행합니다.
9.4. 로그 및 사용자 정의 리소스
문제 해결을 위해 로그 및 CR(사용자 정의 리소스) 정보를 다운로드할 수 있습니다. 자세한 내용은 마이그레이션 워크플로 를 참조하십시오.
9.4.1. 수집된 로그 및 사용자 정의 리소스 정보
MTV 웹 콘솔 또는 CLI(명령줄 인터페이스)를 사용하여 다음 대상에 대한 로그 및 CR(사용자 정의 리소스) yaml
파일을 다운로드할 수 있습니다.
- 마이그레이션 계획: 웹 콘솔 또는 CLI.
- 가상 머신: 웹 콘솔 또는 CLI.
- namespace: CLI만 해당.
must-gather
툴은 아카이브 파일에서 다음 로그 및 CR 파일을 수집합니다.
CRs:
-
DataVolume
CR: 마이그레이션된 VM에 마운트된 디스크를 나타냅니다. -
VirtualMachine
CR: 마이그레이션된 VM을 나타냅니다. -
plan
CR: VM 및 스토리지 및 네트워크 매핑을 정의합니다. -
Job
CR: 선택 사항: 사전 마이그레이션 후크, 마이그레이션 후 후크 또는 둘 다를 나타냅니다.
-
로그:
-
가져오기
Pod: Disk-to-data-volume 변환 로그입니다.가져오기
Pod 이름 지정 규칙은importer-<migration_plan>-<vm_id><5_char_id
>입니다. 예를 들어importer-mig-plan-ed90dfc6-9a8btnfh
. 여기서ed90dfc6-9a17-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-prehook-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
9.4.2. 웹 콘솔에서 로그 및 사용자 정의 리소스 정보 다운로드
완료된 마이그레이션 계획 또는 MTV 웹 콘솔을 사용하여 마이그레이션된 가상 머신(VM)에 대한 로그 및 CR(사용자 정의 리소스)에 대한 정보를 다운로드할 수 있습니다.
절차
- 웹 콘솔에서 마이그레이션 계획을 클릭합니다.
- 마이그레이션 계획 이름 옆에 있는 로그 가져오기 를 클릭합니다.
로그 가져오기 창에서 로그 가져오기 를 클릭합니다.
로그가 수집됩니다.
로그 수집 완료
메시지가 표시됩니다.- 로그 다운로드를 클릭하여 아카이브 파일을 다운로드합니다.
- 마이그레이션된 VM의 로그를 다운로드하려면 마이그레이션 계획 이름을 클릭한 다음 VM 옆에 있는 로그 가져오기 를 클릭합니다.
9.4.3. 명령줄 인터페이스에서 로그 및 사용자 정의 리소스 정보에 액세스
must-gather
툴을 사용하여 명령줄 인터페이스에서 CR(사용자 정의 리소스)에 대한 로그 및 정보에 액세스할 수 있습니다. 모든 고객 사례에 must-gather
데이터 파일을 첨부해야 합니다.
필터링 옵션을 사용하여 특정 네임스페이스, 완료, 실패 또는 취소됨 마이그레이션 계획 또는 마이그레이션된 가상 머신(VM)에 대한 데이터를 수집할 수 있습니다.
필터링된 must-gather
명령에서 존재하지 않는 리소스를 지정하는 경우 아카이브 파일이 생성되지 않습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 OpenShift Virtualization 클러스터에 로그인해야 합니다. -
OpenShift Container Platform CLI(
oc
) 가 설치되어 있어야 합니다.
절차
-
must-gather
데이터를 저장하려는 디렉터리로 이동합니다. oc adm must-gather
명령을 실행합니다.$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0
데이터는
/must-gather/must-gather.tar.gz
로 저장됩니다. Red Hat 고객 포털에서 해당 지원 사례에 이 파일을 업로드할 수 있습니다.선택 사항: 다음 옵션을 사용하여
oc adm must-gather
명령을 실행하여 필터링된 데이터를 수집합니다.네임스페이스:
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0 \ -- NS=<namespace> /usr/bin/targeted
마이그레이션 계획:
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0 \ -- PLAN=<migration_plan> /usr/bin/targeted
가상 머신:
$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.3.0 \ -- VM=<vm_name> NS=<namespace> /usr/bin/targeted 1
- 1
Plan
CR에 표시된 대로 VM ID가 아닌 VM 이름을 지정해야 합니다.