Rechercher

10.20. Clonage de machines virtuelles

download PDF

10.20.1. Permettre aux utilisateurs de cloner des volumes de données entre espaces de noms

La nature isolante des espaces de noms signifie que les utilisateurs ne peuvent pas, par défaut, cloner les ressources entre les espaces de noms.

Pour permettre à un utilisateur de cloner une machine virtuelle dans un autre espace de noms, un utilisateur ayant le rôle cluster-admin doit créer un nouveau rôle de cluster. Liez ce rôle de cluster à un utilisateur pour lui permettre de cloner des machines virtuelles dans l'espace de noms de destination.

10.20.1.1. Conditions préalables

  • Seul un utilisateur ayant le rôle cluster-admin peut créer des rôles de cluster.

10.20.1.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.20.1.3. Création de ressources RBAC pour le clonage de volumes de données

Créez un nouveau rôle de cluster qui active les permissions pour toutes les actions de la ressource datavolumes.

Procédure

  1. Créer un manifeste ClusterRole:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: <datavolume-cloner> 1
    rules:
    - apiGroups: ["cdi.kubevirt.io"]
      resources: ["datavolumes/source"]
      verbs: ["*"]
    1
    Nom unique pour le rôle de cluster.
  2. Créer le rôle de cluster dans le cluster :

    oc create -f <datavolume-cloner.yaml> 1
    1
    Le nom du fichier du manifeste ClusterRole créé à l'étape précédente.
  3. Créez un manifeste RoleBinding qui s'applique aux espaces de noms source et destination et qui fait référence au rôle de cluster créé à l'étape précédente.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: <allow-clone-to-user> 1
      namespace: <Source namespace> 2
    subjects:
    - kind: ServiceAccount
      name: default
      namespace: <Destination namespace> 3
    roleRef:
      kind: ClusterRole
      name: datavolume-cloner 4
      apiGroup: rbac.authorization.k8s.io
    1
    Nom unique pour la liaison de rôle.
    2
    L'espace de noms du volume de données source.
    3
    L'espace de noms dans lequel le volume de données est cloné.
    4
    Le nom du rôle de cluster créé à l'étape précédente.
  4. Créez la liaison de rôle dans le cluster :

    oc create -f <datavolume-cloner.yaml> 1
    1
    Le nom du fichier du manifeste RoleBinding créé à l'étape précédente.

10.20.2. Clonage d'un disque de machine virtuelle dans un nouveau volume de données

Vous pouvez cloner la revendication de volume persistant (PVC) d'un disque de machine virtuelle dans un nouveau volume de données en faisant référence au PVC source dans votre fichier de configuration du volume de données.

Avertissement

Les opérations de clonage entre différents modes de volume sont prises en charge, comme le clonage d'un volume persistant (PV) avec volumeMode: Block vers un PV avec volumeMode: Filesystem.

Cependant, vous ne pouvez cloner entre différents modes de volume que s'ils sont du même type que contentType: kubevirt.

Astuce

Lorsque vous activez la pré-allocation globalement ou pour un seul volume de données, l'importateur de données conteneurisées (CDI) pré-allocation l'espace disque pendant le clonage. La pré-allocation améliore les performances d'écriture. Pour plus d'informations, voir Utilisation de la pré-allocation pour les volumes de données.

10.20.2.1. Conditions préalables

10.20.2.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.20.2.3. Clonage de la revendication de volume persistant d'un disque de machine virtuelle dans un nouveau volume de données

Vous pouvez cloner une revendication de volume persistant (PVC) d'un disque de machine virtuelle existant dans un nouveau volume de données. Le nouveau volume de données peut alors être utilisé pour une nouvelle machine virtuelle.

Note

Lorsqu'un volume de données est créé indépendamment d'une machine virtuelle, le cycle de vie du volume de données est indépendant de la machine virtuelle. Si la machine virtuelle est supprimée, ni le volume de données ni son PVC associé ne sont supprimés.

Conditions préalables

  • Déterminez le PVC d'un disque de machine virtuelle existant à utiliser. Vous devez mettre hors tension la machine virtuelle associée au PVC avant de pouvoir la cloner.
  • Installez le CLI OpenShift (oc).

