9.7. 仮想マシンのエクスポート
仮想マシンを別のクラスターにインポートしたり、フォレンジック目的でボリュームを分析したりするために、仮想マシン (VM) とそれに関連付けられたディスクをエクスポートできます。
コマンドラインインターフェイスを使用して、VirtualMachineExport
カスタムリソース (CR) を作成します。
または、virtctl vmexport
コマンド を使用して VirtualMachineExport
CR を作成し、エクスポートされたボリュームをダウンロードすることもできます。
Migration Toolkit for Virtualization を使用して、OpenShift Virtualization クラスター間で仮想マシンを移行できます。
9.7.1. VirtualMachineExport カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
VirtualMachineExport
カスタムリソース (CR) を作成して、次のオブジェクトをエクスポートできます。
- 仮想マシン (VM): 指定された仮想マシンの永続ボリューム要求 (PVC) をエクスポートします。
-
VM スナップショット:
VirtualMachineSnapshot
CR に含まれる PVC をエクスポートします。 -
PVC: PVC をエクスポートします。PVC が
virt-launcher
Pod などの別の Pod で使用されている場合、エクスポートは PVC が使用されなくなるまでPending
状態のままになります。
VirtualMachineExport
CR は、エクスポートされたボリュームの内部および外部リンクを作成します。内部リンクはクラスター内で有効です。外部リンクには、Ingress
または Route
を使用してアクセスできます。
エクスポートサーバーは、次のファイル形式をサポートしています。
-
raw
: raw ディスクイメージファイル。 -
gzip
: 圧縮されたディスクイメージファイル。 -
dir
: PVC ディレクトリーとファイル。 -
tar.gz
: 圧縮された PVC ファイル。
前提条件
- 仮想マシンをエクスポートするために、仮想マシンがシャットダウンされている。
-
OpenShift CLI (
oc
) がインストールされている。
手順
次の例に従って
VirtualMachineExport
マニフェストを作成し、VirtualMachine
、VirtualMachineSnapshot
、またはPersistentVolumeClaim
CR からボリュームをエクスポートし、example-export.yaml
として保存します。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 エクスポートされたボリュームの内部および外部リンクは、
status
スタンザに表示されます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.7.2. エクスポートされた仮想マシンマニフェストへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) またはスナップショットをエクスポートすると、エクスポートサーバーから VirtualMachine
マニフェストと関連情報を取得できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 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
<export_name>
を、VirtualMachineExport
オブジェクトのmetadata.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
<export_name>
を、VirtualMachineExport
オブジェクトのmetadata.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
スタンザを確認します。このスタンザはexternal
セクションとinternal
セクションに分かれています。各セクション内のmanifests.url
フィールドに注意してください。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
VirtualMachine
マニフェスト、存在する場合はDataVolume
マニフェスト、外部 URL の Ingress またはルートの公開証明書を含むConfigMap
マニフェストが含まれます。- 2
- Containerized Data Importer (CDI) と互換性のあるヘッダーを含むシークレットが含まれます。ヘッダーには、エクスポートトークンのテキストバージョンが含まれています。
- 3
VirtualMachine
マニフェスト、存在する場合はDataVolume
マニフェスト、および内部 URL のエクスポートサーバーの証明書を含むConfigMap
マニフェストが含まれます。
- ターゲットクラスターにログインします。
次のコマンドを実行して
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/v1beta1/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/v1beta1/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
マニフェストなどのtype: all
マニフェストを取得します。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/v1beta1/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/v1beta1/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
オブジェクトを作成できます。