9.11. 仮想マシンをエクスポートする
仮想マシン (VM) とその関連ディスクをエクスポートして、別のクラスターにインポートしたり、フォレンジックボリューム分析などの別の用途に使用したりできます。
コマンドラインインターフェイスを使用して、VirtualMachineExport カスタムリソース (CR) を作成します。
または、virtctl vmexport コマンド を使用して VirtualMachineExport CR を作成し、エクスポートされたボリュームをダウンロードすることもできます。
Migration Toolkit for Virtualization を使用して、OpenShift Virtualization クラスター間で仮想マシンを移行できます。
9.11.1. VirtualMachineExport カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
VirtualMachineExport カスタムリソース (CR) を作成して、VirtualMachine、VirtualMachineSnapshot、または PersistentVolumeClaim CR から永続ボリューム要求 (PVC) をエクスポートできます。
エクスポートできるオブジェクトは次のとおりです。
- 仮想マシン: 指定した仮想マシンの永続ボリューム要求をエクスポートします。
-
仮想マシンスナップショット:
VirtualMachineSnapshotCR に含まれる PVC をエクスポートします。 -
PVC: PVC をエクスポートします。PVC が
virt-launcherPod などの別の Pod で使用されている場合、エクスポートは PVC が使用されなくなるまでPending状態のままになります。
VirtualMachineExport CR は、エクスポートされたボリュームの内部および外部リンクを作成します。内部リンクはクラスター内で有効です。外部リンクには、Ingress または Route を使用してアクセスできます。
エクスポートサーバーは、次のファイル形式をサポートしています。
-
raw: raw ディスクイメージファイル。 -
gzip: 圧縮されたディスクイメージファイル。 -
dir: PVC ディレクトリーとファイル。 -
tar.gz: 圧縮された PVC ファイル。
前提条件
- 仮想マシンをエクスポートするために、仮想マシンがシャットダウンされている。
-
OpenShift CLI (
oc) がインストールされている。
手順
次の例に従って、
VirtualMachine、VirtualMachineSnapshot、またはPersistentVolumeClaimCR からボリュームをエクスポートするためのVirtualMachineExportマニフェストを作成し、example-export.yamlとして保存します。VirtualMachineExportの例:apiVersion: export.kubevirt.io/v1beta1 kind: VirtualMachineExport metadata: name: example-export spec: source: apiGroup: "kubevirt.io" kind: VirtualMachine name: example-vm ttlDuration: 1hspec.source.apiGroup は、エクスポートするリソースの API グループを定義します。-
VirtualMachineにはkubevirt.ioを使用してください。 -
VirtualMachineSnapshotにはsnapshot.kubevirt.ioを使用してください。 -
PersistentVolumeClaimには""を使用します。
-
spec.source.kind は、エクスポートのデータソースを定義します。このフィールドには主に 3 つの値が使用されます。-
VirtualMachine -
仮想マシンのスナップショット -
PersistentVolumeClaim
-
-
spec.ttlDuration は、エクスポートされたリソースが自動的に削除されるまでの時間を定義します。デフォルトは 2 時間です。
VirtualMachineExportCR を作成します。$ oc create -f example-export.yamlVirtualMachineExportCR を取得します。$ oc get vmexport example-export -o yamlエクスポートされたボリュームの内部および外部リンクは、
statusスタンザに表示されます。出力例:
apiVersion: export.kubevirt.io/v1beta1 kind: VirtualMachineExport metadata: name: example-export namespace: example spec: source: apiGroup: "" kind: PersistentVolumeClaim name: example-pvc tokenSecretRef: example-token status: conditions: - lastProbeTime: null lastTransitionTime: "2022-06-21T14:10:09Z" reason: podReady status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2022-06-21T14:09:02Z" reason: pvcBound status: "True" type: PVCReady links: external: cert: |- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- volumes: - formats: - format: raw url: https://vmexport-proxy.test.net/api/export.kubevirt.io/v1beta1/namespaces/example/virtualmachineexports/example-export/volumes/example-disk/disk.img - format: gzip url: https://vmexport-proxy.test.net/api/export.kubevirt.io/v1beta1/namespaces/example/virtualmachineexports/example-export/volumes/example-disk/disk.img.gz name: example-disk internal: cert: |- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- volumes: - formats: - format: raw url: https://virt-export-example-export.example.svc/volumes/example-disk/disk.img - format: gzip url: https://virt-export-example-export.example.svc/volumes/example-disk/disk.img.gz name: example-disk phase: Ready serviceName: virt-export-example-export-
status.links.external は、IngressまたはRouteを使用してクラスターの外部からアクセスできる外部リンクを定義します。 -
status.links.internal は、クラスター内でのみ有効な内部リンクを定義します。
-