Procédure

  1. Examinez le disque de la machine virtuelle que vous souhaitez cloner pour identifier le nom et l'espace de noms du PVC associé.
  2. Créer un fichier YAML pour un volume de données qui spécifie le nom du nouveau volume de données, le nom et l'espace de noms du PVC source et la taille du nouveau volume de données.

    Par exemple :

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: <cloner-datavolume> 1
    spec:
      source:
        pvc:
          namespace: "<source-namespace>" 2
          name: "<my-favorite-vm-disk>" 3
      pvc:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <2Gi> 4
    1
    Le nom du nouveau volume de données.
    2
    L'espace de noms dans lequel le PVC source existe.
    3
    Le nom du PVC source.
    4
    La taille du nouveau volume de données. Vous devez allouer suffisamment d'espace, sinon l'opération de clonage échoue. La taille doit être égale ou supérieure à celle du PVC source.
  3. Commencez à cloner le PVC en créant le volume de données :

    oc create -f <cloner-datavolume>.yaml
    Note

    Les volumes de données empêchent le démarrage d'une machine virtuelle avant que le PVC ne soit préparé. Vous pouvez donc créer une machine virtuelle qui fait référence au nouveau volume de données pendant que le PVC se clone.

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

10.20.3. Clonage d'une machine virtuelle à l'aide d'un modèle de volume de données

Vous pouvez créer une nouvelle machine virtuelle en clonant la revendication de volume persistant (PVC) d'une VM existante. En incluant une adresse dataVolumeTemplate dans le fichier de configuration de votre machine virtuelle, vous créez un nouveau volume de données à partir du PVC d'origine.

Avertissement

Les opérations de clonage entre différents modes de volume sont prises en charge, comme le clonage d'un volume persistant (PV) avec volumeMode: Block vers un PV avec volumeMode: Filesystem.

Cependant, vous ne pouvez cloner entre différents modes de volume que s'ils sont du même type que contentType: kubevirt.

Astuce

Lorsque vous activez la pré-allocation globalement ou pour un seul volume de données, l'importateur de données conteneurisées (CDI) pré-allocation l'espace disque pendant le clonage. La pré-allocation améliore les performances d'écriture. Pour plus d'informations, voir Utilisation de la pré-allocation pour les volumes de données.

10.20.3.1. Conditions préalables

10.20.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.20.3.3. Création d'une nouvelle machine virtuelle à partir d'une revendication de volume persistant cloné à l'aide d'un modèle de volume de données

Vous pouvez créer une machine virtuelle qui clone la revendication de volume persistant (PVC) d'une machine virtuelle existante dans un volume de données. Faites référence à dataVolumeTemplate dans le manifeste de la machine virtuelle et le PVC source est cloné dans un volume de données, qui est ensuite automatiquement utilisé pour la création de la machine virtuelle.

Note

Lorsqu'un volume de données est créé dans le cadre du modèle de volume de données d'une machine virtuelle, le cycle de vie du volume de données dépend alors de la machine virtuelle. Si la machine virtuelle est supprimée, le volume de données et le PVC associé sont également supprimés.

Conditions préalables

  • Déterminez le PVC d'un disque de machine virtuelle existant à utiliser. Vous devez mettre hors tension la machine virtuelle associée au PVC avant de pouvoir la cloner.
  • Installez le CLI OpenShift (oc).

