Rechercher

10.19. Importer des machines virtuelles

download PDF

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

  1. 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
  2. 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.

Important

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

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 contenuHTTPHTTPSAuthentification de base HTTPRegistreTélécharger

KubeVirt (QCOW2)

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2**
✓ GZ*
✓ XZ*

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2*
□ GZ
□ XZ

✓ QCOW2*
✓ GZ*
✓ XZ*

KubeVirt (RAW)

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW*
□ GZ
□ XZ

✓ RAW*
✓ GZ*
✓ XZ*

✓ 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

Note

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).

Note
  • 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 ou gz.
    • 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.
  • 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

  1. 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 sous endpoint-secret.yaml:

    apiVersion: v1
    kind: Secret
    metadata:
      name: endpoint-secret 1
      labels:
        app: containerized-data-importer
    type: Opaque
    data:
      accessKeyId: "" 2
      secretKey:   "" 3
    1
    Indiquez le nom de l'adresse Secret.
    2
    Indiquez l'ID de la clé ou le nom de l'utilisateur codé en Base64.
    3
    Spécifiez la clé secrète ou le mot de passe codé en Base64.
  2. Appliquer le manifeste Secret:

    $ oc apply -f endpoint-secret.yaml
  3. 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 sous vm-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. Indiquez registry 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éé un Secret pour la source de données.
    6
    En option : Spécifiez une carte de configuration de certificat CA.
  4. Créer la machine virtuelle :

    $ oc create -f vm-fedora-datavolume.yaml
    Note

    La 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 devient Succeeded. 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

  1. 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
  2. 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.
  3. 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

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.

Important

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

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).

Note
  • 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

  1. Connectez-vous en tant que root au nœud sur lequel vous souhaitez créer le PV local. Cette procédure utilise node01 pour ses exemples.
  2. 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
  3. Monter le fichier loop10 en tant que périphérique en boucle.

    $ losetup </dev/loop10>d3 <loop10> 1 2
    1
    Chemin d'accès au fichier où le périphérique loop est monté.
    2
    Le fichier créé à l'étape précédente doit être monté en tant que périphérique de boucle.
  4. 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
    1
    Chemin d'accès du dispositif de boucle sur le nœud.
    2
    Indique qu'il s'agit d'un PV en bloc.
    3
    Facultatif : Définissez une classe de stockage pour le PV. Si vous ne le faites pas, la valeur par défaut du cluster est utilisée.
    4
    Le nœud sur lequel le périphérique de bloc a été monté.
  5. 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 ou gz.
  • 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

  1. 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 sous endpoint-secret.yaml:

    apiVersion: v1
    kind: Secret
    metadata:
      name: endpoint-secret 1
      labels:
        app: containerized-data-importer
    type: Opaque
    data:
      accessKeyId: "" 2
      secretKey:   "" 3
    1
    Indiquez le nom de l'adresse Secret.
    2
    Indiquez l'ID de la clé ou le nom de l'utilisateur codé en Base64.
    3
    Spécifiez la clé secrète ou le mot de passe codé en Base64.
  2. Appliquer le manifeste Secret:

    $ oc apply -f endpoint-secret.yaml
  3. Créez un manifeste DataVolume, en spécifiant la source de données pour l'image de la machine virtuelle et Block pour storage.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éé un Secret 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.
  4. 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 contenuHTTPHTTPSAuthentification de base HTTPRegistreTélécharger

KubeVirt (QCOW2)

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2**
✓ GZ*
✓ XZ*

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2*
□ GZ
□ XZ

✓ QCOW2*
✓ GZ*
✓ XZ*

KubeVirt (RAW)

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW*
□ GZ
□ XZ

✓ RAW*
✓ GZ*
✓ XZ*

✓ 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

Note

CDI utilise désormais la configuration du proxy à l'échelle du cluster de OpenShift Container Platform.

10.19.3.7. Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.