10.5. Exporter des machines virtuelles
Vous pouvez exporter une machine virtuelle (VM) et ses disques associés afin d'importer une VM dans un autre cluster ou d'analyser le volume à des fins médico-légales.
Vous créez une ressource personnalisée (CR) VirtualMachineExport
à l'aide de l'interface de ligne de commande.
Vous pouvez également utiliser la commandevirtctl vmexport
pour créer un CR VirtualMachineExport
et télécharger les volumes exportés.
10.5.1. Création d'une ressource personnalisée VirtualMachineExport
Vous pouvez créer une ressource personnalisée (CR) VirtualMachineExport
pour exporter les objets suivants :
- Machine virtuelle (VM) : Exporte les réclamations de volumes persistants (PVC) d'une VM spécifiée.
-
Instantané de VM : Exporte les PVC contenus dans un CR
VirtualMachineSnapshot
. -
PVC : Exporte un PVC. Si le PVC est utilisé par un autre pod, tel que le pod
virt-launcher
, l'exportation reste dans l'étatPending
jusqu'à ce que le PVC ne soit plus utilisé.
Le CR VirtualMachineExport
crée des liens internes et externes pour les volumes exportés. Les liens internes sont valables au sein du cluster. Les liens externes sont accessibles à l'aide d'un CR Ingress
ou Route
.
Le serveur d'exportation prend en charge les formats de fichiers suivants :
-
raw
: Fichier image disque brut. -
gzip
: Fichier image disque compressé. -
dir
: Répertoire et fichiers PVC. -
tar.gz
: Fichier PVC compressé.
Conditions préalables
- La machine virtuelle doit être arrêtée pour l'exportation de la machine virtuelle.
Procédure
Créez un manifeste
VirtualMachineExport
pour exporter un volume à partir d'un CRVirtualMachine
,VirtualMachineSnapshot
ouPersistentVolumeClaim
selon l'exemple suivant et enregistrez-le sousexample-export.yaml
:VirtualMachineExport
exempleapiVersion: export.kubevirt.io/v1alpha1 kind: VirtualMachineExport metadata: name: example-export spec: source: apiGroup: "kubevirt.io" 1 kind: VirtualMachine 2 name: example-vm ttlDuration: 1h 3
Créer le CR
VirtualMachineExport
:$ oc create -f example-export.yaml
Obtenez le CR
VirtualMachineExport
:$ oc get vmexport example-export -o yaml
Les liens internes et externes des volumes exportés sont affichés dans la strophe
status
:Exemple de sortie
apiVersion: export.kubevirt.io/v1alpha1 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: 1 cert: |- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- volumes: - formats: - format: raw url: https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/volumes/example-disk/disk.img - format: gzip url: https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/volumes/example-disk/disk.img.gz name: example-disk internal: 2 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