Procédure

  1. Examinez la machine virtuelle que vous souhaitez cloner pour identifier le nom et l'espace de noms du PVC associé.
  2. Créez un fichier YAML pour un objet VirtualMachine. L'exemple de machine virtuelle suivant clone my-favorite-vm-disk, qui est situé dans l'espace de noms source-namespace. Le volume de données 2Gi appelé favorite-clone est créé à partir de my-favorite-vm-disk.

    Par exemple :

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: vm-dv-clone
      name: vm-dv-clone 1
    spec:
      running: false
      template:
        metadata:
          labels:
            kubevirt.io/vm: vm-dv-clone
        spec:
          domain:
            devices:
              disks:
              - disk:
                  bus: virtio
                name: root-disk
            resources:
              requests:
                memory: 64M
          volumes:
          - dataVolume:
              name: favorite-clone
            name: root-disk
      dataVolumeTemplates:
      - metadata:
          name: favorite-clone
        spec:
          storage:
            accessModes:
            - ReadWriteOnce
            resources:
              requests:
                storage: 2Gi
          source:
            pvc:
              namespace: "source-namespace"
              name: "my-favorite-vm-disk"
    1
    La machine virtuelle à créer.
  3. Créez la machine virtuelle avec le volume de données cloné par le PVC :

    $ oc create -f <vm-clone-datavolumetemplate>.yaml

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

10.20.4. Clonage d'un disque de machine virtuelle dans un nouveau volume de données de stockage par blocs

Vous pouvez cloner la revendication de volume persistant (PVC) d'un disque de machine virtuelle dans un nouveau volume de données en bloc en référençant le PVC source dans votre fichier de configuration du volume de données.

Avertissement

Les opérations de clonage entre différents modes de volume sont prises en charge, comme le clonage d'un volume persistant (PV) avec volumeMode: Block vers un PV avec volumeMode: Filesystem.

Cependant, vous ne pouvez cloner entre différents modes de volume que s'ils sont du même type que contentType: kubevirt.

Astuce

Lorsque vous activez la pré-allocation globalement ou pour un seul volume de données, l'importateur de données conteneurisées (CDI) pré-allocation l'espace disque pendant le clonage. La pré-allocation améliore les performances d'écriture. Pour plus d'informations, voir Utilisation de la pré-allocation pour les volumes de données.

10.20.4.1. Conditions préalables

10.20.4.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.20.4.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.20.4.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.20.4.5. Clonage de la revendication de volume persistant d'un disque de machine virtuelle dans un nouveau volume de données

Vous pouvez cloner une revendication de volume persistant (PVC) d'un disque de machine virtuelle existant dans un nouveau volume de données. Le nouveau volume de données peut alors être utilisé pour une nouvelle machine virtuelle.

Note

Lorsqu'un volume de données est créé indépendamment d'une machine virtuelle, le cycle de vie du volume de données est indépendant de la machine virtuelle. Si la machine virtuelle est supprimée, ni le volume de données ni son PVC associé ne sont supprimés.

Conditions préalables

  • Déterminez le PVC d'un disque de machine virtuelle existant à utiliser. Vous devez mettre hors tension la machine virtuelle associée au PVC avant de pouvoir la cloner.
  • Installez le CLI OpenShift (oc).
  • Au moins un volume persistant (PV) en bloc disponible de taille identique ou supérieure à celle du PVC source.

Procédure

  1. Examinez le disque de la machine virtuelle que vous souhaitez cloner pour identifier le nom et l'espace de noms du PVC associé.
  2. Créer un fichier YAML pour un volume de données qui spécifie le nom du nouveau volume de données, le nom et l'espace de noms du PVC source, volumeMode: Block pour qu'un PV de bloc disponible soit utilisé, et la taille du nouveau volume de données.

    Par exemple :

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: <cloner-datavolume> 1
    spec:
      source:
        pvc:
          namespace: "<source-namespace>" 2
          name: "<my-favorite-vm-disk>" 3
      pvc:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <2Gi> 4
        volumeMode: Block 5
    1
    Le nom du nouveau volume de données.
    2
    L'espace de noms dans lequel le PVC source existe.
    3
    Le nom du PVC source.
    4
    La taille du nouveau volume de données. Vous devez allouer suffisamment d'espace, sinon l'opération de clonage échoue. La taille doit être égale ou supérieure à celle du PVC source.
    5
    Spécifie que la destination est un bloc PV
  3. Commencez à cloner le PVC en créant le volume de données :

    oc create -f <cloner-datavolume>.yaml
    Note

    Les volumes de données empêchent le démarrage d'une machine virtuelle avant que le PVC ne soit préparé. Vous pouvez donc créer une machine virtuelle qui fait référence au nouveau volume de données pendant que le PVC se clone.

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

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.