10.20. Clonage de machines virtuelles
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).
-
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
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.
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.
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
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.
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
.
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
- Les utilisateurs ont besoin d'autorisations supplémentaires pour cloner le PVC d'un disque de machine virtuelle dans un autre espace de noms.
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).
-
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.
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
- Examinez le disque de la machine virtuelle que vous souhaitez cloner pour identifier le nom et l'espace de noms du PVC associé.
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
Commencez à cloner le PVC en créant le volume de données :
oc create -f <cloner-datavolume>.yaml
NoteLes 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 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
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.
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
.
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
- Les utilisateurs ont besoin d'autorisations supplémentaires pour cloner le PVC d'un disque de machine virtuelle dans un autre espace de noms.
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).
-
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.
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
- Examinez la machine virtuelle que vous souhaitez cloner pour identifier le nom et l'espace de noms du PVC associé.
Créez un fichier YAML pour un objet
VirtualMachine
. L'exemple de machine virtuelle suivant clonemy-favorite-vm-disk
, qui est situé dans l'espace de nomssource-namespace
. Le volume de données2Gi
appeléfavorite-clone
est créé à partir demy-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.
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 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
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.
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
.
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
- Les utilisateurs ont besoin d'autorisations supplémentaires pour cloner le PVC d'un disque de machine virtuelle dans un autre espace de noms.
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).
-
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
-
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.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.
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
- Examinez le disque de la machine virtuelle que vous souhaitez cloner pour identifier le nom et l'espace de noms du PVC associé.
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
Commencez à cloner le PVC en créant le volume de données :
oc create -f <cloner-datavolume>.yaml
NoteLes 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 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