10.22. Disques de la machine virtuelle
10.22.1. Caractéristiques de stockage
Utilisez le tableau suivant pour déterminer la disponibilité des fonctionnalités pour le stockage persistant local et partagé dans OpenShift Virtualization.
10.22.1.1. Matrice des fonctionnalités de stockage d'OpenShift Virtualization
Migration en direct de la machine virtuelle | Clonage de disques de machines virtuelles assisté par l'hôte | Clonage de disques de machines virtuelles assisté par le stockage | Instantanés de machines virtuelles | |
---|---|---|---|---|
OpenShift Data Foundation : Volumes en mode bloc RBD | Oui | Oui | Oui | Oui |
OpenShift Virtualization hostpath provisioner | Non | Oui | Non | Non |
Autre système de stockage inscriptible à plusieurs nœuds | Oui [1] | Oui | Oui [2] | Oui [2] |
Autre système de stockage inscriptible à nœud unique | Non | Oui | Oui [2] | Oui [2] |
- Les PVC doivent demander un mode d'accès ReadWriteMany.
- Le fournisseur de stockage doit prendre en charge les API d'instantanés Kubernetes et CSI
Vous ne pouvez pas migrer en direct les machines virtuelles qui utilisent :
- Une classe de stockage avec un mode d'accès ReadWriteOnce (RWO)
- Fonctionnalités passthrough telles que les GPU
Ne définissez pas le champ evictionStrategy
sur LiveMigrate
pour ces machines virtuelles.
10.22.2. Configuration du stockage local pour les machines virtuelles
Vous pouvez configurer le stockage local pour les machines virtuelles en utilisant le Hostpath Provisioner (HPP).
Lorsque vous installez l'opérateur de virtualisation OpenShift, l'opérateur Hostpath Provisioner (HPP) est automatiquement installé. Le HPP est un provisionneur de stockage local conçu pour OpenShift Virtualization et créé par l'opérateur Hostpath Provisioner. Pour utiliser le HPP, vous devez créer une ressource personnalisée (CR) HPP.
10.22.2.1. Création d'un provisionneur de chemins d'accès avec un pool de stockage de base
Vous configurez un hostpath provisioner (HPP) avec un pool de stockage de base en créant une ressource personnalisée HPP (CR) avec une strophe storagePools
. Le pool de stockage spécifie le nom et le chemin d'accès utilisés par le pilote CSI.
Conditions préalables
-
Les répertoires spécifiés dans
spec.storagePools.path
doivent être accessibles en lecture/écriture. - Les pools de stockage ne doivent pas se trouver dans la même partition que le système d'exploitation. Sinon, la partition du système d'exploitation risque d'être saturée, ce qui aura un impact sur les performances ou rendra le nœud instable ou inutilisable.
Procédure
Créez un fichier
hpp_cr.yaml
avec une strophestoragePools
comme dans l'exemple suivant :apiVersion: hostpathprovisioner.kubevirt.io/v1beta1 kind: HostPathProvisioner metadata: name: hostpath-provisioner spec: imagePullPolicy: IfNotPresent storagePools: 1 - name: any_name path: "/var/myvolumes" 2 workload: nodeSelector: kubernetes.io/os: linux
- Enregistrez le fichier et quittez.
Créez le HPP en exécutant la commande suivante :
$ oc create -f hpp_cr.yaml
10.22.2.1.1. Création de classes de stockage
Lorsque vous créez une classe de stockage, vous définissez des paramètres qui affectent le provisionnement dynamique des volumes persistants (PV) appartenant à cette classe de stockage. Vous ne pouvez pas mettre à jour les paramètres d'un objet StorageClass
après l'avoir créé.
Pour utiliser le hostpath provisioner (HPP), vous devez créer une classe de stockage associée pour le pilote CSI avec la strophe storagePools
.
Les machines virtuelles utilisent des volumes de données basés sur des PV locaux. Les PV locaux sont liés à des nœuds spécifiques. Lorsque l'image de disque est préparée pour être consommée par la machine virtuelle, il est possible que la machine virtuelle ne puisse pas être planifiée sur le nœud où la PV de stockage local a été précédemment épinglée.
Pour résoudre ce problème, utilisez le planificateur de pods Kubernetes pour lier la réclamation de volume persistant (PVC) à un PV sur le bon nœud. En utilisant la valeur StorageClass
avec le paramètre volumeBindingMode
défini sur WaitForFirstConsumer
, la liaison et le provisionnement de la PV sont retardés jusqu'à ce qu'un pod soit créé à l'aide du PVC.
10.22.2.1.2. Création d'une classe de stockage pour le pilote CSI avec la strophe storagePools
Vous créez une ressource personnalisée (CR) de classe de stockage pour le pilote CSI de Hostpath Provisioner (HPP).
Procédure
Créez un fichier
storageclass_csi.yaml
pour définir la classe de stockage :apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: hostpath-csi provisioner: kubevirt.io.hostpath-provisioner reclaimPolicy: Delete 1 volumeBindingMode: WaitForFirstConsumer 2 parameters: storagePool: my-storage-pool 3
- 1
- Les deux valeurs possibles de
reclaimPolicy
sontDelete
etRetain
. Si vous ne spécifiez pas de valeur, la valeur par défaut estDelete
. - 2
- Le paramètre
volumeBindingMode
détermine le moment où le provisionnement dynamique et la liaison de volume se produisent. SpécifiezWaitForFirstConsumer
pour retarder la liaison et le provisionnement d'un volume persistant (PV) jusqu'à ce qu'un pod utilisant la réclamation de volume persistant (PVC) soit créé. Cela permet de s'assurer que le PV répond aux exigences d'ordonnancement du pod. - 3
- Indiquez le nom du pool de stockage défini dans le CR HPP.
- Enregistrez le fichier et quittez.
Créez l'objet
StorageClass
en exécutant la commande suivante :$ oc create -f storageclass_csi.yaml
10.22.2.2. À propos des pools de stockage créés avec des modèles PVC
Si vous disposez d'un seul volume persistant (PV) de grande taille, vous pouvez créer un pool de stockage en définissant un modèle PVC dans la ressource personnalisée (CR) du Hostpath Provisioner (HPP).
Un pool de stockage créé avec un modèle PVC peut contenir plusieurs volumes HPP. La division d'un PV en volumes plus petits offre une plus grande flexibilité pour l'allocation des données.
Le modèle PVC est basé sur la strophe spec
de l'objet PersistentVolumeClaim
:
Exemple d'objet PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: iso-pvc
spec:
volumeMode: Block 1
storageClassName: my-storage-class
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
- 1
- Cette valeur n'est requise que pour les PV en mode volume par bloc.
Vous définissez un pool de stockage à l'aide d'une spécification pvcTemplate
dans le CR HPP. L'opérateur crée un PVC à partir de la spécification pvcTemplate
pour chaque nœud contenant le pilote HPP CSI. Le PVC créé à partir du modèle de PVC consomme le grand PV unique, ce qui permet au HPP de créer des volumes dynamiques plus petits.
Vous pouvez combiner des pools de stockage de base avec des pools de stockage créés à partir de modèles PVC.
10.22.2.2.1. Création d'un pool de stockage avec un modèle PVC
Vous pouvez créer un pool de stockage pour plusieurs volumes HPP (Hostpath Provisioner) en spécifiant un modèle PVC dans la ressource personnalisée HPP (CR).
Conditions préalables
-
Les répertoires spécifiés dans
spec.storagePools.path
doivent être accessibles en lecture/écriture. - Les pools de stockage ne doivent pas se trouver dans la même partition que le système d'exploitation. Sinon, la partition du système d'exploitation risque d'être saturée, ce qui aura un impact sur les performances ou rendra le nœud instable ou inutilisable.
Procédure
Créez un fichier
hpp_pvc_template_pool.yaml
pour le CR HPP qui spécifie un modèle de volume persistant (PVC) dans la strophestoragePools
selon l'exemple suivant :apiVersion: hostpathprovisioner.kubevirt.io/v1beta1 kind: HostPathProvisioner metadata: name: hostpath-provisioner spec: imagePullPolicy: IfNotPresent storagePools: 1 - name: my-storage-pool path: "/var/myvolumes" 2 pvcTemplate: volumeMode: Block 3 storageClassName: my-storage-class 4 accessModes: - ReadWriteOnce resources: requests: storage: 5Gi 5 workload: nodeSelector: kubernetes.io/os: linux
- 1
- Le stanza
storagePools
est un tableau qui peut contenir des pools de stockage de base et des pools de stockage de modèles PVC. - 2
- Spécifiez les répertoires du pool de stockage sous le chemin de ce nœud.
- 3
- Facultatif : Le paramètre
volumeMode
peut êtreBlock
ouFilesystem
tant qu'il correspond au format du volume provisionné. Si aucune valeur n'est spécifiée, la valeur par défaut estFilesystem
. SivolumeMode
estBlock
, le pod de montage crée un système de fichiers XFS sur le volume bloc avant de le monter. - 4
- Si le paramètre
storageClassName
est omis, la classe de stockage par défaut est utilisée pour créer des PVC. Si vous omettezstorageClassName
, assurez-vous que la classe de stockage HPP n'est pas la classe de stockage par défaut. - 5
- Vous pouvez spécifier un stockage provisionné statiquement ou dynamiquement. Dans les deux cas, assurez-vous que la taille de stockage demandée est appropriée pour le volume que vous souhaitez diviser virtuellement ou que le PVC ne peut pas être lié au grand PV. Si la classe de stockage que vous utilisez utilise un stockage à provisionnement dynamique, choisissez une taille d'allocation qui correspond à la taille d'une demande typique.
- Enregistrez le fichier et quittez.
Créez le HPP avec un pool de stockage en exécutant la commande suivante :
$ oc create -f hpp_pvc_template_pool.yaml
Ressources supplémentaires
10.22.3. Création de volumes de données
Vous pouvez créer un volume de données à l'aide de l'API PVC ou de l'API de stockage.
Lors de l'utilisation d'OpenShift Virtualization avec OpenShift Container Platform Container Storage, spécifiez des réclamations de volumes persistants (PVC) en mode bloc RBD lors de la création de disques de machines virtuelles. Avec les disques de machines virtuelles, les volumes en mode bloc RBD sont plus efficaces et offrent de meilleures performances que les PVC Ceph FS ou RBD en mode système de fichiers.
Pour spécifier les PVC en mode bloc RBD, utilisez la classe de stockage 'ocs-storagecluster-ceph-rbd' et VolumeMode: Block
.
Dans la mesure du possible, utilisez l'API de stockage pour optimiser l'allocation d'espace et maximiser les performances.
Un site storage profile est une ressource personnalisée gérée par le CDI. Il fournit des paramètres de stockage recommandés en fonction de la classe de stockage associée. Un profil de stockage est attribué à chaque classe de stockage.
Les profils de stockage vous permettent de créer rapidement des volumes de données tout en réduisant le codage et en minimisant les erreurs potentielles.
Pour les types de stockage reconnus, le CDI fournit des valeurs qui optimisent la création de PVC. Cependant, vous pouvez configurer des paramètres automatiques pour une classe de stockage si vous personnalisez le profil de stockage.
10.22.3.1. 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.22.3.2. Création de volumes de données à l'aide de l'API de stockage
Lorsque vous créez un volume de données à l'aide de l'API de stockage, l'interface de données conteneurisées (CDI) optimise l'allocation de votre revendication de volume persistant (PVC) en fonction du type de stockage pris en charge par la classe de stockage sélectionnée. Il vous suffit de spécifier le nom du volume de données, l'espace de noms et la quantité de stockage que vous souhaitez allouer.
Par exemple :
-
Lors de l'utilisation de Ceph RBD,
accessModes
est automatiquement défini surReadWriteMany
, ce qui permet une migration en direct.volumeMode
est défini surBlock
pour maximiser les performances. -
Lorsque vous utilisez
volumeMode: Filesystem
, le CDI demandera automatiquement plus d'espace, si nécessaire, pour tenir compte de l'encombrement du système de fichiers.
Dans le fichier YAML suivant, l'utilisation de l'API de stockage demande un volume de données avec deux gigaoctets d'espace utilisable. L'utilisateur n'a pas besoin de connaître le site volumeMode
pour estimer correctement la taille de la demande de volume persistant (PVC) requise. Le CDI choisit automatiquement la combinaison optimale des attributs accessModes
et volumeMode
. Ces valeurs optimales sont basées sur le type de stockage ou sur les valeurs par défaut que vous définissez dans votre profil de stockage. Si vous souhaitez fournir des valeurs personnalisées, elles remplacent les valeurs calculées par le système.
Exemple de définition d'un volume de données
apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <datavolume> 1 spec: source: pvc: 2 namespace: "<source_namespace>" 3 name: "<my_vm_disk>" 4 storage: 5 resources: requests: storage: 2Gi 6 storageClassName: <storage_class> 7
- 1
- Le nom du nouveau volume de données.
- 2
- Indiquer que la source de l'importation est une revendication de volume persistant (PVC) existante.
- 3
- L'espace de noms dans lequel le PVC source existe.
- 4
- Le nom du PVC source.
- 5
- Indique l'allocation à l'aide de l'API de stockage.
- 6
- Spécifie la quantité d'espace disponible que vous demandez pour le PVC.
- 7
- Facultatif : Le nom de la classe de stockage. Si la classe de stockage n'est pas spécifiée, la classe de stockage par défaut du système est utilisée.
10.22.3.3. Création de volumes de données à l'aide de l'API PVC
Lorsque vous créez un volume de données à l'aide de l'API PVC, l'interface de données conteneurisées (CDI) crée le volume de données en fonction de ce que vous spécifiez pour les champs suivants :
-
accessModes
(ReadWriteOnce
,ReadWriteMany
, ouReadOnlyMany
) -
volumeMode
(Filesystem
ouBlock
) -
capacity
destorage
(5Gi
, par exemple)
Dans le fichier YAML suivant, l'utilisation de l'API PVC alloue un volume de données d'une capacité de stockage de deux gigaoctets. Vous spécifiez un mode d'accès de ReadWriteMany
pour permettre la migration en direct. Comme vous connaissez les valeurs que votre système peut prendre en charge, vous spécifiez le stockage Block
au lieu de la valeur par défaut, Filesystem
.
Exemple de définition d'un volume de données
apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <datavolume> 1 spec: source: pvc: 2 namespace: "<source_namespace>" 3 name: "<my_vm_disk>" 4 pvc: 5 accessModes: 6 - ReadWriteMany resources: requests: storage: 2Gi 7 volumeMode: Block 8 storageClassName: <storage_class> 9
- 1
- Le nom du nouveau volume de données.
- 2
- Dans la section
source
,pvc
indique que la source de l'importation est une revendication de volume persistante (PVC) existante. - 3
- L'espace de noms dans lequel le PVC source existe.
- 4
- Le nom du PVC source.
- 5
- Indique l'allocation à l'aide de l'API PVC.
- 6
accessModes
est nécessaire lors de l'utilisation de l'API PVC.- 7
- Spécifie la quantité d'espace que vous demandez pour votre volume de données.
- 8
- Spécifie que la destination est un PVC de bloc.
- 9
- En option, spécifiez la classe de stockage. Si la classe de stockage n'est pas spécifiée, la classe de stockage par défaut du système est utilisée.
Lorsque vous allouez explicitement un volume de données à l'aide de l'API PVC et que vous n'utilisez pas volumeMode: Block
, tenez compte de la surcharge du système de fichiers.
L'overhead du système de fichiers est la quantité d'espace requise par le système de fichiers pour maintenir ses métadonnées. La quantité d'espace requise pour les métadonnées du système de fichiers dépend du système de fichiers. Si vous ne tenez pas compte des frais généraux du système de fichiers dans votre demande de capacité de stockage, vous risquez d'obtenir une revendication de volume persistant (PVC) sous-jacente qui n'est pas assez grande pour accueillir le disque de votre machine virtuelle.
Si vous utilisez l'API de stockage, le CDI tiendra compte des frais généraux du système de fichiers et demandera une demande de volume persistant (PVC) plus importante pour s'assurer que votre demande d'allocation aboutisse.
10.22.3.4. Personnalisation du profil de stockage
Vous pouvez spécifier des paramètres par défaut en modifiant l'objet StorageProfile
pour la classe de stockage du provisionneur. Ces paramètres par défaut s'appliquent uniquement à la revendication de volume persistant (PVC) s'ils ne sont pas configurés dans l'objet DataVolume
.
Conditions préalables
- Assurez-vous que la configuration prévue est prise en charge par la classe de stockage et son fournisseur. La spécification d'une configuration incompatible dans un profil de stockage entraîne l'échec du provisionnement de volume.
Une section status
vide dans un profil de stockage indique qu'un stockeur n'est pas reconnu par l'interface de données conteneurisées (CDI). La personnalisation d'un profil de stockage est nécessaire si vous avez un fournisseur de stockage qui n'est pas reconnu par l'interface de données conteneurisées. Dans ce cas, l'administrateur définit les valeurs appropriées dans le profil de stockage pour garantir la réussite des attributions.
Si vous créez un volume de données et omettez les attributs YAML et que ces attributs ne sont pas définis dans le profil de stockage, le stockage demandé ne sera pas alloué et la revendication de volume persistant (PVC) sous-jacente ne sera pas créée.
Procédure
Modifiez le profil de stockage. Dans cet exemple, le provisionneur n'est pas reconnu par CDI :
oc edit -n openshift-cnv storageprofile <storage_class>
Exemple de profil de stockage
apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: <unknown_provisioner_class> # ... spec: {} status: provisioner: <unknown_provisioner> storageClass: <unknown_provisioner_class>
Fournir les valeurs d'attribut nécessaires dans le profil de stockage :
Exemple de profil de stockage
apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: <unknown_provisioner_class> # ... spec: claimPropertySets: - accessModes: - ReadWriteOnce 1 volumeMode: Filesystem 2 status: provisioner: <unknown_provisioner> storageClass: <unknown_provisioner_class>
Après avoir enregistré vos modifications, les valeurs sélectionnées apparaissent dans l'élément du profil de stockage
status
.
10.22.3.4.1. Définition d'une stratégie de clonage par défaut à l'aide d'un profil de stockage
Vous pouvez utiliser les profils de stockage pour définir une méthode de clonage par défaut pour une classe de stockage, en créant un site cloning strategy. La définition de stratégies de clonage peut s'avérer utile, par exemple, si votre fournisseur de stockage ne prend en charge que certaines méthodes de clonage. Cela vous permet également de sélectionner une méthode qui limite l'utilisation des ressources ou maximise les performances.
Les stratégies de clonage peuvent être spécifiées en définissant l'attribut cloneStrategy
d'un profil de stockage sur l'une de ces valeurs :
-
snapshot
- Cette méthode est utilisée par défaut lorsque des instantanés sont configurés. Cette stratégie de clonage utilise un instantané de volume temporaire pour cloner le volume. Le provisionneur de stockage doit prendre en charge les instantanés CSI. -
copy
- Cette méthode utilise un pod source et un pod cible pour copier les données du volume source vers le volume cible. Le clonage assisté par l'hôte est la méthode de clonage la moins efficace. -
csi-clone
- Cette méthode utilise l'API de clonage CSI pour cloner efficacement un volume existant sans utiliser d'instantané de volume intermédiaire. Contrairement àsnapshot
oucopy
, qui sont utilisés par défaut si aucun profil de stockage n'est défini, le clonage de volume CSI n'est utilisé que si vous le spécifiez dans l'objetStorageProfile
pour la classe de stockage du provisionneur.
Vous pouvez également définir des stratégies de clonage à l'aide de l'interface de gestion sans modifier la valeur par défaut de claimPropertySets
dans votre section YAML spec
.
Exemple de profil de stockage
apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: <provisioner_class> # ... spec: claimPropertySets: - accessModes: - ReadWriteOnce 1 volumeMode: Filesystem 2 cloneStrategy: csi-clone 3 status: provisioner: <provisioner> storageClass: <provisioner_class>
10.22.3.5. Ressources supplémentaires
10.22.4. Réservation d'espace PVC pour les frais généraux du système de fichiers
Par défaut, OpenShift Virtualization réserve de l'espace pour les données de surcharge du système de fichiers dans les réclamations de volume persistant (PVC) qui utilisent le mode de volume Filesystem
. Vous pouvez définir le pourcentage pour réserver de l'espace à cette fin globalement et pour des classes de stockage spécifiques.
10.22.4.1. Comment la surcharge du système de fichiers affecte l'espace pour les disques des machines virtuelles
Lorsque vous ajoutez un disque de machine virtuelle à une revendication de volume persistant (PVC) qui utilise le mode de volume Filesystem
, vous devez vous assurer qu'il y a suffisamment d'espace sur le PVC pour :
- Le disque de la machine virtuelle.
- L'espace réservé aux frais généraux du système de fichiers, tels que les métadonnées
Par défaut, OpenShift Virtualization réserve 5,5 % de l'espace PVC pour l'overhead, ce qui réduit d'autant l'espace disponible pour les disques des machines virtuelles.
Vous pouvez configurer une autre valeur de frais généraux en modifiant l'objet HCO
. Vous pouvez modifier la valeur globalement et vous pouvez spécifier des valeurs pour des classes de stockage spécifiques.
10.22.4.2. Remplacer la valeur par défaut de la surcharge du système de fichiers
Modifiez la quantité d'espace PVC (persistent volume claim) que OpenShift Virtualization réserve à l'overhead du système de fichiers en modifiant l'attribut spec.config.filesystemOverhead
de l'objet HCO
.
Conditions préalables
-
Installez le CLI OpenShift (
oc
).
Procédure
Ouvrez l'objet
HCO
pour le modifier en exécutant la commande suivante :$ oc edit hco -n openshift-cnv kubevirt-hyperconverged
Modifiez les champs
spec.config.filesystemOverhead
en y ajoutant les valeurs que vous avez choisies :... spec: config: filesystemOverhead: global: "<new_global_value>" 1 storageClass: <storage_class_name>: "<new_value_for_this_storage_class>" 2
- 1
- Le pourcentage de frais généraux du système de fichiers par défaut utilisé pour toutes les classes de stockage qui n'ont pas encore de valeur définie. Par exemple,
global: "0.07"
réserve 7 % du PVC à l'overhead du système de fichiers. - 2
- Le pourcentage de frais généraux du système de fichiers pour la classe de stockage spécifiée. Par exemple,
mystorageclass: "0.04"
modifie la valeur de surcharge par défaut pour les PVC dans la classe de stockagemystorageclass
à 4 %.
-
Enregistrez et quittez l'éditeur pour mettre à jour l'objet
HCO
.
Vérification
Affichez l'état de
CDIConfig
et vérifiez vos modifications en exécutant l'une des commandes suivantes :Pour vérifier de manière générale les modifications apportées à
CDIConfig
:$ oc get cdiconfig -o yaml
Pour consulter les modifications apportées à
CDIConfig
:$ oc get cdiconfig -o jsonpath='{.items..status.filesystemOverhead}'
10.22.5. Configurer CDI pour travailler avec des espaces de noms ayant un quota de ressources de calcul
Vous pouvez utiliser l'importateur de données conteneurisées (CDI) pour importer, télécharger et cloner des disques de machines virtuelles dans des espaces de noms soumis à des restrictions de ressources de CPU et de mémoire.
10.22.5.1. A propos des quotas de CPU et de mémoire dans un espace de noms
Un resource quota, défini par l'objet ResourceQuota
, impose des restrictions à un espace de noms qui limitent la quantité totale de ressources de calcul pouvant être consommées par les ressources de cet espace de noms.
La ressource personnalisée (CR) HyperConverged
définit la configuration de l'utilisateur pour l'importateur de données conteneurisées (CDI). Les valeurs de demande et de limite de CPU et de mémoire sont fixées à la valeur par défaut de 0
, ce qui garantit que les pods créés par CDI qui ne spécifient pas de besoins en ressources de calcul reçoivent les valeurs par défaut et sont autorisés à fonctionner dans un espace de noms restreint par un quota.
10.22.5.2. Dépassement des valeurs par défaut de l'unité centrale et de la mémoire
Modifiez les paramètres par défaut pour les demandes et les limites de CPU et de mémoire pour votre cas d'utilisation en ajoutant la strophe spec.resourceRequirements.storageWorkloads
à la ressource personnalisée (CR) HyperConverged
.
Conditions préalables
-
Installez le CLI OpenShift (
oc
).
Procédure
Modifiez le CR
HyperConverged
en exécutant la commande suivante :$ oc edit hco -n openshift-cnv kubevirt-hyperconverged
Ajoutez la strophe
spec.resourceRequirements.storageWorkloads
à la CR, en définissant les valeurs en fonction de votre cas d'utilisation. Par exemple :apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged spec: resourceRequirements: storageWorkloads: limits: cpu: "500m" memory: "2Gi" requests: cpu: "250m" memory: "1Gi"
-
Sauvegardez et quittez l'éditeur pour mettre à jour le CR
HyperConverged
.
10.22.5.3. Ressources supplémentaires
10.22.6. Gestion des annotations sur les volumes de données
Les annotations sur les volumes de données (DV) permettent de gérer le comportement des pods. Vous pouvez ajouter une ou plusieurs annotations à un volume de données, qui se propage ensuite aux pods d'importation créés.
10.22.6.1. Exemple : Annotations sur les volumes de données
Cet exemple montre comment vous pouvez configurer les annotations de volume de données (DV) pour contrôler le réseau utilisé par le module d'importation. L'annotation v1.multus-cni.io/default-network: bridge-network
fait en sorte que le module utilise le réseau multus nommé bridge-network
comme réseau par défaut. Si vous souhaitez que le module importateur utilise à la fois le réseau par défaut du cluster et le réseau multus secondaire, utilisez l'annotation k8s.v1.cni.cncf.io/networks: <network_name>
.
Exemple d'annotation du réseau Multus
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: dv-ann
annotations:
v1.multus-cni.io/default-network: bridge-network 1
spec:
source:
http:
url: "example.exampleurl.com"
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
- 1
- Annotation du réseau Multus
10.22.7. Utilisation de la pré-allocation pour les volumes de données
L'importateur de données conteneurisées peut pré-allouer de l'espace disque pour améliorer les performances d'écriture lors de la création de volumes de données.
Vous pouvez activer la pré-allocation pour des volumes de données spécifiques.
10.22.7.1. À propos de la pré-allocation
L'importateur de données conteneurisées (CDI) peut utiliser le mode de pré-allocation QEMU pour les volumes de données afin d'améliorer les performances d'écriture. Vous pouvez utiliser le mode de pré-allocation pour les opérations d'importation et de téléchargement et lors de la création de volumes de données vierges.
Si la pré-allocation est activée, CDI utilise la meilleure méthode de pré-allocation en fonction du système de fichiers sous-jacent et du type de périphérique :
fallocate
-
Si le système de fichiers le prend en charge, CDI utilise l'appel
fallocate
du système d'exploitation pour préallouer l'espace en utilisant la fonctionposix_fallocate
, qui alloue des blocs et les marque comme non initialisés. full
-
Si le mode
fallocate
ne peut pas être utilisé, le modefull
alloue de l'espace pour l'image en écrivant des données dans la mémoire sous-jacente. En fonction de l'emplacement de stockage, tout l'espace vide alloué peut être mis à zéro.
10.22.7.2. Activation de la pré-allocation pour un volume de données
Vous pouvez activer la pré-allocation pour des volumes de données spécifiques en incluant le champ spec.preallocation
dans le manifeste du volume de données. Vous pouvez activer le mode de pré-allocation dans la console web ou en utilisant le CLI OpenShift (oc
).
Le mode de pré-affectation est pris en charge pour tous les types de sources CDI.
Procédure
Spécifiez le champ
spec.preallocation
dans le manifeste du volume de données :apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: preallocated-datavolume spec: source: 1 ... pvc: ... preallocation: true 2
10.22.8. Téléchargement d'images de disques locaux à l'aide de la console web
Vous pouvez télécharger un fichier image disque stocké localement à l'aide de la console web.
10.22.8.1. Conditions préalables
- Vous devez disposer d'un fichier image de machine virtuelle au format IMG, ISO ou QCOW2.
- 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.22.8.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
10.22.8.3. Téléchargement d'un fichier image à l'aide de la console web
Utilisez la console Web pour télécharger un fichier image vers une nouvelle revendication de volume persistant (PVC). Vous pourrez ensuite utiliser ce PVC pour attacher l'image à de nouvelles machines virtuelles.
Conditions préalables
Vous devez posséder l'un des éléments suivants
- Un fichier image brut de machine virtuelle au format ISO ou IMG.
- Un fichier image de machine virtuelle au format QCOW2.
Pour de meilleurs résultats, comprimez votre fichier image selon les directives suivantes avant de le télécharger :
Compresser un fichier image brut en utilisant
xz
ougzip
.NoteL'utilisation d'un fichier d'image brute compressé permet le téléchargement le plus efficace.
Compresser un fichier image QCOW2 en utilisant la méthode recommandée pour votre client :
- Si vous utilisez un client Linux, sparsify le fichier QCOW2 en utilisant l'outil virt-sparsify.
-
Si vous utilisez un client Windows, comprimez le fichier QCOW2 en utilisant
xz
ougzip
.
Procédure
-
Dans le menu latéral de la console web, cliquez sur Storage
Persistent Volume Claims. - Cliquez sur la liste déroulante Create Persistent Volume Claim pour la développer.
- Cliquez sur With Data Upload Form pour ouvrir la page Upload Data to Persistent Volume Claim.
- Cliquez sur Browse pour ouvrir le gestionnaire de fichiers et sélectionnez l'image que vous souhaitez télécharger, ou faites glisser le fichier dans le champ Drag a file here or browse to upload.
Facultatif : Définir cette image comme image par défaut pour un système d'exploitation spécifique.
- Cochez la case Attach this data to a virtual machine operating system.
- Sélectionnez un système d'exploitation dans la liste.
- Le champ Persistent Volume Claim Name est automatiquement rempli avec un nom unique et ne peut pas être modifié. Notez le nom attribué au PVC afin de pouvoir l'identifier ultérieurement, si nécessaire.
- Sélectionnez une classe de stockage dans la liste Storage Class.
Dans le champ Size, entrez la valeur de la taille du PVC. Sélectionnez l'unité de mesure correspondante dans la liste déroulante.
AvertissementLa taille du PVC doit être supérieure à la taille du disque virtuel non compressé.
- Sélectionnez une adresse Access Mode correspondant à la classe de stockage que vous avez sélectionnée.
- Cliquez sur Upload.
10.22.8.4. 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.22.9. Téléchargement d'images de disques locaux à l'aide de l'outil virtctl
Vous pouvez télécharger une image disque stockée localement vers un volume de données nouveau ou existant à l'aide de l'utilitaire de ligne de commande virtctl
.
10.22.9.1. Conditions préalables
-
Installer
virtctl
. - 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.22.9.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.22.9.3. Création d'un volume de données à télécharger
Vous pouvez créer manuellement un volume de données avec une source de données upload
à utiliser pour télécharger des images de disque locales.
Procédure
Créez une configuration de volume de données qui spécifie
spec: source: upload{}
:apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <upload-datavolume> 1 spec: source: upload: {} pvc: accessModes: - ReadWriteOnce resources: requests: storage: <2Gi> 2
Créez le volume de données en exécutant la commande suivante :
oc create -f <upload-datavolume>.yaml
10.22.9.4. Téléchargement d'une image de disque local vers un volume de données
Vous pouvez utiliser l'utilitaire CLI virtctl
pour télécharger une image de disque locale d'une machine cliente vers un volume de données (DV) dans votre cluster. Vous pouvez utiliser un DV qui existe déjà dans votre cluster ou créer un nouveau DV au cours de cette procédure.
Après avoir téléchargé une image de disque local, vous pouvez l'ajouter à une machine virtuelle.
Conditions préalables
Vous devez posséder l'un des éléments suivants
- Un fichier image brut de machine virtuelle au format ISO ou IMG.
- Un fichier image de machine virtuelle au format QCOW2.
Pour de meilleurs résultats, comprimez votre fichier image selon les directives suivantes avant de le télécharger :
Compresser un fichier image brut en utilisant
xz
ougzip
.NoteL'utilisation d'un fichier d'image brute compressé permet le téléchargement le plus efficace.
Compresser un fichier image QCOW2 en utilisant la méthode recommandée pour votre client :
- Si vous utilisez un client Linux, sparsify le fichier QCOW2 en utilisant l'outil virt-sparsify.
-
Si vous utilisez un client Windows, comprimez le fichier QCOW2 en utilisant
xz
ougzip
.
-
Le paquet
kubevirt-virtctl
doit être installé sur la machine cliente. - La machine cliente doit être configurée pour faire confiance au certificat du routeur OpenShift Container Platform.
Procédure
Identifiez les éléments suivants :
- Le nom du volume de données de téléchargement que vous souhaitez utiliser. Si ce volume de données n'existe pas, il est créé automatiquement.
- La taille du volume de données, si vous souhaitez qu'il soit créé pendant la procédure de téléchargement. La taille doit être supérieure ou égale à la taille de l'image disque.
- L'emplacement du fichier de l'image du disque de la machine virtuelle que vous souhaitez télécharger.
Téléchargez l'image disque en exécutant la commande
virtctl image-upload
. Spécifiez les paramètres que vous avez identifiés à l'étape précédente. Par exemple :$ virtctl image-upload dv <datavolume_name> \ 1 --size=<datavolume_size> \ 2 --image-path=</path/to/image> \ 3
Note-
Si vous ne souhaitez pas créer un nouveau volume de données, omettez le paramètre
--size
et incluez l'indicateur--no-create
. - Lors du téléchargement d'une image de disque vers un PVC, la taille du PVC doit être supérieure à la taille du disque virtuel non compressé.
-
Pour autoriser les connexions de serveur non sécurisées lors de l'utilisation de HTTPS, utilisez le paramètre
--insecure
. Sachez que lorsque vous utilisez le paramètre--insecure
, l'authenticité du point de terminaison du téléchargement est vérifiée par not.
-
Si vous ne souhaitez pas créer un nouveau volume de données, omettez le paramètre
Facultatif. Pour vérifier qu'un volume de données a été créé, affichez tous les volumes de données en exécutant la commande suivante :
$ oc get dvs
10.22.9.5. 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.22.9.6. 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.22.10. Téléchargement d'une image de disque local vers un volume de données de stockage par blocs
Vous pouvez télécharger une image de disque local dans un volume de données en bloc à l'aide de l'utilitaire de ligne de commande virtctl
.
Dans ce flux de travail, vous créez un périphérique bloc local à utiliser comme volume persistant, vous associez ce volume bloc à un volume de données upload
et vous utilisez virtctl
pour télécharger l'image du disque local dans le volume de données.
10.22.10.1. Conditions préalables
-
Installer
virtctl
. - 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.22.10.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.22.10.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.22.10.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.22.10.5. Création d'un volume de données à télécharger
Vous pouvez créer manuellement un volume de données avec une source de données upload
à utiliser pour télécharger des images de disque locales.
Procédure
Créez une configuration de volume de données qui spécifie
spec: source: upload{}
:apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <upload-datavolume> 1 spec: source: upload: {} pvc: accessModes: - ReadWriteOnce resources: requests: storage: <2Gi> 2
Créez le volume de données en exécutant la commande suivante :
oc create -f <upload-datavolume>.yaml
10.22.10.6. Téléchargement d'une image de disque local vers un volume de données
Vous pouvez utiliser l'utilitaire CLI virtctl
pour télécharger une image de disque locale d'une machine cliente vers un volume de données (DV) dans votre cluster. Vous pouvez utiliser un DV qui existe déjà dans votre cluster ou créer un nouveau DV au cours de cette procédure.
Après avoir téléchargé une image de disque local, vous pouvez l'ajouter à une machine virtuelle.
Conditions préalables
Vous devez posséder l'un des éléments suivants
- Un fichier image brut de machine virtuelle au format ISO ou IMG.
- Un fichier image de machine virtuelle au format QCOW2.
Pour de meilleurs résultats, comprimez votre fichier image selon les directives suivantes avant de le télécharger :
Compresser un fichier image brut en utilisant
xz
ougzip
.NoteL'utilisation d'un fichier d'image brute compressé permet le téléchargement le plus efficace.
Compresser un fichier image QCOW2 en utilisant la méthode recommandée pour votre client :
- Si vous utilisez un client Linux, sparsify le fichier QCOW2 en utilisant l'outil virt-sparsify.
-
Si vous utilisez un client Windows, comprimez le fichier QCOW2 en utilisant
xz
ougzip
.
-
Le paquet
kubevirt-virtctl
doit être installé sur la machine cliente. - La machine cliente doit être configurée pour faire confiance au certificat du routeur OpenShift Container Platform.
Procédure
Identifiez les éléments suivants :
- Le nom du volume de données de téléchargement que vous souhaitez utiliser. Si ce volume de données n'existe pas, il est créé automatiquement.
- La taille du volume de données, si vous souhaitez qu'il soit créé pendant la procédure de téléchargement. La taille doit être supérieure ou égale à la taille de l'image disque.
- L'emplacement du fichier de l'image du disque de la machine virtuelle que vous souhaitez télécharger.
Téléchargez l'image disque en exécutant la commande
virtctl image-upload
. Spécifiez les paramètres que vous avez identifiés à l'étape précédente. Par exemple :$ virtctl image-upload dv <datavolume_name> \ 1 --size=<datavolume_size> \ 2 --image-path=</path/to/image> \ 3
Note-
Si vous ne souhaitez pas créer un nouveau volume de données, omettez le paramètre
--size
et incluez l'indicateur--no-create
. - Lors du téléchargement d'une image de disque vers un PVC, la taille du PVC doit être supérieure à la taille du disque virtuel non compressé.
-
Pour autoriser les connexions de serveur non sécurisées lors de l'utilisation de HTTPS, utilisez le paramètre
--insecure
. Sachez que lorsque vous utilisez le paramètre--insecure
, l'authenticité du point de terminaison du téléchargement est vérifiée par not.
-
Si vous ne souhaitez pas créer un nouveau volume de données, omettez le paramètre
Facultatif. Pour vérifier qu'un volume de données a été créé, affichez tous les volumes de données en exécutant la commande suivante :
$ oc get dvs
10.22.10.7. 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.22.10.8. 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.22.11. Gestion des instantanés de machines virtuelles
Vous pouvez créer et supprimer des instantanés de machines virtuelles (VM) pour les VM, qu'elles soient hors tension (offline) ou sous tension (online). Vous ne pouvez restaurer qu'une VM hors tension (hors ligne). OpenShift Virtualization prend en charge les instantanés de VM sur les éléments suivants :
- Red Hat OpenShift Data Foundation
- Tout autre fournisseur de stockage dans le cloud avec le pilote Container Storage Interface (CSI) qui prend en charge l'API Kubernetes Volume Snapshot
Les instantanés en ligne ont un délai par défaut de cinq minutes (5m
) qui peut être modifié si nécessaire.
Les instantanés en ligne sont pris en charge pour les machines virtuelles dotées de disques virtuels branchés à chaud. Toutefois, les disques branchés à chaud qui ne figurent pas dans les spécifications de la machine virtuelle ne sont pas inclus dans l'instantané.
Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.
L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela garantit que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané de meilleure qualité est pris. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.
10.22.11.1. À propos des instantanés de machines virtuelles
Un site snapshot représente l'état et les données d'une machine virtuelle (VM) à un moment précis. Vous pouvez utiliser un instantané pour restaurer une VM existante à un état antérieur (représenté par l'instantané) à des fins de sauvegarde et de reprise après sinistre ou pour revenir rapidement à une version de développement antérieure.
Un instantané de VM est créé à partir d'une VM hors tension (état arrêté) ou sous tension (état en cours d'exécution).
Lorsqu'il prend un instantané d'une VM en cours d'exécution, le contrôleur vérifie que l'agent invité QEMU est installé et en cours d'exécution. Si c'est le cas, il gèle le système de fichiers de la VM avant de prendre l'instantané et dégèle le système de fichiers une fois l'instantané pris.
L'instantané stocke une copie de chaque volume de l'interface de stockage de conteneurs (CSI) attaché à la VM, ainsi qu'une copie de la spécification et des métadonnées de la VM. Les instantanés ne peuvent pas être modifiés après leur création.
Grâce à la fonction d'instantanés de VM, les administrateurs de clusters et les développeurs d'applications peuvent :
- Créer un nouvel instantané
- Liste de tous les instantanés attachés à une VM spécifique
- Restaurer une VM à partir d'un instantané
- Supprimer un instantané de VM existant
10.22.11.1.1. Contrôleur d'instantanés de machines virtuelles et définitions de ressources personnalisées (CRD)
La fonction d'instantané de VM introduit trois nouveaux objets API définis comme CRD pour la gestion des instantanés :
-
VirtualMachineSnapshot
: Représente une demande de l'utilisateur pour créer un instantané. Il contient des informations sur l'état actuel de la VM. -
VirtualMachineSnapshotContent
: Représente une ressource provisionnée sur le cluster (un snapshot). Il est créé par le contrôleur d'instantanés de VM et contient des références à toutes les ressources nécessaires pour restaurer la VM. -
VirtualMachineRestore
: Représente une demande de l'utilisateur pour restaurer une VM à partir d'un instantané.
Le contrôleur d'instantanés VM lie un objet VirtualMachineSnapshotContent
à l'objet VirtualMachineSnapshot
pour lequel il a été créé, avec une correspondance univoque.
10.22.11.2. Installation de l'agent invité QEMU sur une machine virtuelle Linux
Le site qemu-guest-agent
est largement disponible et disponible par défaut dans les machines virtuelles Red Hat. Installez l'agent et démarrez le service.
Pour vérifier si l'agent invité QEMU est installé et fonctionne sur votre machine virtuelle (VM), vérifiez que AgentConnected
figure dans les spécifications de la VM.
Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.
L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.
Procédure
- Accédez à la ligne de commande de la machine virtuelle via l'une des consoles ou via SSH.
Installer l'agent invité QEMU sur la machine virtuelle :
$ yum install -y qemu-guest-agent
Assurez-vous que le service est persistant et démarrez-le :
$ systemctl enable --now qemu-guest-agent
10.22.11.3. Installation de l'agent invité QEMU sur une machine virtuelle Windows
Pour les machines virtuelles Windows, l'agent invité QEMU est inclus dans les pilotes VirtIO. Installer les pilotes sur une installation Windows existante ou nouvelle.
Pour vérifier si l'agent invité QEMU est installé et fonctionne sur votre machine virtuelle (VM), vérifiez que AgentConnected
figure dans les spécifications de la VM.
Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.
L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.
10.22.11.3.1. Installation des pilotes VirtIO sur une machine virtuelle Windows existante
Installer les pilotes VirtIO à partir du lecteur CD SATA connecté à une machine virtuelle Windows existante.
Cette procédure utilise une approche générique pour ajouter des pilotes à Windows. La procédure peut différer légèrement d'une version de Windows à l'autre. Consultez la documentation d'installation de votre version de Windows pour connaître les étapes spécifiques de l'installation.
Procédure
- Démarrez la machine virtuelle et connectez-vous à une console graphique.
- Se connecter à une session utilisateur Windows.
Ouvrez Device Manager et développez Other devices pour répertorier tous les Unknown device.
-
Ouvrez le site
Device Properties
pour identifier l'appareil inconnu. Cliquez avec le bouton droit de la souris sur l'appareil et sélectionnez Properties. - Cliquez sur l'onglet Details et sélectionnez Hardware Ids dans la liste Property.
- Comparez le site Value pour le site Hardware Ids avec les pilotes VirtIO pris en charge.
-
Ouvrez le site
- Cliquez avec le bouton droit de la souris sur l'appareil et sélectionnez Update Driver Software.
- Cliquer sur Browse my computer for driver software et naviguer jusqu'au lecteur de CD SATA connecté, où se trouvent les pilotes VirtIO. Les pilotes sont classés hiérarchiquement en fonction de leur type, du système d'exploitation et de l'architecture du processeur.
- Cliquez sur Next pour installer le pilote.
- Répéter ce processus pour tous les pilotes VirtIO nécessaires.
- Après l'installation du pilote, cliquez sur Close pour fermer la fenêtre.
- Redémarrez la machine virtuelle pour terminer l'installation du pilote.
10.22.11.3.2. Installation des pilotes VirtIO pendant l'installation de Windows
Installer les pilotes VirtIO à partir du pilote du CD SATA pendant l'installation de Windows.
Cette procédure utilise une approche générique de l'installation de Windows et la méthode d'installation peut différer d'une version à l'autre de Windows. Consultez la documentation de la version de Windows que vous installez.
Procédure
- Démarrez la machine virtuelle et connectez-vous à une console graphique.
- Commencez le processus d'installation de Windows.
- Sélectionnez l'installation Advanced.
-
La destination de stockage ne sera pas reconnue tant que le pilote n'aura pas été chargé. Cliquez sur
Load driver
. - Les pilotes sont attachés à un lecteur de CD SATA. Cliquez sur OK et recherchez dans le lecteur de CD le pilote de stockage à charger. Les pilotes sont classés hiérarchiquement en fonction de leur type, du système d'exploitation et de l'architecture du processeur.
- Répétez les deux étapes précédentes pour tous les pilotes nécessaires.
- Terminer l'installation de Windows.
10.22.11.4. Créer un instantané de machine virtuelle dans la console web
Vous pouvez créer un instantané de machine virtuelle (VM) à l'aide de la console web.
Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.
L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.
L'instantané de la VM ne comprend que les disques qui répondent aux exigences suivantes :
- Il doit s'agir d'un volume de données ou d'une revendication de volume persistant
- Appartenir à une classe de stockage qui prend en charge les instantanés de volume de l'interface de stockage de conteneurs (CSI)
Procédure
-
Cliquez sur Virtualization
VirtualMachines dans le menu latéral. - Sélectionnez une machine virtuelle pour ouvrir la page VirtualMachine details.
-
Si la machine virtuelle est en cours d'exécution, cliquez sur Actions
Stop pour l'éteindre. - Cliquez sur l'onglet Snapshots puis sur Take Snapshot.
- Remplir les champs Snapshot Name et Description (facultatif).
- Développez Disks included in this Snapshot pour voir les volumes de stockage à inclure dans l'instantané.
- Si votre VM possède des disques qui ne peuvent pas être inclus dans l'instantané et que vous souhaitez quand même continuer, cochez la case I am aware of this warning and wish to proceed.
- Cliquez sur Save.
10.22.11.5. Créer un instantané de machine virtuelle dans le CLI
Vous pouvez créer un instantané de machine virtuelle (VM) pour une VM hors ligne ou en ligne en créant un objet VirtualMachineSnapshot
. Kubevirt se coordonnera avec l'agent invité QEMU pour créer un instantané de la VM en ligne.
Pour créer des instantanés d'une VM en ligne (en cours d'exécution) avec la plus grande intégrité, installez l'agent invité QEMU.
L'agent invité QEMU prend un instantané cohérent en essayant de mettre le système de fichiers de la VM en veille autant que possible, en fonction de la charge de travail du système. Cela permet de s'assurer que les E/S en vol sont écrites sur le disque avant que l'instantané ne soit pris. Si l'agent invité n'est pas présent, la mise en veille n'est pas possible et un instantané est pris au mieux. Les conditions dans lesquelles l'instantané a été pris sont reflétées dans les indications d'instantané qui sont affichées dans la console Web ou dans l'interface de ligne de commande.
Conditions préalables
- Assurez-vous que les réclamations de volumes persistants (PVC) se trouvent dans une classe de stockage qui prend en charge les instantanés de volumes de l'interface de stockage de conteneurs (CSI).
-
Installez le CLI OpenShift (
oc
). - Facultatif : Mettez hors tension la machine virtuelle pour laquelle vous souhaitez créer un instantané.
Procédure
Créer un fichier YAML pour définir un objet
VirtualMachineSnapshot
qui spécifie le nom du nouveauVirtualMachineSnapshot
et le nom de la VM source.Par exemple :
apiVersion: snapshot.kubevirt.io/v1alpha1 kind: VirtualMachineSnapshot metadata: name: my-vmsnapshot 1 spec: source: apiGroup: kubevirt.io kind: VirtualMachine name: my-vm 2
Créer la ressource
VirtualMachineSnapshot
. Le contrôleur d'instantanés crée un objetVirtualMachineSnapshotContent
, le lie àVirtualMachineSnapshot
et met à jour les champsstatus
etreadyToUse
de l'objetVirtualMachineSnapshot
.oc create -f <my-vmsnapshot>.yaml
Facultatif : si vous prenez un instantané en ligne, vous pouvez utiliser la commande
wait
et surveiller l'état de l'instantané :Entrez la commande suivante :
$ oc wait my-vm my-vmsnapshot --for condition=Ready
Vérifier l'état de l'instantané :
-
InProgress
- L'opération d'instantané en ligne est toujours en cours. -
Succeeded
- L'opération d'instantané en ligne s'est terminée avec succès. Failed
- L'opération d'instantané en ligne a échoué.NoteLes instantanés en ligne ont un délai par défaut de cinq minutes (
5m
). Si l'instantané ne se termine pas avec succès dans les cinq minutes, l'état est défini surfailed
. Par la suite, le système de fichiers sera décongelé et la VM dégelée, mais l'état resterafailed
jusqu'à ce que vous supprimiez l'image de l'instantané qui a échoué.Pour modifier le délai par défaut, ajoutez l'attribut
FailureDeadline
à la spécification d'instantané VM avec le délai en minutes (m
) ou en secondes (s
) que vous souhaitez spécifier avant que l'opération d'instantané ne se termine.Pour ne pas fixer de délai, vous pouvez spécifier
0
, bien que cela ne soit généralement pas recommandé, car cela peut entraîner une absence de réponse de la part de la VM.Si vous ne spécifiez pas d'unité de temps telle que
m
ous
, la valeur par défaut est la seconde (s
).
-
Vérification
Vérifiez que l'objet
VirtualMachineSnapshot
est créé et lié àVirtualMachineSnapshotContent
. L'indicateurreadyToUse
doit être défini surtrue
.$ oc describe vmsnapshot <my-vmsnapshot>
Exemple de sortie
apiVersion: snapshot.kubevirt.io/v1alpha1 kind: VirtualMachineSnapshot metadata: creationTimestamp: "2020-09-30T14:41:51Z" finalizers: - snapshot.kubevirt.io/vmsnapshot-protection generation: 5 name: mysnap namespace: default resourceVersion: "3897" selfLink: /apis/snapshot.kubevirt.io/v1alpha1/namespaces/default/virtualmachinesnapshots/my-vmsnapshot uid: 28eedf08-5d6a-42c1-969c-2eda58e2a78d spec: source: apiGroup: kubevirt.io kind: VirtualMachine name: my-vm status: conditions: - lastProbeTime: null lastTransitionTime: "2020-09-30T14:42:03Z" reason: Operation complete status: "False" 1 type: Progressing - lastProbeTime: null lastTransitionTime: "2020-09-30T14:42:03Z" reason: Operation complete status: "True" 2 type: Ready creationTime: "2020-09-30T14:42:03Z" readyToUse: true 3 sourceUID: 355897f3-73a0-4ec4-83d3-3c2df9486f4f virtualMachineSnapshotContentName: vmsnapshot-content-28eedf08-5d6a-42c1-969c-2eda58e2a78d 4
- 1
- Le champ
status
de la conditionProgressing
indique si l'instantané est toujours en cours de création. - 2
- Le champ
status
de la conditionReady
indique si le processus de création de l'instantané est terminé. - 3
- Indique si l'instantané est prêt à être utilisé.
- 4
- Spécifie que l'instantané est lié à un objet
VirtualMachineSnapshotContent
créé par le contrôleur d'instantanés.
-
Vérifiez la propriété
spec:volumeBackups
de la ressourceVirtualMachineSnapshotContent
pour vérifier que les PVC prévus sont inclus dans l'instantané.
10.22.11.6. Vérification de la création d'un cliché en ligne à l'aide d'indications de cliché
Les indications de snapshot sont des informations contextuelles sur les opérations de snapshot de machine virtuelle (VM) en ligne. Les indications ne sont pas disponibles pour les opérations de snapshot de machine virtuelle (VM) hors ligne. Les indications sont utiles pour décrire les détails de la création d'un instantané en ligne.
Conditions préalables
- Pour afficher les indications, vous devez avoir tenté de créer un instantané de VM en ligne à l'aide de l'interface CLI ou de la console Web.
Procédure
Affichez la sortie des indications de l'instantané en effectuant l'une des opérations suivantes :
-
Pour les instantanés créés à l'aide de l'interface de programmation, affichez l'indicateur dans l'objet YAML
VirtualMachineSnapshot
, dans le champ status. - Pour les instantanés créés à l'aide de la console Web, cliquez sur VirtualMachineSnapshot > Status dans l'écran Snapshot details.
-
Pour les instantanés créés à l'aide de l'interface de programmation, affichez l'indicateur dans l'objet YAML
Vérifiez l'état de l'instantané de votre VM en ligne :
-
Online
indique que la machine virtuelle était en cours d'exécution lors de la création de l'instantané en ligne. -
NoGuestAgent
indique que l'agent invité QEMU n'était pas en cours d'exécution lors de la création d'un instantané en ligne. L'agent invité QEMU n'a pas pu être utilisé pour geler et dégeler le système de fichiers, soit parce que l'agent invité QEMU n'était pas installé ou en cours d'exécution, soit en raison d'une autre erreur.
-
10.22.11.7. Restauration d'une machine virtuelle à partir d'un instantané dans la console web
Vous pouvez restaurer une machine virtuelle (VM) à une configuration antérieure représentée par un instantané dans la console web.
Procédure
-
Cliquez sur Virtualization
VirtualMachines dans le menu latéral. - Sélectionnez une machine virtuelle pour ouvrir la page VirtualMachine details.
-
Si la machine virtuelle est en cours d'exécution, cliquez sur Actions
Stop pour l'éteindre. - Cliquez sur l'onglet Snapshots. La page affiche une liste des instantanés associés à la machine virtuelle.
Choisissez l'une des méthodes suivantes pour restaurer un instantané de VM :
- Pour l'instantané que vous souhaitez utiliser comme source pour restaurer la VM, cliquez sur Restore.
-
Sélectionnez un instantané pour ouvrir l'écran Snapshot Details et cliquez sur Actions
Restore VirtualMachineSnapshot.
- Dans la fenêtre de confirmation, cliquez sur Restore pour restaurer la configuration précédente de la VM, représentée par l'instantané.
10.22.11.8. Restauration d'une machine virtuelle à partir d'un instantané dans le CLI
Vous pouvez restaurer une machine virtuelle (VM) existante dans une configuration antérieure à l'aide d'un instantané de VM. Vous ne pouvez restaurer qu'à partir d'un instantané de VM hors ligne.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). - Mettez hors tension la VM que vous souhaitez restaurer dans un état antérieur.
Procédure
Créez un fichier YAML pour définir un objet
VirtualMachineRestore
qui spécifie le nom de la VM à restaurer et le nom de l'instantané à utiliser comme source.Par exemple :
apiVersion: snapshot.kubevirt.io/v1alpha1 kind: VirtualMachineRestore metadata: name: my-vmrestore 1 spec: target: apiGroup: kubevirt.io kind: VirtualMachine name: my-vm 2 virtualMachineSnapshotName: my-vmsnapshot 3
Créez la ressource
VirtualMachineRestore
. Le contrôleur d'instantanés met à jour les champs d'état de l'objetVirtualMachineRestore
et remplace la configuration existante de la VM par le contenu de l'instantané.$ oc create -f <my-vmrestore>.yaml
Vérification
Vérifiez que la VM est restaurée dans l'état précédent représenté par l'instantané. L'indicateur
complete
doit être défini surtrue
.oc get vmrestore <my-vmrestore>
Exemple de sortie
apiVersion: snapshot.kubevirt.io/v1alpha1 kind: VirtualMachineRestore metadata: creationTimestamp: "2020-09-30T14:46:27Z" generation: 5 name: my-vmrestore namespace: default ownerReferences: - apiVersion: kubevirt.io/v1 blockOwnerDeletion: true controller: true kind: VirtualMachine name: my-vm uid: 355897f3-73a0-4ec4-83d3-3c2df9486f4f resourceVersion: "5512" selfLink: /apis/snapshot.kubevirt.io/v1alpha1/namespaces/default/virtualmachinerestores/my-vmrestore uid: 71c679a8-136e-46b0-b9b5-f57175a6a041 spec: target: apiGroup: kubevirt.io kind: VirtualMachine name: my-vm virtualMachineSnapshotName: my-vmsnapshot status: complete: true 1 conditions: - lastProbeTime: null lastTransitionTime: "2020-09-30T14:46:28Z" reason: Operation complete status: "False" 2 type: Progressing - lastProbeTime: null lastTransitionTime: "2020-09-30T14:46:28Z" reason: Operation complete status: "True" 3 type: Ready deletedDataVolumes: - test-dv1 restoreTime: "2020-09-30T14:46:28Z" restores: - dataVolumeName: restore-71c679a8-136e-46b0-b9b5-f57175a6a041-datavolumedisk1 persistentVolumeClaim: restore-71c679a8-136e-46b0-b9b5-f57175a6a041-datavolumedisk1 volumeName: datavolumedisk1 volumeSnapshotName: vmsnapshot-28eedf08-5d6a-42c1-969c-2eda58e2a78d-volume-datavolumedisk1
- 1
- Indique si le processus de restauration de la VM dans l'état représenté par l'instantané est terminé.
- 2
- Le champ
status
de la conditionProgressing
précise si la VM est toujours en cours de restauration. - 3
- Le champ
status
de la conditionReady
indique si le processus de restauration de la VM est terminé.
10.22.11.9. Suppression d'un snapshot de machine virtuelle dans la console web
Vous pouvez supprimer un snapshot de machine virtuelle existant en utilisant la console web.
Procédure
-
Cliquez sur Virtualization
VirtualMachines dans le menu latéral. - Sélectionnez une machine virtuelle pour ouvrir la page VirtualMachine details.
- Cliquez sur l'onglet Snapshots. La page affiche une liste des instantanés associés à la machine virtuelle.
- Cliquez sur le menu Options de l'instantané de la machine virtuelle que vous souhaitez supprimer et sélectionnez Delete VirtualMachineSnapshot.
- Dans la fenêtre de confirmation, cliquez sur Delete pour supprimer l'instantané.
10.22.11.10. Suppression d'un snapshot de machine virtuelle dans le CLI
Vous pouvez supprimer un instantané de machine virtuelle (VM) existant en supprimant l'objet VirtualMachineSnapshot
approprié.
Conditions préalables
-
Installez le CLI OpenShift (
oc
).
Procédure
Supprimer l'objet
VirtualMachineSnapshot
. Le contrôleur d'instantanés supprime l'objetVirtualMachineSnapshot
ainsi que l'objetVirtualMachineSnapshotContent
qui lui est associé.oc delete vmsnapshot <my-vmsnapshot>
Vérification
Vérifiez que l'instantané est supprimé et qu'il n'est plus attaché à cette VM :
$ oc get vmsnapshot
10.22.11.11. Ressources supplémentaires
10.22.12. Déplacement d'un disque de machine virtuelle locale vers un autre nœud
Les machines virtuelles qui utilisent un volume de stockage local peuvent être déplacées de manière à s'exécuter sur un nœud spécifique.
Il se peut que vous souhaitiez déplacer la machine virtuelle vers un nœud spécifique pour les raisons suivantes :
- Le nœud actuel a des limites à la configuration du stockage local.
- Le nouveau nœud est mieux optimisé pour la charge de travail de cette machine virtuelle.
Pour déplacer une machine virtuelle qui utilise le stockage local, vous devez cloner le volume sous-jacent en utilisant un volume de données. Une fois l'opération de clonage terminée, vous pouvez modifier la configuration de la machine virtuelle afin qu'elle utilise le nouveau volume de données ou ajouter le nouveau volume de données à une autre machine virtuelle.
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.
Les utilisateurs qui n'ont pas le rôle cluster-admin
ont besoin d'autorisations supplémentaires pour cloner des volumes dans des espaces de noms.
10.22.12.1. Clonage d'un volume local vers un autre nœud
Vous pouvez déplacer un disque de machine virtuelle pour qu'il s'exécute sur un nœud spécifique en clonant la revendication de volume persistant (PVC) sous-jacente.
Pour vous assurer que le disque de la machine virtuelle est cloné sur le nœud correct, vous devez créer un nouveau volume persistant (PV) ou en identifier un sur le nœud correct. Appliquez une étiquette unique au volume persistant afin qu'il puisse être référencé par le volume de données.
Le PV de destination doit être de la même taille ou plus grand que le PVC source. Si le PV de destination est plus petit que le PVC source, l'opération de clonage échoue.
Conditions préalables
- La machine virtuelle ne doit pas être en cours d'exécution. Mettez la machine virtuelle hors tension avant de cloner le disque de la machine virtuelle.
Procédure
Créer un nouveau PV local sur le nœud ou identifier un PV local déjà présent sur le nœud :
Créer un PV local qui inclut les paramètres
nodeAffinity.nodeSelectorTerms
. Le manifeste suivant crée un PV local10Gi
surnode01
.kind: PersistentVolume apiVersion: v1 metadata: name: <destination-pv> 1 annotations: spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi 2 local: path: /mnt/local-storage/local/disk1 3 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node01 4 persistentVolumeReclaimPolicy: Delete storageClassName: local volumeMode: Filesystem
Identifier un PV qui existe déjà sur le nœud cible. Vous pouvez identifier le nœud où un PV est provisionné en consultant le champ
nodeAffinity
dans sa configuration :$ oc get pv <destination-pv> -o yaml
L'extrait suivant montre que le PV est sur
node01
:Exemple de sortie
... spec: nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname 1 operator: In values: - node01 2 ...
Ajouter une étiquette unique au PV :
oc label pv <destination-pv> node=node01
Créez un manifeste de volume de données qui fait référence aux éléments suivants :
- Le nom PVC et l'espace de noms de la machine virtuelle.
- L'étiquette que vous avez appliquée au PV à l'étape précédente.
Taille du PV de destination.
apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <clone-datavolume> 1 spec: source: pvc: name: "<source-vm-disk>" 2 namespace: "<source-namespace>" 3 pvc: accessModes: - ReadWriteOnce selector: matchLabels: node: node01 4 resources: requests: storage: <10Gi> 5
- 1
- Le nom du nouveau volume de données.
- 2
- Le nom du PVC source. Si vous ne connaissez pas le nom du PVC, vous pouvez le trouver dans la configuration de la machine virtuelle :
spec.volumes.persistentVolumeClaim.claimName
. - 3
- L'espace de noms dans lequel le PVC source existe.
- 4
- L'étiquette que vous avez appliquée au PV à l'étape précédente.
- 5
- Taille du PV de destination.
Commencez l'opération de clonage en appliquant le manifeste du volume de données à votre cluster :
oc apply -f <clone-datavolume.yaml>
Le volume de données clone le PVC de la machine virtuelle dans le PV sur le nœud spécifique.
10.22.13. Extension du stockage virtuel par l'ajout d'images de disques vierges
Vous pouvez augmenter votre capacité de stockage ou créer de nouvelles partitions de données en ajoutant des images de disques vierges à OpenShift Virtualization.
10.22.13.1. 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.22.13.2. Création d'une image de disque vierge avec des volumes de données
Vous pouvez créer une nouvelle image de disque vierge dans une revendication de volume persistant en personnalisant et en déployant un fichier de configuration de volume de données.
Conditions préalables
- Au moins un volume persistant disponible.
-
Installez le CLI OpenShift (
oc
).
Procédure
Modifiez le manifeste
DataVolume
:apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: blank-image-datavolume spec: source: blank: {} pvc: # Optional: Set the storage class or omit to accept the default # storageClassName: "hostpath" accessModes: - ReadWriteOnce resources: requests: storage: 500Mi
Créez l'image de disque vierge en exécutant la commande suivante :
oc create -f <blank-image-datavolume>.yaml
10.22.13.3. 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.22.14. Clonage d'un volume de données à l'aide de smart-cloning
Le clonage intelligent est une fonctionnalité intégrée de Red Hat OpenShift Data Foundation. Le clonage intelligent est plus rapide et plus efficace que le clonage assisté par l'hôte.
Vous n'avez aucune action à effectuer pour activer le clonage intelligent, mais vous devez vous assurer que votre environnement de stockage est compatible avec le clonage intelligent pour utiliser cette fonctionnalité.
Lorsque vous créez un volume de données avec une source de revendication de volume persistant (PVC), vous lancez automatiquement le processus de clonage. Vous recevez toujours un clone du volume de données, que votre environnement prenne ou non en charge le clonage intelligent. Cependant, vous ne bénéficierez des avantages en termes de performances du clonage intelligent que si votre fournisseur de stockage prend en charge le clonage intelligent.
10.22.14.1. 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.22.14.2. À propos du clonage intelligent
Lorsqu'un volume de données est cloné de manière intelligente, il se produit ce qui suit :
- Un instantané de la revendication de volume persistant (PVC) source est créé.
- Un PVC est créé à partir de l'instantané.
- L'instantané est supprimé.
10.22.14.3. Clonage d'un volume de données
Conditions préalables
Pour que le clonage intelligent se produise, les conditions suivantes doivent être remplies :
- Votre fournisseur de stockage doit prendre en charge les instantanés.
- Les PVC source et cible doivent être définis pour la même classe de stockage.
- Les PVC source et cible partagent le même volumeMode.
-
L'objet
VolumeSnapshotClass
doit faire référence à la classe de stockage définie pour les PVC source et cible.
Procédure
Pour lancer le clonage d'un volume de données :
Créez un fichier YAML pour un objet
DataVolume
qui spécifie le nom du nouveau volume de données ainsi que le nom et l'espace de noms du PVC source. Dans cet exemple, comme vous spécifiez l'API storage, il n'est pas nécessaire de spécifier accessModes ou volumeMode. Les valeurs optimales seront calculées automatiquement pour vous.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 storage: 4 resources: requests: storage: <2Gi> 5
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.22.14.4. Ressources supplémentaires
- Clonage de la revendication de volume persistant d'un disque de machine virtuelle dans un nouveau volume de données
- Configurez le mode de pré-affectation pour améliorer les performances d'écriture pour les opérations sur les volumes de données.
- Personnalisation du profil de stockage
10.22.15. Création et utilisation des sources de démarrage
Une source d'amorçage contient un système d'exploitation (OS) amorçable et tous les paramètres de configuration de l'OS, tels que les pilotes.
Vous utilisez une source de démarrage pour créer des modèles de machines virtuelles avec des configurations spécifiques. Ces modèles peuvent être utilisés pour créer un nombre quelconque de machines virtuelles disponibles.
Des visites de démarrage rapide sont disponibles dans la console web d'OpenShift Container Platform pour vous aider à créer une source de démarrage personnalisée, à télécharger une source de démarrage et à effectuer d'autres tâches. Sélectionnez Quick Starts dans le menu Help pour afficher les visites guidées de démarrage rapide.
10.22.15.1. À propos des machines virtuelles et des sources de démarrage
Les machines virtuelles se composent d'une définition de machine virtuelle et d'un ou plusieurs disques qui sont sauvegardés par des volumes de données. Les modèles de machines virtuelles vous permettent de créer des machines virtuelles à l'aide de spécifications prédéfinies.
Chaque modèle de machine virtuelle nécessite une source de démarrage, qui est une image de disque de machine virtuelle entièrement configurée, y compris les pilotes configurés. Chaque modèle de machine virtuelle contient une définition de machine virtuelle avec un pointeur vers la source de démarrage. Chaque source de démarrage a un nom et un espace de noms prédéfinis. Pour certains systèmes d'exploitation, une source de démarrage est automatiquement fournie. Si elle n'est pas fournie, l'administrateur doit préparer une source d'amorçage personnalisée.
Les sources d'amorçage fournies sont automatiquement mises à jour avec la dernière version du système d'exploitation. Pour les sources d'amorçage mises à jour automatiquement, les réclamations de volumes persistants (PVC) sont créées avec la classe de stockage par défaut de la grappe. Si vous sélectionnez une autre classe de stockage par défaut après la configuration, vous devez supprimer les volumes de données existants dans l'espace de noms du cluster qui sont configurés avec la classe de stockage par défaut précédente.
Pour utiliser la fonctionnalité des sources de démarrage, installez la dernière version d'OpenShift Virtualization. L'espace de noms openshift-virtualization-os-images
active la fonctionnalité et est installé avec l'opérateur OpenShift Virtualization. Une fois la fonctionnalité de source de démarrage installée, vous pouvez créer des sources de démarrage, les attacher à des modèles et créer des machines virtuelles à partir des modèles.
Définir une source de démarrage à l'aide d'une revendication de volume persistant (PVC) qui est remplie en téléchargeant un fichier local, en clonant un PVC existant, en l'important à partir d'un registre ou par URL. Attachez une source de démarrage à un modèle de machine virtuelle à l'aide de la console Web. Une fois que la source de démarrage est attachée à un modèle de machine virtuelle, vous créez un nombre quelconque de machines virtuelles prêtes à l'emploi et entièrement configurées à partir du modèle.
10.22.15.2. Importation d'une image RHEL comme source de démarrage
Vous pouvez importer une image Red Hat Enterprise Linux (RHEL) comme source de démarrage en spécifiant une URL pour l'image.
Conditions préalables
- Vous devez avoir accès à une page web contenant l'image du système d'exploitation. Par exemple : Télécharger la page web de Red Hat Enterprise Linux avec les images.
Procédure
-
Dans la console OpenShift Container Platform, cliquez sur Virtualization
Templates dans le menu latéral. - Identifiez le modèle RHEL pour lequel vous souhaitez configurer une source de démarrage et cliquez sur Add source.
- Dans la fenêtre Add boot source to template, sélectionnez URL (creates PVC) dans la liste Boot source type.
- Cliquez sur RHEL download page pour accéder au portail client de Red Hat. Une liste des installateurs et des images disponibles est affichée sur la page Télécharger Red Hat Enterprise Linux.
- Identifiez l'image de l'invité Red Hat Enterprise Linux KVM que vous souhaitez télécharger. Cliquez avec le bouton droit de la souris sur Download Now et copiez l'URL de l'image.
- Dans la fenêtre Add boot source to template, collez l'URL dans le champ Import URL et cliquez sur Save and import.
Vérification
- Vérifiez que le modèle affiche une coche verte dans la colonne Boot source de la page Templates.
Vous pouvez maintenant utiliser ce modèle pour créer des machines virtuelles RHEL.
10.22.15.3. Ajout d'une source de démarrage pour un modèle de machine virtuelle
Une source de démarrage peut être configurée pour tout modèle de machine virtuelle que vous souhaitez utiliser pour créer des machines virtuelles ou des modèles personnalisés. Lorsque les modèles de machines virtuelles sont configurés avec une source de démarrage, ils sont étiquetés Source available sur la page Templates. Après avoir ajouté une source de démarrage à un modèle, vous pouvez créer une nouvelle machine virtuelle à partir du modèle.
Il existe quatre méthodes pour sélectionner et ajouter une source de démarrage dans la console web :
- Upload local file (creates PVC)
- URL (creates PVC)
- Clone (creates PVC)
- Registry (creates PVC)
Conditions préalables
-
Pour ajouter une source de démarrage, vous devez être connecté en tant qu'utilisateur avec le rôle RBAC
os-images.kubevirt.io:edit
ou en tant qu'administrateur. Vous n'avez pas besoin de privilèges spéciaux pour créer une machine virtuelle à partir d'un modèle auquel une source de démarrage a été ajoutée. - Pour télécharger un fichier local, le fichier image du système d'exploitation doit exister sur votre machine locale.
- Pour importer via une URL, il faut avoir accès au serveur web contenant l'image du système d'exploitation. Par exemple : la page web de Red Hat Enterprise Linux avec les images.
- Pour cloner un PVC existant, l'accès au projet avec un PVC est nécessaire.
- Pour importer via le registre, il faut avoir accès au registre des conteneurs.
Procédure
-
Dans la console OpenShift Container Platform, cliquez sur Virtualization
Templates dans le menu latéral. - Cliquez sur le menu d'options à côté d'un modèle et sélectionnez Edit boot source.
- Cliquez sur Add disk.
- Dans la fenêtre Add disk, sélectionnez Use this disk as a boot source.
- Saisissez le nom du disque et sélectionnez une adresse Source, par exemple, Blank (creates PVC) ou Use an existing PVC.
- Entrez une valeur pour Persistent Volume Claim size afin de spécifier la taille du PVC adéquate pour l'image non compressée et tout espace supplémentaire requis.
- Sélectionnez une adresse Type, par exemple Disk ou CD-ROM.
Facultatif : Cliquez sur Storage class et sélectionnez la classe de stockage utilisée pour créer le disque. En général, cette classe de stockage est la classe de stockage par défaut qui est créée pour être utilisée par tous les PVC.
NoteLes sources d'amorçage fournies sont automatiquement mises à jour avec la dernière version du système d'exploitation. Pour les sources d'amorçage mises à jour automatiquement, les réclamations de volumes persistants (PVC) sont créées avec la classe de stockage par défaut de la grappe. Si vous sélectionnez une autre classe de stockage par défaut après la configuration, vous devez supprimer les volumes de données existants dans l'espace de noms du cluster qui sont configurés avec la classe de stockage par défaut précédente.
- Facultatif : Clear Apply optimized StorageProfile settings pour modifier le mode d'accès ou le mode de volume.
Sélectionnez la méthode appropriée pour enregistrer votre source de démarrage :
- Cliquez sur Save and upload si vous avez téléchargé un fichier local.
- Cliquez sur Save and import si vous avez importé du contenu à partir d'une URL ou du registre.
- Cliquez sur Save and clone si vous avez cloné un PVC existant.
Votre modèle de machine virtuelle personnalisé avec une source de démarrage est répertorié sur la page Catalog. Vous pouvez utiliser ce modèle pour créer une machine virtuelle.
10.22.15.4. Création d'une machine virtuelle à partir d'un modèle avec une source de démarrage attachée
Après avoir ajouté une source de démarrage à un modèle, vous pouvez créer une machine virtuelle à partir du modèle.
Procédure
-
Dans la console web d'OpenShift Container Platform, cliquez sur Virtualization
Catalog dans le menu latéral. - Sélectionnez le modèle mis à jour et cliquez sur Quick create VirtualMachine.
Le site VirtualMachine details s'affiche avec le statut Starting.
10.22.15.5. Ressources supplémentaires
10.22.16. Branchement à chaud de disques virtuels
Vous pouvez ajouter ou supprimer des disques virtuels sans arrêter votre machine virtuelle (VM) ou votre instance de machine virtuelle (VMI).
10.22.16.1. À propos de l'enfichage à chaud de disques virtuels
Lorsque vous hot plug un disque virtuel, vous attachez un disque virtuel à une instance de machine virtuelle pendant que la machine virtuelle est en cours d'exécution.
Lorsque vous hot unplug un disque virtuel, vous détachez un disque virtuel d'une instance de machine virtuelle pendant que la machine virtuelle est en cours d'exécution.
Seuls les volumes de données et les réclamations de volumes persistants (PVC) peuvent être branchés et débranchés à chaud. Il n'est pas possible de brancher ou de débrancher à chaud des disques conteneurs.
Lorsque vous branchez un disque virtuel à chaud, il reste attaché jusqu'à ce que vous le détachiez, même si vous redémarrez la machine virtuelle.
10.22.16.2. À propos de virtio-scsi
Dans OpenShift Virtualization, chaque machine virtuelle (VM) dispose d'un contrôleur virtio-scsi
afin que les disques branchés à chaud puissent utiliser un bus scsi
. Le contrôleur virtio-scsi
surmonte les limites de virtio
tout en conservant ses avantages en termes de performances. Il est très évolutif et prend en charge le branchement à chaud de plus de 4 millions de disques.
Le site virtio
n'est pas disponible pour les disques enfichés à chaud car il n'est pas évolutif : chaque disque virtio
utilise l'un des emplacements PCI Express (PCIe) limités de la VM. Les emplacements PCIe sont également utilisés par d'autres périphériques et doivent être réservés à l'avance ; il se peut donc que les emplacements ne soient pas disponibles à la demande.
10.22.16.3. Branchement à chaud d'un disque virtuel à l'aide de la CLI
Branchez à chaud les disques virtuels que vous souhaitez attacher à une instance de machine virtuelle (VMI) lorsqu'une machine virtuelle est en cours d'exécution.
Conditions préalables
- Vous devez avoir une machine virtuelle en cours d'exécution pour brancher à chaud un disque virtuel.
- Vous devez disposer d'au moins un volume de données ou d'une revendication de volume persistant (PVC) pour le branchement à chaud.
Procédure
Branchez à chaud un disque virtuel en exécutant la commande suivante :
$ virtctl addvolume <virtual-machine|virtual-machine-instance> --volume-name=<datavolume|PVC> \ [--persist] [--serial=<label-name>]
-
Utilisez l'option
--persist
pour ajouter le disque branché à chaud à la spécification de la machine virtuelle en tant que disque virtuel monté de façon permanente. Arrêtez, redémarrez ou réinitialisez la machine virtuelle pour monter le disque virtuel de manière permanente. Après avoir spécifié l'indicateur--persist
, vous ne pouvez plus brancher ou débrancher à chaud le disque virtuel. L'indicateur--persist
s'applique aux machines virtuelles et non aux instances de machines virtuelles. -
L'option
--serial
vous permet d'ajouter une étiquette alphanumérique de votre choix. Cela vous aide à identifier le disque branché à chaud dans une machine virtuelle invitée. Si vous ne spécifiez pas cette option, l'étiquette prend par défaut le nom du volume de données ou du PVC branché à chaud.
-
Utilisez l'option
10.22.16.4. Débranchement à chaud d'un disque virtuel à l'aide de la CLI
Débranchez à chaud les disques virtuels que vous souhaitez détacher d'une instance de machine virtuelle (VMI) pendant qu'une machine virtuelle est en cours d'exécution.
Conditions préalables
- Votre machine virtuelle doit être en cours d'exécution.
- Vous devez avoir au moins un volume de données ou une revendication de volume persistant (PVC) disponible et branché à chaud.
Procédure
Débranchez à chaud un disque virtuel en exécutant la commande suivante :
virtctl removevolume <virtual-machine|virtual-machine-instance> --volume-name=<datavolume|PVC>
10.22.16.5. Branchement à chaud d'un disque virtuel à l'aide de la console web
Branchez à chaud les disques virtuels que vous souhaitez attacher à une instance de machine virtuelle (VMI) lorsqu'une machine virtuelle est en cours d'exécution. Lorsque vous branchez un disque virtuel à chaud, il reste attaché à la VMI jusqu'à ce que vous le débranchiez.
Conditions préalables
- Vous devez avoir une machine virtuelle en cours d'exécution pour brancher à chaud un disque virtuel.
Procédure
-
Cliquez sur Virtualization
VirtualMachines dans le menu latéral. - Sélectionnez la machine virtuelle en cours d'exécution sur laquelle vous souhaitez connecter à chaud un disque virtuel.
- Sur la page VirtualMachine details, cliquez sur l'onglet Disks.
- Cliquez sur Add disk.
- Dans la fenêtre Add disk (hot plugged), remplissez les informations relatives au disque virtuel que vous souhaitez connecter à chaud.
- Cliquez sur Save.
10.22.16.6. Débrancher à chaud un disque virtuel à l'aide de la console web
Débranchez à chaud les disques virtuels que vous souhaitez détacher d'une instance de machine virtuelle (VMI) pendant qu'une machine virtuelle est en cours d'exécution.
Conditions préalables
- Votre machine virtuelle doit fonctionner avec un disque connecté à chaud.
Procédure
-
Cliquez sur Virtualization
VirtualMachines dans le menu latéral. - Sélectionnez la machine virtuelle en cours d'exécution avec le disque que vous voulez débrancher à chaud pour ouvrir la page VirtualMachine details.
- Dans l'onglet Disks, cliquez sur le menu Options du disque virtuel que vous souhaitez débrancher à chaud.
- Cliquez sur Detach.
10.22.17. Utilisation de disques de conteneurs avec des machines virtuelles
Vous pouvez créer une image de machine virtuelle dans un disque de conteneur et la stocker dans votre registre de conteneurs. Vous pouvez ensuite importer le disque conteneur dans le stockage persistant d'une machine virtuelle ou l'attacher directement à la machine virtuelle pour un stockage éphémère.
Si vous utilisez des disques de conteneur de grande taille, le trafic d'E/S risque d'augmenter, ce qui aura un impact sur les nœuds de travail. Cela peut entraîner l'indisponibilité des nœuds. Vous pouvez résoudre ce problème en procédant comme suit
10.22.17.1. À propos des disques conteneurs
Un disque de conteneur est une image de machine virtuelle stockée en tant qu'image de conteneur dans un registre d'images de conteneur. Vous pouvez utiliser les disques conteneurs pour fournir les mêmes images de disque à plusieurs machines virtuelles et pour créer un grand nombre de clones de machines virtuelles.
Un disque conteneur peut être importé dans une revendication de volume persistant (PVC) en utilisant un volume de données attaché à une machine virtuelle, ou attaché directement à une machine virtuelle en tant que volume éphémère containerDisk
.
10.22.17.1.1. Importation d'un disque conteneur dans un PVC à l'aide d'un volume de données
Utilisez l'importateur de données conteneurisées (CDI) pour importer le disque conteneur dans un PVC à l'aide d'un volume de données. Vous pouvez ensuite attacher le volume de données à une machine virtuelle pour un stockage persistant.
10.22.17.1.2. Attacher un disque conteneur à une machine virtuelle en tant que volume containerDisk
Un volume containerDisk
est éphémère. Il est supprimé lorsque la machine virtuelle est arrêtée, redémarrée ou supprimée. Lorsqu'une machine virtuelle avec un volume containerDisk
démarre, l'image du conteneur est extraite du registre et hébergée sur le nœud qui héberge la machine virtuelle.
Utilisez les volumes containerDisk
pour les systèmes de fichiers en lecture seule tels que les CD-ROM ou pour les machines virtuelles jetables.
L'utilisation des volumes containerDisk
pour les systèmes de fichiers en lecture-écriture n'est pas recommandée car les données sont temporairement écrites sur le stockage local du nœud d'hébergement. Cela ralentit la migration en direct de la machine virtuelle, par exemple en cas de maintenance du nœud, car les données doivent être migrées vers le nœud de destination. En outre, toutes les données sont perdues en cas de panne de courant ou d'arrêt inattendu du nœud.
10.22.17.2. Préparation d'un disque de conteneur pour les machines virtuelles
Vous devez construire un disque de conteneur avec une image de machine virtuelle et le pousser vers un registre de conteneur avant de pouvoir l'utiliser avec une machine virtuelle. Vous pouvez ensuite importer le disque de conteneur dans un PVC à l'aide d'un volume de données et l'attacher à une machine virtuelle, ou vous pouvez attacher le disque de conteneur directement à une machine virtuelle en tant que volume éphémère containerDisk
.
La taille d'une image de disque à l'intérieur d'un disque conteneur est limitée par la taille maximale de la couche du registre dans lequel le disque conteneur est hébergé.
Pour Red Hat Quay, vous pouvez modifier la taille maximale des couches en éditant le fichier de configuration YAML qui est créé lors du premier déploiement de Red Hat Quay.
Conditions préalables
-
Installez
podman
s'il n'est pas déjà installé. - L'image de la machine virtuelle doit être au format QCOW2 ou RAW.
Procédure
Créer un fichier Docker pour construire l'image de la machine virtuelle dans une image de conteneur. L'image de la machine virtuelle doit appartenir à QEMU, qui a un UID de
107
, et être placée dans le répertoire/disk/
à l'intérieur du conteneur. Les autorisations pour le répertoire/disk/
doivent ensuite être définies sur0440
.L'exemple suivant utilise l'image de base universelle (UBI) de Red Hat pour gérer ces changements de configuration dans la première étape, et utilise l'image minimale
scratch
dans la deuxième étape pour stocker le résultat :$ cat > Dockerfile << EOF FROM registry.access.redhat.com/ubi8/ubi:latest AS builder ADD --chown=107:107 <vm_image>.qcow2 /disk/ 1 RUN chmod 0440 /disk/* FROM scratch COPY --from=builder /disk/* /disk/ EOF
- 1
- Où <vm_image> est l'image de la machine virtuelle au format QCOW2 ou RAW.
Pour utiliser une image de machine virtuelle distante, remplacez<vm_image>.qcow2
par l'url complète de l'image distante.
Construire et étiqueter le conteneur :
$ podman build -t <registry>/<container_disk_name>:latest .
Insérer l'image du conteneur dans le registre :
$ podman push <registry>/<container_disk_name>:latest
Si votre registre de conteneurs ne dispose pas de TLS, vous devez l'ajouter en tant que registre non sécurisé avant de pouvoir importer des disques de conteneurs dans le stockage persistant.
10.22.17.3. Désactivation de TLS pour un registre de conteneur à utiliser comme registre non sécurisé
Vous pouvez désactiver TLS (transport layer security) pour un ou plusieurs registres de conteneurs en modifiant le champ insecureRegistries
de la ressource personnalisée HyperConverged
.
Conditions préalables
-
Connectez-vous au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
.
Procédure
Modifiez la ressource personnalisée
HyperConverged
et ajoutez une liste de registres non sécurisés dans le champspec.storageImport.insecureRegistries
.apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: storageImport: insecureRegistries: 1 - "private-registry-example-1:5000" - "private-registry-example-2:5000"
- 1
- Remplacez les exemples de cette liste par des noms d'hôtes de registre valides.
10.22.17.4. Prochaines étapes
- Importer le disque conteneur dans le stockage persistant d'une machine virtuelle.
-
Créez une machine virtuelle qui utilise un volume
containerDisk
pour le stockage éphémère.
10.22.18. Préparation de l'espace mémoire du CDI
10.22.18.1. 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.22.18.2. À propos de l'espace réservé aux griffes
L'importateur de données conteneurisées (CDI) a besoin d'un espace d'effacement (stockage temporaire) pour effectuer certaines opérations, telles que l'importation et le téléchargement d'images de machines virtuelles. Au cours de ce processus, CDI fournit un PVC d'espace d'effacement égal à la taille du PVC sauvegardant le volume de données de destination (DV). Le PVC d'espace d'effacement est supprimé une fois l'opération terminée ou interrompue.
Vous pouvez définir la classe de stockage utilisée pour lier l'espace de stockage PVC dans le champ spec.scratchSpaceStorageClass
de la ressource personnalisée HyperConverged
.
Si la classe de stockage définie ne correspond pas à une classe de stockage dans le cluster, la classe de stockage par défaut définie pour le cluster est utilisée. Si aucune classe de stockage par défaut n'est définie dans le cluster, la classe de stockage utilisée pour provisionner le DV ou le PVC d'origine est utilisée.
CDI exige de demander un espace scratch avec un mode de volume file
, quel que soit le PVC soutenant le volume de données d'origine. Si le PVC d'origine est soutenu par le mode de volume block
, vous devez définir une classe de stockage capable de provisionner des PVC en mode de volume file
.
Approvisionnement manuel
S'il n'y a pas de classes de stockage, CDI utilise tous les PVC du projet qui correspondent aux exigences de taille de l'image. Si aucun PVC ne correspond à ces exigences, le module d'importation CDI reste dans l'état Pending jusqu'à ce qu'un PVC approprié soit disponible ou jusqu'à ce qu'une fonction d'expiration du délai d'attente mette fin au module.
10.22.18.3. Les opérations du CDI qui nécessitent un espace de rayures
Type | Raison |
---|---|
Importations du registre | CDI doit télécharger l'image dans un espace de stockage et extraire les couches pour trouver le fichier image. Le fichier image est ensuite transmis à QEMU-IMG pour être converti en disque brut. |
Télécharger l'image | QEMU-IMG n'accepte pas d'entrée depuis STDIN. Au lieu de cela, l'image à télécharger est sauvegardée dans l'espace scratch avant d'être transmise à QEMU-IMG pour la conversion. |
Importation HTTP d'images archivées | QEMU-IMG ne sait pas comment gérer les formats d'archive pris en charge par CDI. Au lieu de cela, l'image est désarchivée et sauvegardée dans l'espace de stockage avant d'être transmise à QEMU-IMG. |
Importations HTTP d'images authentifiées | QEMU-IMG ne gère pas correctement l'authentification. Au lieu de cela, l'image est sauvegardée dans l'espace de stockage et authentifiée avant d'être transmise à QEMU-IMG. |
Importation de certificats personnalisés par HTTP | QEMU-IMG ne gère pas correctement les certificats personnalisés des points de terminaison HTTPS. Au lieu de cela, CDI télécharge l'image dans l'espace de stockage avant de transmettre le fichier à QEMU-IMG. |
10.22.18.4. Définition d'une classe de stockage
Vous pouvez définir la classe de stockage que l'importateur de données conteneurisées (CDI) utilise lors de l'allocation de l'espace de stockage en ajoutant le champ spec.scratchSpaceStorageClass
à la ressource personnalisée (CR) HyperConverged
.
Conditions préalables
-
Installez le CLI OpenShift (
oc
).
Procédure
Modifiez le CR
HyperConverged
en exécutant la commande suivante :$ oc edit hco -n openshift-cnv kubevirt-hyperconverged
Ajoutez le champ
spec.scratchSpaceStorageClass
à la CR, en définissant la valeur sur le nom d'une classe de stockage qui existe dans le cluster :apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged spec: scratchSpaceStorageClass: "<storage_class>" 1
- 1
- Si vous ne spécifiez pas de classe de stockage, CDI utilise la classe de stockage de la revendication de volume persistant qui est en train d'être remplie.
-
Sauvegardez et quittez votre éditeur par défaut pour mettre à jour le CR
HyperConverged
.
10.22.18.5. 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.22.18.6. Ressources supplémentaires
10.22.19. Réutilisation des volumes persistants
Pour réutiliser un volume persistant (PV) provisionné statiquement, vous devez d'abord récupérer le volume. Cela implique la suppression du PV afin que la configuration de stockage puisse être réutilisée.
10.22.19.1. À propos de la récupération des volumes persistants provisionnés statiquement
Lorsque vous récupérez un volume persistant (PV), vous le dissociez d'une revendication de volume persistant (PVC) et vous le supprimez. En fonction du stockage sous-jacent, il se peut que vous deviez supprimer manuellement le stockage partagé.
Vous pouvez ensuite réutiliser la configuration du PV pour créer un PV portant un nom différent.
Les PV provisionnés statiquement doivent avoir une politique de récupération de Retain
pour être récupérés. Si ce n'est pas le cas, le PV entre dans un état d'échec lorsque le PVC est délié du PV.
La politique de récupération de Recycle
est obsolète dans OpenShift Container Platform 4.
10.22.19.2. Récupération des volumes persistants provisionnés statiquement
Récupérez un volume persistant (PV) provisionné statiquement en déliant la réclamation de volume persistant (PVC) et en supprimant le PV. Il se peut que vous deviez également supprimer manuellement le stockage partagé.
La récupération d'un PV provisionné statiquement dépend du stockage sous-jacent. Cette procédure propose une approche générale qu'il peut être nécessaire de personnaliser en fonction de votre système de stockage.
Procédure
Assurez-vous que la politique de récupération du PV est réglée sur
Retain
:Vérifier la politique de récupération du PV :
oc get pv <pv_name> -o yaml | grep 'persistentVolumeReclaimPolicy' $ oc get pv <pv_name> -o yaml
Si
persistentVolumeReclaimPolicy
n'est pas défini surRetain
, modifiez la politique de récupération à l'aide de la commande suivante :$ oc patch pv <pv_name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}''
S'assurer qu'aucune ressource n'utilise le PV :
oc describe pvc <pvc_name> | grep 'Mounted By:' (Monté par :)
Supprimez toutes les ressources qui utilisent le PVC avant de continuer.
Supprimer le PVC pour libérer le PV :
oc delete pvc <pvc_name> $ oc delete pvc <pvc_name>
Facultatif : Exporter la configuration PV dans un fichier YAML. Si vous supprimez manuellement le stockage partagé plus tard dans cette procédure, vous pourrez vous référer à cette configuration. Vous pouvez également utiliser les paramètres
spec
de ce fichier comme base pour créer un nouveau PV avec la même configuration de stockage après avoir récupéré le PV :$ oc get pv <nom_du_v> -o yaml > <nom_du_fichier>.yaml
Supprimer le PV :
oc delete pv <pv_name> $ oc delete pv <pv_name>
Facultatif : Selon le type de stockage, il peut être nécessaire de supprimer le contenu du dossier de stockage partagé :
$ rm -rf <path_to_share_storage>
Facultatif : Créez un PV qui utilise la même configuration de stockage que le PV supprimé. Si vous avez exporté la configuration du PV récupéré précédemment, vous pouvez utiliser les paramètres
spec
de ce fichier comme base d'un nouveau manifeste PV :NotePour éviter tout conflit, il est conseillé de donner au nouvel objet PV un nom différent de celui que vous avez supprimé.
oc create -f <nouveau_nom_pv>.yaml
Ressources supplémentaires
- Configuration du stockage local pour les machines virtuelles
- La documentation OpenShift Container Platform Storage contient plus d'informations sur le stockage persistant.
10.22.20. Extension du disque d'une machine virtuelle
Vous pouvez augmenter la taille du disque d'une machine virtuelle (VM) pour fournir une plus grande capacité de stockage en redimensionnant la revendication de volume persistant (PVC) du disque.
Cependant, vous ne pouvez pas réduire la taille d'un disque VM.
10.22.20.1. Agrandir le disque d'une machine virtuelle
L'agrandissement du disque de la VM met de l'espace supplémentaire à la disposition de la machine virtuelle. Toutefois, il incombe au propriétaire de la machine virtuelle de décider comment utiliser l'espace de stockage.
Si le disque est un PVC Filesystem
, le fichier correspondant s'étend à la taille restante tout en réservant de l'espace pour les frais généraux du système de fichiers.
Procédure
Modifiez le manifeste
PersistentVolumeClaim
du disque VM que vous souhaitez développer :$ oc edit pvc <nom_du_pvc>
Modifier la valeur de l'attribut
spec.resource.requests.storage
pour obtenir une taille plus grande.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vm-disk-expand spec: accessModes: - ReadWriteMany resources: requests: storage: 3Gi 1 ...
- 1
- Taille du disque de la VM pouvant être augmentée