10.5. 가상 머신 내보내기
VM(가상 머신) 및 관련 디스크를 내보내 VM을 다른 클러스터로 가져오거나 법의학 목적으로 볼륨을 분석할 수 있습니다.
명령줄 인터페이스를 사용하여 VirtualMachineExport
CR(사용자 정의 리소스)을 생성합니다.
또는 virtctl vmexport
명령을 사용하여 VirtualMachineExport
CR을 생성하고 내보낸 볼륨을 다운로드할 수 있습니다.
10.5.1. VirtualMachineExport 사용자 정의 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
VirtualMachineExport
사용자 정의 리소스(CR)를 생성하여 다음 오브젝트를 내보낼 수 있습니다.
- VM(가상 머신): 지정된 VM의 PVC(영구 볼륨 클레임)를 내보냅니다.
-
VM 스냅샷:
VirtualMachineSnapshot
CR에 포함된 PVC를 내보냅니다. -
PVC: PVC를 내보냅니다.
virt-launcher
Pod와 같은 다른 Pod에서 PVC를 사용하는 경우 PVC가 더 이상 사용되지 않을 때까지 내보내기가Pending
상태로 유지됩니다.
VirtualMachineExport
CR은 내보낸 볼륨에 대한 내부 및 외부 링크를 생성합니다. 내부 링크는 클러스터 내에서 유효합니다. 외부 링크는 Ingress
또는 경로를 사용하여 액세스할 수 있습니다
.
내보내기 서버는 다음 파일 형식을 지원합니다.
-
Raw :
원시
디스크 이미지 파일. -
gzip
: 압축 디스크 이미지 파일 -
dir
: PVC 디렉토리 및 파일 -
tar.gz
: 압축된 PVC 파일
사전 요구 사항
- VM 내보내기에 대해 VM을 종료해야 합니다.
절차
다음 예에 따라 VirtualMachine ,
VirtualMachine
SnapshotPersistentVolumeClaim
CR에서 볼륨을 내보내고example-export.yaml
로 저장할VirtualMachineExport
매니페스트를 생성합니다.VirtualMachineExport
예Copy to Clipboard Copied! Toggle word wrap Toggle overflow VirtualMachineExport
CR을 생성합니다.oc create -f example-export.yaml
$ oc create -f example-export.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VirtualMachineExport
CR을 가져옵니다.oc get vmexport example-export -o yaml
$ oc get vmexport example-export -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 내보낸 볼륨의 내부 및 외부 링크는
상태
스탠자에 표시됩니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.2. 내보낸 가상 머신 매니페스트에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
VM(가상 머신) 또는 스냅샷을 내보낸 후 내보내기 서버에서 VirtualMachine
매니페스트 및 관련 정보를 가져올 수 있습니다.
사전 요구 사항
VirtualMachineExport
CR(사용자 정의 리소스)을 생성하여 가상 머신 또는 VM 스냅샷을 내보냅니다.참고spec.source.kind: PersistentVolumeClaim
매개변수가 있는VirtualMachineExport
오브젝트는 가상 머신 매니페스트를 생성하지 않습니다.
절차
매니페스트에 액세스하려면 먼저 소스 클러스터에서 대상 클러스터로 인증서를 복사해야 합니다.
- 소스 클러스터에 로그인합니다.
다음 명령을 실행하여
cacert.crt
파일에 인증서를 저장합니다.oc get vmexport <export_name> -o jsonpath={.status.links.external.cert} > cacert.crt
$ oc get vmexport <export_name> -o jsonpath={.status.links.external.cert} > cacert.crt
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
VirtualMachineExport
오브젝트의metadata.name
값으로 변경합니다.<export_name>
-
cacert.crt
파일을 대상 클러스터에 복사합니다.
소스 클러스터에서 토큰을 디코딩하고 다음 명령을 실행하여
token_decode
파일에 저장합니다.oc get secret export-token-<export_name> -o jsonpath={.data.token} | base64 --decode > token_decode
$ oc get secret export-token-<export_name> -o jsonpath={.data.token} | base64 --decode > token_decode
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
VirtualMachineExport
오브젝트의metadata.name
값으로 변경합니다.<export_name>
-
token_decode
파일을 대상 클러스터에 복사합니다. 다음 명령을 실행하여
VirtualMachineExport
사용자 정의 리소스를 가져옵니다.oc get vmexport <export_name> -o yaml
$ oc get vmexport <export_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 외부
섹션과내부
섹션으로 구분된status.links
스탠자를 검토합니다. 각 섹션 내의manifests.url
필드에 유의하십시오.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 대상 클러스터에 로그인합니다.
다음 명령을 실행하여
Secret
매니페스트를 가져옵니다.curl --cacert cacert.crt <secret_manifest_url> -H \ "x-kubevirt-export-token:token_decode" -H \ "Accept:application/yaml"
$ curl --cacert cacert.crt <secret_manifest_url> -H \
1 "x-kubevirt-export-token:token_decode" -H \
2 "Accept:application/yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들면 다음과 같습니다.
curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/secret -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml"
$ curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/secret -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ConfigMap
및VirtualMachine
매니페스트와 같은유형
의 매니페스트를 가져옵니다.curl --cacert cacert.crt <all_manifest_url> -H \ "x-kubevirt-export-token:token_decode" -H \ "Accept:application/yaml"
$ curl --cacert cacert.crt <all_manifest_url> -H \
1 "x-kubevirt-export-token:token_decode" -H \
2 "Accept:application/yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들면 다음과 같습니다.
curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/all -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml"
$ curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/all -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
-
내보낸 매니페스트를 사용하여 대상 클러스터에
ConfigMap
및VirtualMachine
오브젝트를 생성할 수 있습니다.