10.19. Importer des machines virtuelles
10.19.1. Certificats TLS pour l'importation de volumes de données
10.19.1.1. Ajout de certificats TLS pour l'authentification des importations de volumes de données
Les certificats TLS pour le registre ou les points de terminaison HTTPS doivent être ajoutés à une carte de configuration pour importer des données à partir de ces sources. Cette carte de configuration doit être présente dans l'espace de noms du volume de données de destination.
Créez la carte de configuration en référençant le chemin d'accès relatif au certificat TLS.
Procédure
Assurez-vous que vous êtes dans le bon espace de noms. La carte de configuration ne peut être référencée par les volumes de données que si elle se trouve dans le même espace de noms.
$ oc get ns
Créer la carte de configuration :
oc create configmap <configmap-name> --from-file=</path/to/file/ca.pem>
10.19.1.2. Exemple : Carte de configuration créée à partir d'un certificat TLS
L'exemple suivant est celui d'une carte de configuration créée à partir du certificat TLS de ca.pem
.
apiVersion: v1 kind: ConfigMap metadata: name: tls-certs data: ca.pem: | -----BEGIN CERTIFICATE----- ... <base64 encoded cert> ... -----END CERTIFICATE-----
10.19.2. Importation d'images de machines virtuelles avec des volumes de données
Utilisez l'importateur de données conteneurisées (CDI) pour importer une image de machine virtuelle dans une réclamation de volume persistant (PVC) à l'aide d'un volume de données. Vous pouvez attacher un volume de données à une machine virtuelle pour un stockage persistant.
L'image de la machine virtuelle peut être hébergée à un point de terminaison HTTP ou HTTPS, ou intégrée dans un disque de conteneur et stockée dans un registre de conteneur.
Lorsque vous importez une image de disque dans un PVC, l'image de disque est étendue pour utiliser toute la capacité de stockage demandée dans le PVC. Pour utiliser cet espace, les partitions du disque et le(s) système(s) de fichiers de la machine virtuelle peuvent avoir besoin d'être étendus.
La procédure de redimensionnement varie en fonction du système d'exploitation installé sur la machine virtuelle. Consultez la documentation du système d'exploitation pour plus de détails.
10.19.2.1. Conditions préalables
- Si le point de terminaison nécessite un certificat TLS, le certificat doit être inclus dans une carte de configuration dans le même espace de noms que le volume de données et référencé dans la configuration du volume de données.
Pour importer un disque de conteneur :
- Il se peut que vous deviez préparer un disque de conteneur à partir d'une image de machine virtuelle et le stocker dans votre registre de conteneur avant de l'importer.
-
Si le registre de conteneurs ne dispose pas de TLS, vous devez ajouter le registre au champ
insecureRegistries
de la ressource personnaliséeHyperConverged
avant de pouvoir importer un disque de conteneur à partir de ce registre.
- Il se peut que vous deviez définir une classe de stockage ou préparer l'espace scratch CDI pour que cette opération se déroule correctement.
10.19.2.2. Matrice des opérations soutenues par le CDI
Cette matrice montre les opérations CDI prises en charge pour les types de contenu par rapport aux points de terminaison, et lesquelles de ces opérations nécessitent de l'espace pour les rayures.
Types de contenu | HTTP | HTTPS | Authentification de base HTTP | Registre | Télécharger |
---|---|---|---|---|---|
KubeVirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
✓ Opération supportée
□ Opération non supportée
* Nécessite de l'espace pour les rayures
** Nécessite de l'espace disque si une autorité de certification personnalisée est requise
CDI utilise désormais la configuration du proxy à l'échelle du cluster de OpenShift Container Platform.
10.19.2.3. A propos des volumes de données
DataVolume
sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate
dans la spécification de la machine virtuelle (VM).
-
Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ
dataVolumeTemplate
dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.
Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate
sont automatiquement mis au rebut une fois terminés.
10.19.2.4. Importation d'une image de machine virtuelle dans le stockage à l'aide d'un volume de données
Vous pouvez importer une image de machine virtuelle dans le stockage en utilisant un volume de données.
L'image de la machine virtuelle peut être hébergée à un point de terminaison HTTP ou HTTPS ou l'image peut être intégrée dans un disque de conteneur et stockée dans un registre de conteneur.
Vous spécifiez la source de données pour l'image dans un fichier de configuration VirtualMachine
. Lorsque la machine virtuelle est créée, le volume de données avec l'image de la machine virtuelle est importé dans le stockage.
Conditions préalables
Pour importer une image de machine virtuelle, vous devez disposer des éléments suivants :
-
Une image de disque de machine virtuelle au format RAW, ISO ou QCOW2, éventuellement compressée à l'aide de
xz
ougz
. - Un point d'accès HTTP ou HTTPS où l'image est hébergée, ainsi que les informations d'authentification nécessaires pour accéder à la source de données.
-
Une image de disque de machine virtuelle au format RAW, ISO ou QCOW2, éventuellement compressée à l'aide de
- Pour importer un disque conteneur, vous devez disposer d'une image de machine virtuelle intégrée dans un disque conteneur et stockée dans un registre de conteneur, ainsi que des informations d'authentification nécessaires pour accéder à la source de données.
- Si la machine virtuelle doit communiquer avec des serveurs qui utilisent des certificats auto-signés ou des certificats non signés par le groupe d'autorités de certification du système, vous devez créer une carte de configuration dans le même espace de noms que le volume de données.
Procédure
Si votre source de données nécessite une authentification, créez un manifeste
Secret
, en spécifiant les informations d'identification de la source de données, et enregistrez-le sousendpoint-secret.yaml
:apiVersion: v1 kind: Secret metadata: name: endpoint-secret 1 labels: app: containerized-data-importer type: Opaque data: accessKeyId: "" 2 secretKey: "" 3
Appliquer le manifeste
Secret
:$ oc apply -f endpoint-secret.yaml
Modifiez le manifeste
VirtualMachine
, en spécifiant la source de données pour l'image de machine virtuelle que vous souhaitez importer, et enregistrez-le sousvm-fedora-datavolume.yaml
:apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume name: vm-fedora-datavolume 1 spec: dataVolumeTemplates: - metadata: creationTimestamp: null name: fedora-dv 2 spec: storage: resources: requests: storage: 10Gi storageClassName: local source: http: 3 url: "https://mirror.arizona.edu/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2" 4 secretRef: endpoint-secret 5 certConfigMap: "" 6 status: {} running: true template: metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume spec: domain: devices: disks: - disk: bus: virtio name: datavolumedisk1 machine: type: "" resources: requests: memory: 1.5Gi terminationGracePeriodSeconds: 180 volumes: - dataVolume: name: fedora-dv name: datavolumedisk1 status: {}
- 1
- Indiquez le nom de la machine virtuelle.
- 2
- Indiquez le nom du volume de données.
- 3
- Indiquez
http
pour un point de terminaison HTTP ou HTTPS. Indiquezregistry
pour une image de disque de conteneur importée d'un registre. - 4
- Spécifiez l'URL ou le point de terminaison du registre de l'image de machine virtuelle que vous souhaitez importer. Cet exemple référence une image de machine virtuelle à un point de terminaison HTTPS. Un exemple de point d'extrémité de registre de conteneur est
url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest"
. - 5
- Indiquez le nom
Secret
si vous avez créé unSecret
pour la source de données. - 6
- En option : Spécifiez une carte de configuration de certificat CA.
Créer la machine virtuelle :
$ oc create -f vm-fedora-datavolume.yaml
NoteLa commande
oc create
crée le volume de données et la machine virtuelle. Le contrôleur CDI crée un PVC sous-jacent avec l'annotation correcte et le processus d'importation commence. Lorsque l'importation est terminée, l'état du volume de données devientSucceeded
. Vous pouvez démarrer la machine virtuelle.L'approvisionnement en volume de données s'effectue en arrière-plan, il n'est donc pas nécessaire de surveiller le processus.
Vérification
Le pod importateur télécharge l'image de la machine virtuelle ou le disque du conteneur à partir de l'URL spécifiée et le stocke sur le PV provisionné. Affichez l'état du module d'importation en exécutant la commande suivante :
$ oc get pods
Surveillez le volume de données jusqu'à ce que son état soit
Succeeded
en exécutant la commande suivante :oc describe dv fedora-dv 1
- 1
- Indiquez le nom du volume de données que vous avez défini dans le manifeste
VirtualMachine
.
Vérifiez que le provisionnement est terminé et que la machine virtuelle a démarré en accédant à sa console série :
$ virtctl console vm-fedora-datavolume
10.19.2.5. Ressources supplémentaires
- Configurez le mode de pré-affectation pour améliorer les performances d'écriture pour les opérations sur les volumes de données.
10.19.3. Importation d'images de machines virtuelles dans le stockage en bloc avec des volumes de données
Vous pouvez importer une image de machine virtuelle existante dans votre cluster OpenShift Container Platform. OpenShift Virtualization utilise des volumes de données pour automatiser l'importation de données et la création d'une revendication de volume persistant (PVC) sous-jacente.
Lorsque vous importez une image de disque dans un PVC, l'image de disque est étendue pour utiliser toute la capacité de stockage demandée dans le PVC. Pour utiliser cet espace, les partitions du disque et le(s) système(s) de fichiers de la machine virtuelle peuvent avoir besoin d'être étendus.
La procédure de redimensionnement varie en fonction du système d'exploitation installé sur la machine virtuelle. Consultez la documentation du système d'exploitation pour plus de détails.
10.19.3.1. Conditions préalables
- Si vous avez besoin d'un espace scratch conformément à la matrice des opérations supportées par le CDI, vous devez d'abord définir une classe de stockage ou préparer l'espace scratch du CDI pour que cette opération se déroule correctement.
10.19.3.2. A propos des volumes de données
DataVolume
sont des ressources personnalisées fournies par le projet Containerized Data Importer (CDI). Les volumes de données orchestrent les opérations d'importation, de clonage et de téléchargement qui sont associées à une revendication de volume persistant (PVC) sous-jacente. Vous pouvez créer un volume de données en tant que ressource autonome ou en utilisant le champ dataVolumeTemplate
dans la spécification de la machine virtuelle (VM).
-
Les PVC de disques VM préparés à l'aide de volumes de données autonomes ont un cycle de vie indépendant de celui de la VM. Si vous utilisez le champ
dataVolumeTemplate
dans la spécification de la VM pour préparer le PVC, le PVC partage le même cycle de vie que la VM.
Une fois qu'un PVC est rempli, le volume de données que vous avez utilisé pour créer le PVC n'est plus nécessaire. OpenShift Virtualization active par défaut le ramassage automatique des volumes de données terminés. Les volumes de données autonomes et les volumes de données créés à l'aide de la ressource dataVolumeTemplate
sont automatiquement mis au rebut une fois terminés.
10.19.3.3. À propos des volumes persistants en bloc
Un volume persistant (PV) en mode bloc est un PV soutenu par un périphérique en mode bloc brut. Ces volumes n'ont pas de système de fichiers et peuvent offrir des avantages en termes de performances pour les machines virtuelles en réduisant les frais généraux.
Les volumes de blocs bruts sont approvisionnés en spécifiant volumeMode: Block
dans les spécifications PV et PVC (persistent volume claim).
10.19.3.4. Création d'un volume persistant en bloc local
Créez un volume persistant (PV) local en bloc sur un nœud en remplissant un fichier et en le montant en tant que périphérique en boucle. Vous pouvez ensuite référencer ce périphérique en boucle dans un manifeste PV en tant que volume Block
et l'utiliser comme périphérique de bloc pour une image de machine virtuelle.
Procédure
-
Connectez-vous en tant que
root
au nœud sur lequel vous souhaitez créer le PV local. Cette procédure utilisenode01
pour ses exemples. Créez un fichier et remplissez-le de caractères nuls afin qu'il puisse être utilisé comme périphérique de bloc. L'exemple suivant crée un fichier
loop10
d'une taille de 2 Go (20 blocs de 100 Mo) :$ dd if=/dev/zero of=<loop10> bs=100M count=20
Monter le fichier
loop10
en tant que périphérique en boucle.$ losetup </dev/loop10>d3 <loop10> 1 2
Créez un manifeste
PersistentVolume
qui fait référence au périphérique en boucle monté.kind: PersistentVolume apiVersion: v1 metadata: name: <local-block-pv10> annotations: spec: local: path: </dev/loop10> 1 capacity: storage: <2Gi> volumeMode: Block 2 storageClassName: local 3 accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - <node01> 4
Créer le bloc PV.
# oc create -f <local-block-pv10.yaml>1
- 1
- Le nom de fichier du volume persistant créé à l'étape précédente.
10.19.3.5. Importation d'une image de machine virtuelle dans le stockage en bloc à l'aide d'un volume de données
Vous pouvez importer une image de machine virtuelle dans le stockage en bloc à l'aide d'un volume de données. Vous faites référence au volume de données dans un manifeste VirtualMachine
avant de créer une machine virtuelle.
Conditions préalables
-
Une image de disque de machine virtuelle au format RAW, ISO ou QCOW2, éventuellement compressée à l'aide de
xz
ougz
. - Un point d'accès HTTP ou HTTPS où l'image est hébergée, ainsi que les informations d'authentification nécessaires pour accéder à la source de données.
Procédure
Si votre source de données nécessite une authentification, créez un manifeste
Secret
, en spécifiant les informations d'identification de la source de données, et enregistrez-le sousendpoint-secret.yaml
:apiVersion: v1 kind: Secret metadata: name: endpoint-secret 1 labels: app: containerized-data-importer type: Opaque data: accessKeyId: "" 2 secretKey: "" 3
Appliquer le manifeste
Secret
:$ oc apply -f endpoint-secret.yaml
Créez un manifeste
DataVolume
, en spécifiant la source de données pour l'image de la machine virtuelle etBlock
pourstorage.volumeMode
.apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: import-pv-datavolume 1 spec: storageClassName: local 2 source: http: url: "https://mirror.arizona.edu/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2" 3 secretRef: endpoint-secret 4 storage: volumeMode: Block 5 resources: requests: storage: 10Gi
- 1
- Indiquez le nom du volume de données.
- 2
- Facultatif : Définissez la classe de stockage ou omettez-la pour accepter la valeur par défaut du cluster.
- 3
- Spécifiez l'URL HTTP ou HTTPS de l'image à importer.
- 4
- Indiquez le nom
Secret
si vous avez créé unSecret
pour la source de données. - 5
- Le mode de volume et le mode d'accès sont détectés automatiquement pour les fournisseurs de stockage connus. Dans le cas contraire, indiquez
Block
.
Créez le volume de données pour importer l'image de la machine virtuelle :
$ oc create -f import-pv-datavolume.yaml
Vous pouvez faire référence à ce volume de données dans un manifeste VirtualMachine
avant de créer une machine virtuelle.
10.19.3.6. Matrice des opérations soutenues par le CDI
Cette matrice montre les opérations CDI prises en charge pour les types de contenu par rapport aux points de terminaison, et lesquelles de ces opérations nécessitent de l'espace pour les rayures.
Types de contenu | HTTP | HTTPS | Authentification de base HTTP | Registre | Télécharger |
---|---|---|---|---|---|
KubeVirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
KubeVirt (RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
✓ Opération supportée
□ Opération non supportée
* Nécessite de l'espace pour les rayures
** Nécessite de l'espace disque si une autorité de certification personnalisée est requise
CDI utilise désormais la configuration du proxy à l'échelle du cluster de OpenShift Container Platform.
10.19.3.7. Ressources supplémentaires
- Configurez le mode de pré-affectation pour améliorer les performances d'écriture pour les opérations sur les volumes de données.