4.12. Stockage persistant à l'aide du stockage local
4.12.1. Stockage persistant à l'aide de volumes locaux
OpenShift Container Platform peut être approvisionné avec un stockage persistant en utilisant des volumes locaux. Les volumes persistants locaux vous permettent d'accéder aux périphériques de stockage locaux, tels qu'un disque ou une partition, en utilisant l'interface standard de demande de volume persistant.
Les volumes locaux peuvent être utilisés sans qu'il soit nécessaire de planifier manuellement les pods sur les nœuds, car le système est conscient des contraintes liées aux nœuds de volume. Toutefois, les volumes locaux restent soumis à la disponibilité du nœud sous-jacent et ne conviennent pas à toutes les applications.
Les volumes locaux ne peuvent être utilisés que comme volumes persistants créés de manière statique.
4.12.1.1. Installation de l'opérateur de stockage local
L'opérateur de stockage local n'est pas installé par défaut dans OpenShift Container Platform. Utilisez la procédure suivante pour installer et configurer cet opérateur afin d'activer les volumes locaux dans votre cluster.
Conditions préalables
- Accès à la console web ou à l'interface de ligne de commande (CLI) d'OpenShift Container Platform.
Procédure
Créez le projet
openshift-local-storage
:$ oc adm new-project openshift-local-storage
Facultatif : Autoriser la création de stockage local sur les nœuds d'infrastructure.
Vous pouvez utiliser l'opérateur de stockage local pour créer des volumes sur les nœuds d'infrastructure afin de prendre en charge des composants tels que la journalisation et la surveillance.
Vous devez ajuster le sélecteur de nœuds par défaut afin que l'opérateur de stockage local inclue les nœuds d'infrastructure, et pas seulement les nœuds de travail.
Pour empêcher l'opérateur de stockage local d'hériter du sélecteur par défaut de l'ensemble du cluster, entrez la commande suivante :
$ oc annotate project openshift-local-storage openshift.io/node-selector=''
Depuis l'interface utilisateur
Pour installer l'Opérateur de stockage local à partir de la console web, procédez comme suit :
- Connectez-vous à la console web de OpenShift Container Platform.
-
Naviguez jusqu'à Operators
OperatorHub. - Tapez Local Storage dans le champ de filtre pour localiser l'opérateur de stockage local.
- Cliquez sur Install.
- Sur la page Install Operator, sélectionnez A specific namespace on the cluster. Sélectionnez openshift-local-storage dans le menu déroulant.
- Ajustez les valeurs de Update Channel et Approval Strategy aux valeurs que vous souhaitez.
- Cliquez sur Install.
Une fois cette opération terminée, l'opérateur de stockage local sera répertorié dans la section Installed Operators de la console web.
À partir de l'interface de programmation (CLI)
Installez l'opérateur de stockage local à partir de l'interface de gestion.
Exécutez la commande suivante pour obtenir la version majeure et mineure d'OpenShift Container Platform. Cette information est nécessaire pour la valeur
channel
dans l'étape suivante.$ OC_VERSION=$(oc version -o yaml | grep openshiftVersion | \ grep -o '[0-9]*[.][0-9]*' | head -1)
Créer un fichier objet YAML pour définir un groupe d'opérateurs et un abonnement pour l'opérateur de stockage local, tel que
openshift-local-storage.yaml
:Exemple openshift-local-storage.yaml
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: local-operator-group namespace: openshift-local-storage spec: targetNamespaces: - openshift-local-storage --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: local-storage-operator namespace: openshift-local-storage spec: channel: "${OC_VERSION}" installPlanApproval: Automatic 1 name: local-storage-operator source: redhat-operators sourceNamespace: openshift-marketplace
- 1
- La politique d'approbation des utilisateurs pour un plan d'installation.
Créez l'objet Opérateur de stockage local en entrant la commande suivante :
$ oc apply -f openshift-local-storage.yaml
À ce stade, le gestionnaire du cycle de vie de l'opérateur (OLM) est maintenant au courant de l'existence de l'opérateur de stockage local. Une ClusterServiceVersion (CSV) pour l'opérateur devrait apparaître dans l'espace de noms cible, et les API fournies par l'opérateur devraient être disponibles pour la création.
Vérifier l'installation du stockage local en contrôlant que tous les pods et l'opérateur de stockage local ont été créés :
Vérifier que tous les pods nécessaires ont été créés :
$ oc -n openshift-local-storage get pods
Exemple de sortie
NAME READY STATUS RESTARTS AGE local-storage-operator-746bf599c9-vlt5t 1/1 Running 0 19m
Vérifiez le manifeste YAML ClusterServiceVersion (CSV) pour voir si l'opérateur de stockage local est disponible dans le projet
openshift-local-storage
:$ oc get csvs -n openshift-local-storage
Exemple de sortie
NAME DISPLAY VERSION REPLACES PHASE local-storage-operator.4.2.26-202003230335 Local Storage 4.2.26-202003230335 Succeeded
Lorsque toutes les vérifications ont été effectuées, l'opérateur de stockage local est installé avec succès.
4.12.1.2. Approvisionnement de volumes locaux à l'aide de l'Opérateur de stockage local
Les volumes locaux ne peuvent pas être créés par provisionnement dynamique. En revanche, des volumes persistants peuvent être créés par l'opérateur de stockage local. L'opérateur de stockage local recherche des périphériques de système de fichiers ou de volumes de blocs aux chemins d'accès spécifiés dans la ressource définie.
Conditions préalables
- L'opérateur de stockage local est installé.
Vous disposez d'un disque local qui répond aux conditions suivantes :
- Il est rattaché à un nœud.
- Il n'est pas monté.
- Il ne contient pas de partitions.
Procédure
Créer la ressource volume local. Cette ressource doit définir les nœuds et les chemins d'accès aux volumes locaux.
NoteN'utilisez pas différents noms de classe de stockage pour le même périphérique. Cela entraînerait la création de plusieurs volumes persistants (PV).
Exemple : Système de fichiers
apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage" 1 spec: nodeSelector: 2 nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - ip-10-0-140-183 - ip-10-0-158-139 - ip-10-0-164-33 storageClassDevices: - storageClassName: "local-sc" 3 volumeMode: Filesystem 4 fsType: xfs 5 devicePaths: 6 - /path/to/device 7
- 1
- L'espace de noms dans lequel l'Opérateur de stockage local est installé.
- 2
- Facultatif : Un sélecteur de nœud contenant une liste de nœuds auxquels les volumes de stockage local sont attachés. Cet exemple utilise les noms d'hôtes des nœuds, obtenus à partir de
oc get node
. Si aucune valeur n'est définie, l'opérateur de stockage local tentera de trouver les disques correspondants sur tous les nœuds disponibles. - 3
- Le nom de la classe de stockage à utiliser lors de la création d'objets de volumes persistants. L'Opérateur de stockage local crée automatiquement la classe de stockage si elle n'existe pas. Veillez à utiliser une classe de stockage qui identifie de manière unique cet ensemble de volumes locaux.
- 4
- Le mode de volume, soit
Filesystem
ouBlock
, qui définit le type de volumes locaux.NoteUn volume de blocs bruts (
volumeMode: Block
) n'est pas formaté avec un système de fichiers. N'utilisez ce mode que si une application fonctionnant sur le pod peut utiliser des périphériques de blocs bruts. - 5
- Système de fichiers créé lorsque le volume local est monté pour la première fois.
- 6
- Chemin d'accès contenant une liste de périphériques de stockage locaux à sélectionner.
- 7
- Remplacez cette valeur par le chemin d'accès de vos disques locaux à la ressource
LocalVolume
by-id
, par exemple/dev/disk/by-id/wwn
. Les PV sont créés pour ces disques locaux lorsque le provisionneur est déployé avec succès.NoteSi vous exécutez OpenShift Container Platform sur des zSystems IBM avec RHEL KVM, vous devez attribuer un numéro de série à votre disque VM. Sinon, le disque VM ne peut pas être identifié après le redémarrage. Vous pouvez utiliser la commande
virsh edit <VM>
pour ajouter la définition<serial>mydisk</serial>
.
Exemple : Bloc
apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage" 1 spec: nodeSelector: 2 nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - ip-10-0-136-143 - ip-10-0-140-255 - ip-10-0-144-180 storageClassDevices: - storageClassName: "localblock-sc" 3 volumeMode: Block 4 devicePaths: 5 - /path/to/device 6
- 1
- L'espace de noms dans lequel l'Opérateur de stockage local est installé.
- 2
- Facultatif : Un sélecteur de nœud contenant une liste de nœuds auxquels les volumes de stockage local sont attachés. Cet exemple utilise les noms d'hôtes des nœuds, obtenus à partir de
oc get node
. Si aucune valeur n'est définie, l'opérateur de stockage local tentera de trouver les disques correspondants sur tous les nœuds disponibles. - 3
- Le nom de la classe de stockage à utiliser lors de la création d'objets de volumes persistants.
- 4
- Le mode de volume, soit
Filesystem
ouBlock
, qui définit le type de volumes locaux. - 5
- Chemin d'accès contenant une liste de périphériques de stockage locaux à sélectionner.
- 6
- Remplacez cette valeur par le chemin d'accès de vos disques locaux à la ressource
LocalVolume
by-id
, par exempledev/disk/by-id/wwn
. Les PV sont créés pour ces disques locaux lorsque le provisionneur est déployé avec succès.
NoteSi vous exécutez OpenShift Container Platform sur des zSystems IBM avec RHEL KVM, vous devez attribuer un numéro de série à votre disque VM. Sinon, le disque VM ne peut pas être identifié après le redémarrage. Vous pouvez utiliser la commande
virsh edit <VM>
pour ajouter la définition<serial>mydisk</serial>
.Créez la ressource de volume local dans votre cluster OpenShift Container Platform. Spécifiez le fichier que vous venez de créer :
oc create -f <local-volume>.yaml
Vérifiez que le provisionneur a été créé et que les ensembles de démons correspondants ont été créés :
$ oc get all -n openshift-local-storage
Exemple de sortie
NAME READY STATUS RESTARTS AGE pod/diskmaker-manager-9wzms 1/1 Running 0 5m43s pod/diskmaker-manager-jgvjp 1/1 Running 0 5m43s pod/diskmaker-manager-tbdsj 1/1 Running 0 5m43s pod/local-storage-operator-7db4bd9f79-t6k87 1/1 Running 0 14m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/local-storage-operator-metrics ClusterIP 172.30.135.36 <none> 8383/TCP,8686/TCP 14m NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/diskmaker-manager 3 3 3 3 3 <none> 5m43s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/local-storage-operator 1/1 1 1 14m NAME DESIRED CURRENT READY AGE replicaset.apps/local-storage-operator-7db4bd9f79 1 1 1 14m
Notez le nombre souhaité et le nombre actuel de processus du jeu de démons. Un nombre souhaité de
0
indique que les sélecteurs d'étiquettes n'étaient pas valides.Vérifiez que les volumes persistants ont été créés :
$ oc get pv
Exemple de sortie
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1cec77cf 100Gi RWO Delete Available local-sc 88m local-pv-2ef7cd2a 100Gi RWO Delete Available local-sc 82m local-pv-3fa1c73 100Gi RWO Delete Available local-sc 48m
La modification de l'objet LocalVolume
ne modifie pas les objets fsType
ou volumeMode
des volumes persistants existants, car cela pourrait entraîner une opération destructive.
4.12.1.3. Approvisionnement de volumes locaux sans l'Opérateur de stockage local
Les volumes locaux ne peuvent pas être créés par provisionnement dynamique. En revanche, des volumes persistants peuvent être créés en définissant le volume persistant (PV) dans une définition d'objet. Le provisionneur de volumes locaux recherche tous les périphériques de système de fichiers ou de volumes de blocs aux chemins d'accès spécifiés dans la ressource définie.
Le provisionnement manuel des PV comporte le risque de fuites de données potentielles à travers la réutilisation des PV lorsque les PVC sont supprimés. L'opérateur de stockage local est recommandé pour automatiser le cycle de vie des dispositifs lors de l'approvisionnement des PV locaux.
Conditions préalables
- Les disques locaux sont attachés aux nœuds d'OpenShift Container Platform.
Procédure
Définir le PV. Créez un fichier, tel que
example-pv-filesystem.yaml
ouexample-pv-block.yaml
, avec la définition de l'objetPersistentVolume
. Cette ressource doit définir les nœuds et les chemins d'accès aux volumes locaux.NoteN'utilisez pas différents noms de classe de stockage pour le même appareil. Cela entraînerait la création de plusieurs PV.
exemple-pv-filesystem.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: example-pv-filesystem spec: capacity: storage: 100Gi volumeMode: Filesystem 1 accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage 2 local: path: /dev/xvdf 3 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - example-node
- 1
- Le mode de volume, soit
Filesystem
ouBlock
, qui définit le type de PV. - 2
- Nom de la classe de stockage à utiliser lors de la création de ressources PV. Utiliser une classe de stockage qui identifie de manière unique cet ensemble de PV.
- 3
- Le chemin d'accès contenant une liste de périphériques de stockage locaux à choisir, ou un répertoire. Vous ne pouvez spécifier un répertoire qu'avec
Filesystem
volumeMode
.
NoteUn volume de blocs bruts (
volumeMode: block
) n'est pas formaté avec un système de fichiers. N'utilisez ce mode que si une application fonctionnant sur le pod peut utiliser des périphériques de blocs bruts.exemple-pv-block.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: example-pv-block spec: capacity: storage: 100Gi volumeMode: Block 1 accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage 2 local: path: /dev/xvdf 3 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - example-node
- 1
- Le mode de volume, soit
Filesystem
ouBlock
, qui définit le type de PV. - 2
- Nom de la classe de stockage à utiliser lors de la création de ressources PV. Veillez à utiliser une classe de stockage qui identifie de manière unique cet ensemble de PV.
- 3
- Chemin d'accès contenant une liste de périphériques de stockage locaux à sélectionner.
Créez la ressource PV dans votre cluster OpenShift Container Platform. Spécifiez le fichier que vous venez de créer :
oc create -f <example-pv>.yaml
Vérifier que le PV local a été créé :
$ oc get pv
Exemple de sortie
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE example-pv-filesystem 100Gi RWO Delete Available local-storage 3m47s example-pv1 1Gi RWO Delete Bound local-storage/pvc1 local-storage 12h example-pv2 1Gi RWO Delete Bound local-storage/pvc2 local-storage 12h example-pv3 1Gi RWO Delete Bound local-storage/pvc3 local-storage 12h
4.12.1.4. Création de la revendication de volume persistant du volume local
Les volumes locaux doivent être créés de manière statique en tant que revendication de volume persistant (PVC) pour être accessibles par le pod.
Conditions préalables
- Des volumes persistants ont été créés à l'aide du provisionneur de volumes local.
Procédure
Créer le PVC en utilisant la classe de stockage correspondante :
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: local-pvc-name 1 spec: accessModes: - ReadWriteOnce volumeMode: Filesystem 2 resources: requests: storage: 100Gi 3 storageClassName: local-sc 4
Créez le PVC dans le cluster OpenShift Container Platform, en spécifiant le fichier que vous venez de créer :
oc create -f <local-pvc>.yaml
4.12.1.5. Joindre la demande locale
Une fois qu'un volume local a été mis en correspondance avec une demande de volume persistant, il peut être spécifié à l'intérieur d'une ressource.
Conditions préalables
- Une demande de volume persistant existe dans le même espace de noms.
Procédure
Inclure la revendication définie dans la spécification de la ressource. L'exemple suivant déclare la revendication de volume persistant à l'intérieur d'un pod :
apiVersion: v1 kind: Pod spec: ... containers: volumeMounts: - name: local-disks 1 mountPath: /data 2 volumes: - name: localpvc persistentVolumeClaim: claimName: local-pvc-name 3
- 1
- Le nom du volume à monter.
- 2
- Le chemin à l'intérieur du module où le volume est monté. Ne montez pas le volume sur la racine du conteneur,
/
, ou sur un chemin identique dans l'hôte et dans le conteneur. Cela peut corrompre votre système hôte si le conteneur est suffisamment privilégié, comme l'hôte/dev/pts
files. Vous pouvez monter l'hôte en toute sécurité en utilisant/host
. - 3
- Le nom de la revendication de volume persistant existante à utiliser.
Créez la ressource dans le cluster OpenShift Container Platform, en spécifiant le fichier que vous venez de créer :
oc create -f <local-pod>.yaml
4.12.1.6. Automatisation de la découverte et de l'approvisionnement des périphériques de stockage locaux
L'opérateur de stockage local automatise la découverte et le provisionnement du stockage local. Grâce à cette fonctionnalité, vous pouvez simplifier l'installation lorsque le provisionnement dynamique n'est pas disponible lors du déploiement, comme dans le cas d'instances de stockage bare metal, VMware ou AWS avec des périphériques connectés.
La découverte et le provisionnement automatiques sont des fonctionnalités de l'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
La procédure suivante permet de découvrir automatiquement les périphériques locaux et d'approvisionner automatiquement les volumes locaux pour les périphériques sélectionnés.
Utilisez l'objet LocalVolumeSet
avec prudence. Lorsque vous provisionnez automatiquement des volumes persistants (PV) à partir de disques locaux, les PV locaux peuvent réclamer tous les périphériques qui correspondent. Si vous utilisez un objet LocalVolumeSet
, assurez-vous que l'opérateur de stockage local est la seule entité à gérer les périphériques locaux sur le nœud.
Conditions préalables
- Vous avez des droits d'administrateur de cluster.
- Vous avez installé l'Opérateur de stockage local.
- Vous avez attaché des disques locaux aux nœuds d'OpenShift Container Platform.
-
Vous avez accès à la console web d'OpenShift Container Platform et à l'interface de ligne de commande (CLI)
oc
.
Procédure
Pour activer la découverte automatique des appareils locaux à partir de la console web :
-
Dans la perspective Administrator, naviguez vers Operators
Installed Operators et cliquez sur l'onglet Local Volume Discovery. - Cliquez sur Create Local Volume Discovery.
Sélectionnez All nodes ou Select nodes, selon que vous souhaitez découvrir les disques disponibles sur tous les nœuds ou sur des nœuds spécifiques.
NoteSeuls les nœuds de travail sont disponibles, que vous filtriez à l'aide de All nodes ou de Select nodes.
- Cliquez sur Create.
-
Dans la perspective Administrator, naviguez vers Operators
Une instance de découverte de volume local nommée auto-discover-devices
est affichée.
Pour afficher une liste continue des dispositifs disponibles sur un nœud :
- Connectez-vous à la console web de OpenShift Container Platform.
-
Naviguez jusqu'à Compute
Nodes. - Cliquez sur le nom du nœud que vous souhaitez ouvrir. La page "Détails du nœud" s'affiche.
Sélectionnez l'onglet Disks pour afficher la liste des appareils sélectionnés.
La liste des périphériques est mise à jour en permanence au fur et à mesure que des disques locaux sont ajoutés ou supprimés. Vous pouvez filtrer les périphériques par nom, état, type, modèle, capacité et mode.
Pour provisionner automatiquement des volumes locaux pour les appareils découverts à partir de la console web :
-
Naviguez jusqu'à Operators
Installed Operators et sélectionnez Local Storage dans la liste des opérateurs. -
Sélectionnez Local Volume Set
Create Local Volume Set. - Saisissez un nom d'ensemble de volumes et un nom de classe de stockage.
Choisissez All nodes ou Select nodes pour appliquer des filtres en conséquence.
NoteSeuls les nœuds de travail sont disponibles, que vous filtriez à l'aide de All nodes ou de Select nodes.
Sélectionnez le type de disque, le mode, la taille et la limite que vous souhaitez appliquer à l'ensemble de volumes locaux, puis cliquez sur Create.
Un message s'affiche au bout de quelques minutes, indiquant que l'opérateur s'est réconcilié avec succès
-
Naviguez jusqu'à Operators
Il est également possible de provisionner des volumes locaux pour les appareils découverts à partir de la CLI :
Créez un fichier objet YAML pour définir l'ensemble de volumes locaux, tel que
local-volume-set.yaml
, comme indiqué dans l'exemple suivant :apiVersion: local.storage.openshift.io/v1alpha1 kind: LocalVolumeSet metadata: name: example-autodetect spec: nodeSelector: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-0 - worker-1 storageClassName: example-storageclass 1 volumeMode: Filesystem fsType: ext4 maxDeviceCount: 10 deviceInclusionSpec: deviceTypes: 2 - disk - part deviceMechanicalProperties: - NonRotational minSize: 10G maxSize: 100G models: - SAMSUNG - Crucial_CT525MX3 vendors: - ATA - ST2000LM
- 1
- Détermine la classe de stockage qui est créée pour les volumes persistants provisionnés à partir de périphériques découverts. L'Opérateur de stockage local crée automatiquement la classe de stockage si elle n'existe pas. Veillez à utiliser une classe de stockage qui identifie de manière unique cet ensemble de volumes locaux.
- 2
- Lors de l'utilisation de la fonction de jeu de volumes locaux, l'Opérateur de stockage local ne prend pas en charge l'utilisation de périphériques de gestion de volumes logiques (LVM).
Créer l'objet jeu de volume local :
$ oc apply -f local-volume-set.yaml
Vérifiez que les volumes persistants locaux ont été provisionnés dynamiquement en fonction de la classe de stockage :
$ oc get pv
Exemple de sortie
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1cec77cf 100Gi RWO Delete Available example-storageclass 88m local-pv-2ef7cd2a 100Gi RWO Delete Available example-storageclass 82m local-pv-3fa1c73 100Gi RWO Delete Available example-storageclass 48m
Les résultats sont supprimés après avoir été retirés du nœud. Les liens symboliques doivent être supprimés manuellement.
4.12.1.7. Utilisation des tolérances avec les pods de l'opérateur de stockage local
Il est possible d'appliquer des restrictions aux nœuds pour les empêcher d'exécuter des charges de travail générales. Pour permettre à l'opérateur de stockage local d'utiliser des nœuds altérés, vous devez ajouter des tolérances à la définition de Pod
ou DaemonSet
. Cela permet aux ressources créées de s'exécuter sur ces nœuds altérés.
Vous appliquez des tolérances au pod de l'opérateur de stockage local via la ressource LocalVolume
et vous appliquez des altérations à un nœud via la spécification de nœud. Une tare sur un nœud indique au nœud de repousser tous les modules qui ne tolèrent pas la tare. L'utilisation d'une tare spécifique qui n'est pas présente sur d'autres modules garantit que le module de l'opérateur de stockage local peut également fonctionner sur ce nœud.
Les plaintes et les tolérances se composent d'une clé, d'une valeur et d'un effet. En tant qu'argument, il est exprimé sous la forme key=value:effect
. Un opérateur permet de laisser l'un de ces paramètres vide.
Conditions préalables
- L'opérateur de stockage local est installé.
- Les disques locaux sont attachés aux nœuds d'OpenShift Container Platform avec un taint.
- Les nœuds altérés sont censés fournir un stockage local.
Procédure
Pour configurer les volumes locaux en vue de leur ordonnancement sur les nœuds altérés :
Modifiez le fichier YAML qui définit le site
Pod
et ajoutez la spécificationLocalVolume
, comme indiqué dans l'exemple suivant :apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage" spec: tolerations: - key: localstorage 1 operator: Equal 2 value: "localstorage" 3 storageClassDevices: - storageClassName: "localblock-sc" volumeMode: Block 4 devicePaths: 5 - /dev/xvdg
- 1
- Spécifiez la clé que vous avez ajoutée au nœud.
- 2
- Indiquez l'opérateur
Equal
pour exiger que les paramètreskey
/value
correspondent. Si l'opérateur estExists
, le système vérifie que la clé existe et ignore la valeur. Si l'opérateur estEqual
, la clé et la valeur doivent correspondre. - 3
- Indiquer la valeur
local
du nœud altéré. - 4
- Le mode de volume, soit
Filesystem
ouBlock
, définissant le type de volumes locaux. - 5
- Chemin d'accès contenant une liste de périphériques de stockage locaux à sélectionner.
Facultatif : Pour créer des volumes persistants locaux uniquement sur les nœuds altérés, modifiez le fichier YAML et ajoutez la spécification
LocalVolume
, comme indiqué dans l'exemple suivant :spec: tolerations: - key: node-role.kubernetes.io/master operator: Exists
Les tolérances définies seront transmises aux ensembles de démons résultants, ce qui permettra de créer des pods de disquaire et de provisionneur pour les nœuds qui contiennent les taches spécifiées.
4.12.1.8. Paramètres de l'opérateur de stockage local
OpenShift Container Platform fournit les mesures suivantes pour l'opérateur de stockage local :
-
lso_discovery_disk_count
nombre total de dispositifs découverts sur chaque nœud -
lso_lvset_provisioned_PV_count
nombre total de PV créés par les objetsLocalVolumeSet
-
lso_lvset_unmatched_disk_count
nombre total de disques que l'opérateur de stockage local n'a pas sélectionnés pour le provisionnement en raison de critères non concordants -
lso_lvset_orphaned_symlink_count
nombre d'appareils dont les PV ne correspondent plus aux critères de l'objetLocalVolumeSet
-
lso_lv_orphaned_symlink_count
nombre d'appareils dont les PV ne correspondent plus aux critères de l'objetLocalVolume
-
lso_lv_provisioned_PV_count
nombre total de PV provisionnées pourLocalVolume
Pour utiliser ces mesures, veillez à.. :
- Activer la prise en charge de la surveillance lors de l'installation de l'Opérateur de stockage local.
-
Lors de la mise à jour vers OpenShift Container Platform 4.9 ou une version ultérieure, activez le support métrique manuellement en ajoutant le label
operator-metering=true
à l'espace de noms.
Pour plus d'informations sur les métriques, voir Gestion des métriques.
4.12.1.9. Suppression des ressources de l'opérateur de stockage local
4.12.1.9.1. Suppression d'un volume local ou d'un ensemble de volumes locaux
Il arrive que des volumes locaux et des ensembles de volumes locaux doivent être supprimés. Bien que la suppression de l'entrée dans la ressource et la suppression du volume persistant suffisent généralement, si vous souhaitez réutiliser le même chemin d'accès au périphérique ou le faire gérer par une classe de stockage différente, des étapes supplémentaires sont nécessaires.
La procédure suivante présente un exemple de suppression d'un volume local. La même procédure peut également être utilisée pour supprimer les liens symboliques d'une ressource personnalisée d'un ensemble de volumes locaux.
Conditions préalables
Le volume persistant doit être dans un état
Released
ouAvailable
.AvertissementLa suppression d'un volume persistant encore en cours d'utilisation peut entraîner la perte ou la corruption de données.
Procédure
Modifiez le volume local précédemment créé pour supprimer les disques indésirables.
Modifiez la ressource du cluster :
oc edit localvolume <name> -n openshift-local-storage
-
Naviguez jusqu'aux lignes sous
devicePaths
, et supprimez tous les disques non désirés.
Supprimer tous les volumes persistants créés.
oc delete pv <pv-name> $ oc delete pv <pv-name>
Supprimer tous les liens symboliques sur le nœud.
AvertissementL'étape suivante consiste à accéder à un nœud en tant qu'utilisateur racine. La modification de l'état du nœud au-delà des étapes de cette procédure peut entraîner une instabilité de la grappe.
Créer un pod de débogage sur le nœud :
$ oc debug node/<node-name>
Changez votre répertoire racine en
/host
:$ chroot /host
Naviguez jusqu'au répertoire contenant les liens symboliques du volume local.
$ cd /mnt/openshift-local-storage/<sc-name> 1
- 1
- Le nom de la classe de stockage utilisée pour créer les volumes locaux.
Supprimer le lien symbolique appartenant à l'appareil supprimé.
$ rm <symlink>
4.12.1.9.2. Désinstallation de l'opérateur de stockage local
Pour désinstaller l'Opérateur de stockage local, vous devez supprimer l'Opérateur et toutes les ressources créées dans le projet openshift-local-storage
.
Il n'est pas recommandé de désinstaller l'Opérateur de stockage local lorsque des PV de stockage local sont encore utilisés. Bien que les PV soient conservées après la suppression de l'opérateur, il peut y avoir un comportement indéterminé si l'opérateur est désinstallé et réinstallé sans supprimer les PV et les ressources de stockage local.
Conditions préalables
- Accès à la console web d'OpenShift Container Platform.
Procédure
Supprimez toutes les ressources de volume local installées dans le projet, telles que
localvolume
,localvolumeset
, etlocalvolumediscovery
:$ oc delete localvolume --all --all-namespaces $ oc delete localvolumeset --all --all-namespaces $ oc delete localvolumediscovery --all --all-namespaces
Désinstallez l'Opérateur de stockage local à partir de la console web.
- Connectez-vous à la console web de OpenShift Container Platform.
-
Naviguez jusqu'à Operators
Installed Operators. - Tapez Local Storage dans le champ de filtre pour localiser l'opérateur de stockage local.
- Cliquez sur le menu Options à la fin de l'opérateur de stockage local.
- Cliquez sur Uninstall Operator.
- Cliquez sur Remove dans la fenêtre qui s'affiche.
Les PV créés par l'Opérateur de stockage local resteront dans le cluster jusqu'à ce qu'ils soient supprimés. Une fois que ces volumes ne sont plus utilisés, supprimez-les en exécutant la commande suivante :
oc delete pv <pv-name> $ oc delete pv <pv-name>
Supprimer le projet
openshift-local-storage
:$ oc delete project openshift-local-storage
4.12.2. Stockage persistant à l'aide de hostPath
Un volume hostPath dans un cluster OpenShift Container Platform monte un fichier ou un répertoire du système de fichiers du nœud hôte dans votre pod. La plupart des pods n'auront pas besoin d'un volume hostPath, mais il offre une option rapide pour les tests si une application le nécessite.
L'administrateur du cluster doit configurer les pods pour qu'ils fonctionnent de manière privilégiée. Cela permet d'accéder aux pods du même nœud.
4.12.2.1. Vue d'ensemble
OpenShift Container Platform prend en charge le montage hostPath pour le développement et les tests sur un cluster à nœud unique.
Dans un cluster de production, vous n'utiliserez pas hostPath. Au lieu de cela, un administrateur de cluster provisionnerait une ressource réseau, telle qu'un volume GCE Persistent Disk, un partage NFS ou un volume Amazon EBS. Les ressources réseau prennent en charge l'utilisation des classes de stockage pour configurer le provisionnement dynamique.
Un volume hostPath doit être provisionné de manière statique.
Ne montez pas sur la racine du conteneur, /
, ou tout autre chemin identique sur l'hôte et le conteneur. Cela peut corrompre votre système hôte si le conteneur est suffisamment privilégié. Il est prudent de monter l'hôte en utilisant /host
. L'exemple suivant montre que le répertoire /
de l'hôte est monté dans le conteneur à l'adresse /host
.
apiVersion: v1 kind: Pod metadata: name: test-host-mount spec: containers: - image: registry.access.redhat.com/ubi8/ubi name: test-container command: ['sh', '-c', 'sleep 3600'] volumeMounts: - mountPath: /host name: host-slash volumes: - name: host-slash hostPath: path: / type: ''
4.12.2.2. Approvisionnement statique des volumes hostPath
Un pod qui utilise un volume hostPath doit être référencé par un provisionnement manuel (statique).
Procédure
Définir le volume persistant (PV). Créer un fichier,
pv.yaml
, avec la définition de l'objetPersistentVolume
:apiVersion: v1 kind: PersistentVolume metadata: name: task-pv-volume 1 labels: type: local spec: storageClassName: manual 2 capacity: storage: 5Gi accessModes: - ReadWriteOnce 3 persistentVolumeReclaimPolicy: Retain hostPath: path: "/mnt/data" 4
- 1
- Le nom du volume. Ce nom est la façon dont il est identifié par les réclamations de volumes persistants ou les pods.
- 2
- Utilisé pour lier les demandes de réclamation de volume persistant à ce volume persistant.
- 3
- Le volume peut être monté comme
read-write
par un seul nœud. - 4
- Le fichier de configuration spécifie que le volume se trouve à
/mnt/data
sur le nœud du cluster. Ne montez pas sur la racine du conteneur,/
, ou tout autre chemin identique sur l'hôte et le conteneur. Cela peut corrompre votre système hôte. Vous pouvez monter l'hôte en toute sécurité en utilisant/host
.
Créer le PV à partir du fichier :
$ oc create -f pv.yaml
Définir la revendication de volume persistant (PVC). Créez un fichier,
pvc.yaml
, avec la définition de l'objetPersistentVolumeClaim
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: task-pvc-volume spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: manual
Créer le PVC à partir du fichier :
$ oc create -f pvc.yaml
4.12.2.3. Montage du partage hostPath dans un pod privilégié
Une fois que la demande de volume persistant a été créée, elle peut être utilisée à l'intérieur par une application. L'exemple suivant montre le montage de ce partage à l'intérieur d'un pod.
Conditions préalables
- Il existe une revendication de volume persistant qui est mappée au partage hostPath sous-jacent.
Procédure
Créer un pod privilégié qui monte la revendication de volume persistant existante :
apiVersion: v1 kind: Pod metadata: name: pod-name 1 spec: containers: ... securityContext: privileged: true 2 volumeMounts: - mountPath: /data 3 name: hostpath-privileged ... securityContext: {} volumes: - name: hostpath-privileged persistentVolumeClaim: claimName: task-pvc-volume 4
- 1
- Le nom du pod.
- 2
- Le pod doit être exécuté en tant que privilégié pour accéder au stockage du nœud.
- 3
- Le chemin pour monter le partage du chemin de l'hôte à l'intérieur du pod privilégié. Ne montez pas sur la racine du conteneur,
/
, ou tout autre chemin qui est le même dans l'hôte et le conteneur. Cela peut corrompre votre système hôte si le conteneur est suffisamment privilégié, comme les fichiers de l'hôte/dev/pts
. Vous pouvez monter l'hôte en toute sécurité en utilisant/host
. - 4
- Le nom de l'objet
PersistentVolumeClaim
qui a été créé précédemment.
4.12.3. Stockage persistant à l'aide du gestionnaire de volume logique
Logical volume manager storage (LVM Storage) utilise le pilote TopoLVM CSI pour provisionner dynamiquement le stockage local sur les clusters OpenShift à nœud unique.
LVM Storage crée des volumes à provisionnement fin à l'aide de Logical Volume Manager et fournit un provisionnement dynamique du stockage en bloc sur un cluster OpenShift à nœud unique aux ressources limitées.
4.12.3.1. Déployer le stockage LVM sur des clusters OpenShift à nœud unique
Vous pouvez déployer LVM Storage sur un nœud unique d'OpenShift bare-metal ou sur un cluster d'infrastructure fourni par l'utilisateur et le configurer pour provisionner dynamiquement le stockage pour vos charges de travail.
Le stockage LVM crée un groupe de volumes utilisant tous les disques inutilisés disponibles et crée un thin pool unique d'une taille correspondant à 90 % du groupe de volumes. Les 10 % restants du groupe de volumes sont laissés libres pour permettre la récupération des données en élargissant le thin pool en cas de besoin. Il se peut que vous deviez effectuer manuellement cette récupération.
Vous pouvez utiliser les réclamations de volumes persistants (PVC) et les instantanés de volumes fournis par le stockage LVM pour demander de l'espace de stockage et créer des instantanés de volumes.
LVM Storage configure une limite d'overprovisioning par défaut de 10 pour tirer parti de la fonction de thin-provisioning. La taille totale des volumes et des instantanés de volume qui peuvent être créés sur les clusters OpenShift à nœud unique est 10 fois supérieure à la taille du thin pool.
Vous pouvez déployer le stockage LVM sur des clusters OpenShift à nœud unique en utilisant l'une des méthodes suivantes :
- Red Hat Advanced Cluster Management (RHACM)
- Console Web de la plateforme OpenShift Container
4.12.3.1.1. Requirements
Avant de commencer à déployer le stockage LVM sur des clusters OpenShift à nœud unique, assurez-vous que les conditions suivantes sont remplies :
- Vous avez installé Red Hat Advanced Cluster Management (RHACM) sur un cluster OpenShift Container Platform.
- Chaque cluster OpenShift géré à un seul nœud dispose de disques dédiés qui sont utilisés pour provisionner le stockage.
Avant de déployer le stockage LVM sur des clusters OpenShift à nœud unique, soyez conscient des limitations suivantes :
-
Vous ne pouvez créer qu'une seule instance de la ressource personnalisée (CR)
LVMCluster
sur un cluster OpenShift Container Platform. -
Vous ne pouvez effectuer qu'une seule entrée
deviceClass
dans le CRLVMCluster
. -
Lorsqu'un dispositif est intégré dans le CR
LVMCluster
, il ne peut plus être supprimé.
4.12.3.1.2. Limites
Pour le déploiement d'OpenShift à nœud unique, le stockage LVM présente les limitations suivantes :
- La taille totale du stockage est limitée par la taille du thin pool sous-jacent du Logical Volume Manager (LVM) et par le facteur de surprovisionnement.
La taille du volume logique dépend de la taille de l'étendue physique (PE) et de l'étendue logique (LE).
- Il est possible de définir la taille des PE et LE lors de la création des dispositifs physiques et logiques.
- La taille par défaut des PE et LE est de 4 Mo.
- Si la taille du PE est augmentée, la taille maximale du LVM est déterminée par les limites du noyau et votre espace disque.
Architecture | RHEL 5 | RHEL 6 | RHEL 7 | RHEL 8 |
---|---|---|---|---|
32 bits | 16 TB | 16 TB | - | - |
64 bits | 8 EB [1] | 8 EB [1] 100 TB [2] | 8 EB [1] 500 TB [2] | 8 EB |
- Taille théorique.
- Taille testée.
Ressources supplémentaires
4.12.3.1.3. Installation du stockage LVM à l'aide de la console Web d'OpenShift Container Platform
Vous pouvez installer LVM Storage à l'aide de Red Hat OpenShift Container Platform OperatorHub.
Conditions préalables
- Vous avez accès au cluster OpenShift à nœud unique.
-
Vous utilisez un compte disposant des autorisations d'installation
cluster-admin
et Operator.
Procédure
- Connectez-vous à la console Web de OpenShift Container Platform.
-
Cliquez sur Operators
OperatorHub. -
Faites défiler ou tapez
LVM Storage
dans la boîte Filter by keyword pour trouver LVM Storage. - Cliquez sur Install.
Définissez les options suivantes sur la page Install Operator:
- Update Channel comme stable-4.12.
- Installation Mode comme A specific namespace on the cluster.
-
Installed Namespace comme Operator recommended namespace openshift-storage. Si l'espace de noms
openshift-storage
n'existe pas, il est créé lors de l'installation de l'opérateur. Approval Strategy comme Automatic ou Manual.
Si vous sélectionnez Automatic updates, l'Operator Lifecycle Manager (OLM) met automatiquement à jour l'instance en cours d'exécution de votre opérateur sans aucune intervention.
Si vous sélectionnez Manual updates, l'OLM crée une demande de mise à jour. En tant qu'administrateur de cluster, vous devez ensuite approuver manuellement cette demande de mise à jour pour que l'opérateur passe à une version plus récente.
- Cliquez sur Install.
Verification steps
- Vérifiez que LVM Storage affiche une coche verte, ce qui indique que l'installation a réussi.
4.12.3.1.4. Désinstallation du stockage LVM installé à l'aide de la console Web OpenShift
Vous pouvez désinstaller le stockage LVM à l'aide de la console Web de Red Hat OpenShift Container Platform.
Conditions préalables
- Vous avez supprimé toutes les applications sur les clusters qui utilisent le stockage provisionné par LVM Storage.
- Vous avez supprimé les réclamations de volumes persistants (PVC) et les volumes persistants (PV) provisionnés à l'aide de LVM Storage.
- Vous avez supprimé tous les instantanés de volume fournis par LVM Storage.
-
Vous avez vérifié qu'il n'existe aucune ressource de volume logique en utilisant la commande
oc get logicalvolume
. -
Vous avez accès au cluster OpenShift à nœud unique en utilisant un compte avec les permissions
cluster-admin
.
Procédure
-
À partir de la page Operators
Installed Operators, faites défiler jusqu'à LVM Storage ou tapez LVM Storage
dans Filter by name pour le trouver et cliquez dessus. - Cliquez sur l'onglet LVMCluster.
- Dans la partie droite de la page LVMCluster, sélectionnez Delete LVMCluster dans le menu déroulant Actions.
- Cliquez sur l'onglet Details.
- Dans la partie droite de la page Operator Details, sélectionnez Uninstall Operator dans le menu déroulant Actions.
- Sélectionnez Remove. LVM Storage cesse de fonctionner et est complètement supprimé.
4.12.3.1.5. Installation du stockage LVM à l'aide de RHACM
Le stockage LVM est déployé sur des clusters OpenShift à nœud unique à l'aide de Red Hat Advanced Cluster Management (RHACM). Vous créez un objet Policy
sur RHACM qui déploie et configure l'opérateur lorsqu'il est appliqué aux clusters gérés qui correspondent au sélecteur spécifié dans la ressource PlacementRule
. La politique est également appliquée aux clusters importés ultérieurement et qui satisfont à la règle de placement.
Conditions préalables
-
Accès au cluster RHACM à l'aide d'un compte disposant des autorisations d'installation
cluster-admin
et Operator. - Disques dédiés sur chaque cluster OpenShift à nœud unique à utiliser par le stockage LVM.
- Le cluster OpenShift à nœud unique doit être géré par RHACM, soit importé, soit créé.
Procédure
- Connectez-vous au CLI RHACM en utilisant vos identifiants OpenShift Container Platform.
Créez un espace de noms dans lequel vous créerez des politiques.
# oc create ns lvms-policy-ns
Pour créer une politique, enregistrez le fichier YAML suivant dans un fichier portant un nom tel que
policy-lvms-operator.yaml
:apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-install-lvms spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: 1 matchExpressions: - key: mykey operator: In values: - myvalue --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-install-lvms placementRef: apiGroup: apps.open-cluster-management.io kind: PlacementRule name: placement-install-lvms subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: install-lvms --- apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: annotations: policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration policy.open-cluster-management.io/standards: NIST SP 800-53 name: install-lvms spec: disabled: false remediationAction: enforce policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: install-lvms spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" pod-security.kubernetes.io/enforce: privileged pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/warn: privileged name: openshift-storage - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-storage-operatorgroup namespace: openshift-storage spec: targetNamespaces: - openshift-storage - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: lvms namespace: openshift-storage spec: installPlanApproval: Automatic name: lvms-operator source: redhat-operators sourceNamespace: openshift-marketplace remediationAction: enforce severity: low - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: lvms spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: lvm.topolvm.io/v1alpha1 kind: LVMCluster metadata: name: my-lvmcluster namespace: openshift-storage spec: storage: deviceClasses: - name: vg1 deviceSelector: 2 paths: - /dev/disk/by-path/pci-0000:87:00.0-nvme-1 - /dev/disk/by-path/pci-0000:88:00.0-nvme-1 thinPoolConfig: name: thin-pool-1 sizePercent: 90 overprovisionRatio: 10 nodeSelector: 3 nodeSelectorTerms: - matchExpressions: - key: app operator: In values: - test1 remediationAction: enforce severity: low
- 1
- Remplacez la clé et la valeur dans
PlacementRule.spec.clusterSelector
pour correspondre aux étiquettes définies sur les clusters OpenShift à nœud unique sur lesquels vous souhaitez installer LVM Storage. - 2
- Pour contrôler ou restreindre le groupe de volumes à vos disques préférés, vous pouvez spécifier manuellement les chemins d'accès locaux des disques dans la section
deviceSelector
du fichier YAMLLVMCluster
. - 3
- Pour ajouter un filtre de nœuds, qui est un sous-ensemble de nœuds de travail supplémentaires, spécifiez le filtre requis dans la section
nodeSelector
. LVM Storage détecte et utilise les nœuds de travail supplémentaires lorsqu'ils apparaissent.
ImportantCette correspondance de filtre de nœud
nodeSelector
n'est pas la même que la correspondance d'étiquette de pod.Créez la politique dans l'espace de noms en exécutant la commande suivante :
# oc create -f policy-lvms-operator.yaml -n lvms-policy-ns 1
- 1
- L'adresse
policy-lvms-operator.yaml
est le nom du fichier dans lequel la politique est enregistrée.
Cela crée un objet
Policy
, un objetPlacementRule
et un objetPlacementBinding
dans l'espace de nomslvms-policy-ns
. La politique crée une ressourceNamespace
,OperatorGroup
,Subscription
, etLVMCluster
sur les clusters qui correspondent à la règle de placement. Cela déploie l'Opérateur sur les clusters OpenShift à nœud unique qui correspondent aux critères de sélection et le configure pour mettre en place les ressources requises pour provisionner le stockage. L'opérateur utilise tous les disques spécifiés dans le CRLVMCluster
. Si aucun disque n'est spécifié, l'opérateur utilise tous les disques inutilisés sur le nœud unique OpenShift.ImportantUne fois qu'un dispositif a été ajouté au site
LVMCluster
, il ne peut plus être supprimé.
4.12.3.1.6. Désinstallation du stockage LVM installé à l'aide de RHACM
Pour désinstaller le stockage LVM que vous avez installé à l'aide de RHACM, vous devez supprimer la stratégie RHACM que vous avez créée pour déployer et configurer l'opérateur.
Lorsque vous supprimez la stratégie RHACM, les ressources créées par cette stratégie ne sont pas supprimées. Vous devez créer d'autres politiques pour supprimer les ressources.
Comme les ressources créées ne sont pas supprimées lorsque vous supprimez la politique, vous devez effectuer les étapes suivantes :
- Supprimez toutes les réclamations de volumes persistants (PVC) et les instantanés de volumes fournis par LVM Storage.
-
Supprimez les ressources
LVMCluster
pour nettoyer les ressources du Logical Volume Manager créées sur les disques. - Créer une politique supplémentaire pour désinstaller l'opérateur.
Conditions préalables
Assurez-vous que les éléments suivants sont supprimés avant de supprimer la politique :
- Toutes les applications sur les clusters gérés qui utilisent le stockage provisionné par LVM Storage.
- PVC et volumes persistants (PV) provisionnés à l'aide de LVM Storage.
- Tous les instantanés de volume fournis par LVM Storage.
-
Assurez-vous que vous avez accès au cluster RHACM en utilisant un compte avec un rôle
cluster-admin
.
Procédure
Dans le CLI OpenShift (
oc
), supprimez la politique RHACM que vous avez créée pour déployer et configurer le stockage LVM sur le cluster hub en utilisant la commande suivante :# oc delete -f policy-lvms-operator.yaml -n lvms-policy-ns 1
- 1
- Le site
policy-lvms-operator.yaml
est le nom du fichier dans lequel la politique a été enregistrée.
Pour créer une politique de suppression de la ressource
LVMCluster
, enregistrez le fichier YAML suivant dans un fichier portant un nom tel quelvms-remove-policy.yaml
. Cela permet à l'opérateur de nettoyer toutes les ressources Logical Volume Manager qu'il a créées sur le cluster.apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-lvmcluster-delete annotations: policy.open-cluster-management.io/standards: NIST SP 800-53 policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration spec: remediationAction: enforce disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-lvmcluster-removal spec: remediationAction: enforce 1 severity: low object-templates: - complianceType: mustnothave objectDefinition: kind: LVMCluster apiVersion: lvm.topolvm.io/v1alpha1 metadata: name: my-lvmcluster namespace: openshift-storage 2 --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-lvmcluster-delete placementRef: apiGroup: apps.open-cluster-management.io kind: PlacementRule name: placement-policy-lvmcluster-delete subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: policy-lvmcluster-delete --- apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-policy-lvmcluster-delete spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: matchExpressions: - key: mykey operator: In values: - myvalue
-
Définissez la valeur du champ
PlacementRule.spec.clusterSelector
pour sélectionner les clusters à partir desquels désinstaller le stockage LVM. Créez la politique en exécutant la commande suivante :
# oc create -f lvms-remove-policy.yaml -n lvms-policy-ns
Pour créer une politique permettant de vérifier si le CR
LVMCluster
a été supprimé, enregistrez le fichier YAML suivant dans un fichier portant un nom tel quecheck-lvms-remove-policy.yaml
:apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-lvmcluster-inform annotations: policy.open-cluster-management.io/standards: NIST SP 800-53 policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration spec: remediationAction: inform disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-lvmcluster-removal-inform spec: remediationAction: inform 1 severity: low object-templates: - complianceType: mustnothave objectDefinition: kind: LVMCluster apiVersion: lvm.topolvm.io/v1alpha1 metadata: name: my-lvmcluster namespace: openshift-storage 2 --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-lvmcluster-check placementRef: apiGroup: apps.open-cluster-management.io kind: PlacementRule name: placement-policy-lvmcluster-check subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: policy-lvmcluster-inform --- apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-policy-lvmcluster-check spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: matchExpressions: - key: mykey operator: In values: - myvalue
Créez la politique en exécutant la commande suivante :
# oc create -f check-lvms-remove-policy.yaml -n lvms-policy-ns
Vérifiez l'état de la politique en exécutant la commande suivante :
# oc get policy -n lvms-policy-ns
Exemple de sortie
NAME REMEDIATION ACTION COMPLIANCE STATE AGE policy-lvmcluster-delete enforce Compliant 15m policy-lvmcluster-inform inform Compliant 15m
Une fois que les deux politiques sont conformes, enregistrez le YAML suivant dans un fichier portant un nom tel que
lvms-uninstall-policy.yaml
pour créer une politique de désinstallation du stockage LVM.apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-uninstall-lvms spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: matchExpressions: - key: mykey operator: In values: - myvalue --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-uninstall-lvms placementRef: apiGroup: apps.open-cluster-management.io kind: PlacementRule name: placement-uninstall-lvms subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: uninstall-lvms --- apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: annotations: policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration policy.open-cluster-management.io/standards: NIST SP 800-53 name: uninstall-lvms spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: uninstall-lvms spec: object-templates: - complianceType: mustnothave objectDefinition: apiVersion: v1 kind: Namespace metadata: name: openshift-storage - complianceType: mustnothave objectDefinition: apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-storage-operatorgroup namespace: openshift-storage spec: targetNamespaces: - openshift-storage - complianceType: mustnothave objectDefinition: apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: lvms-operator namespace: openshift-storage remediationAction: enforce severity: low - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-remove-lvms-crds spec: object-templates: - complianceType: mustnothave objectDefinition: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: logicalvolumes.topolvm.io - complianceType: mustnothave objectDefinition: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: lvmclusters.lvm.topolvm.io - complianceType: mustnothave objectDefinition: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: lvmvolumegroupnodestatuses.lvm.topolvm.io - complianceType: mustnothave objectDefinition: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: lvmvolumegroups.lvm.topolvm.io remediationAction: enforce severity: high
Créez la politique en exécutant la commande suivante :
# oc create -f lvms-uninstall-policy.yaml -ns lvms-policy-ns
Ressources supplémentaires
4.12.3.2. Création d'un cluster de Logical Volume Manager
Vous pouvez créer un cluster de Logical Volume Manager après avoir installé LVM Storage.
OpenShift Container Platform prend en charge des nœuds de travail supplémentaires pour les clusters OpenShift à nœud unique sur une infrastructure bare-metal fournie par l'utilisateur. LVM Storage détecte et utilise les nœuds de travail supplémentaires lorsqu'ils apparaissent. Si vous avez besoin de définir un filtre de nœuds pour les nœuds de travail supplémentaires, vous pouvez utiliser la vue YAML lors de la création du cluster.
Cette correspondance de filtre de nœud n'est pas la même que la correspondance d'étiquette de pod.
Conditions préalables
- Vous avez installé LVM Storage à partir de l'OperatorHub.
Procédure
Dans la console Web de OpenShift Container Platform, cliquez sur Operators
Installed Operators pour afficher tous les opérateurs installés. Assurez-vous que le site Project sélectionné est
openshift-storage
.- Cliquez sur LVM Storage, puis sur Create LVMCluster sous LVMCluster.
- Dans la page Create LVMCluster, sélectionnez Form view ou YAML view.
- Entrez un nom pour le cluster.
- Cliquez sur Create.
Facultatif : Pour ajouter un filtre de nœud, cliquez sur YAML view et spécifiez le filtre dans la section
nodeSelector
:apiVersion: lvm.topolvm.io/v1alpha1 kind: LVMCluster metadata: name: my-lvmcluster spec: storage: deviceClasses: - name: vg1 thinPoolConfig: name: thin-pool-1 sizePercent: 90 overprovisionRatio: 10 nodeSelector: nodeSelectorTerms: - matchExpressions: - key: app operator: In Values: - test1
Facultatif : Pour modifier le chemin d'accès local des disques, cliquez sur YAML view et indiquez le chemin d'accès dans la section
deviceSelector
:spec: storage: deviceClasses: - name: vg1 deviceSelector: paths: - /dev/disk/by-path/pci-0000:87:00.0-nvme-1 - /dev/disk/by-path/pci-0000:88:00.0-nvme-1 thinPoolConfig: name: thin-pool-1 sizePercent: 90 overprovisionRatio: 10
Étapes de la vérification
-
Cliquez sur Storage
Storage Classes dans le volet gauche de la console Web OpenShift Container Platform. -
Vérifiez que la classe de stockage
lvms-<device-class-name>
est créée avec la création deLVMCluster
. Par défaut,vg1
est la classe de stockagedevice-class-name
.
Ressources supplémentaires
4.12.3.3. Provisionnement du stockage à l'aide de LVM Storage
Vous pouvez provisionner des réclamations de volumes persistants (PVC) en utilisant la classe de stockage créée lors de l'installation de l'Opérateur. Vous pouvez provisionner des PVC de blocs et de fichiers, mais le stockage n'est alloué que lorsqu'un pod utilisant le PVC est créé.
LVM Storage provisionne les PVC par unités de 1 GiB. L'espace de stockage demandé est arrondi au gigaoctet le plus proche.
Procédure
Identifiez le site
StorageClass
qui est créé lorsque le stockage LVM est déployé.Le nom
StorageClass
est au formatlvms-<device-class-name>
.device-class-name
est le nom de la classe d'appareil que vous avez fourni dansLVMCluster
dePolicy
YAML. Par exemple, si le sitedeviceClass
s'appellevg1
, le nomstorageClass
estlvms-vg1
.Le site
volumeBindingMode
de la classe de stockage est défini surWaitForFirstConsumer
.Pour créer un PVC dans lequel l'application a besoin de stockage, enregistrez le fichier YAML suivant dans un fichier portant un nom tel que
pvc.yaml
.Exemple de YAML pour créer un PVC
# block pvc apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lvm-block-1 namespace: default spec: accessModes: - ReadWriteOnce volumeMode: Block resources: requests: storage: 10Gi storageClassName: lvms-vg1 --- # file pvc apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lvm-file-1 namespace: default spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 10Gi storageClassName: lvms-vg1
Créez le PVC en exécutant la commande suivante :
# oc create -f pvc.yaml -ns <application_namespace>
Les PVC créés restent à l'état
pending
jusqu'à ce que vous déployiez les pods qui les utilisent.
4.12.3.4. Surveillance du stockage LVM
Lorsque le stockage LVM est installé à l'aide de la console Web OpenShift Container Platform, vous pouvez surveiller le cluster en utilisant le tableau de bord Block and File dans la console par défaut. Cependant, lorsque vous utilisez RHACM pour installer le stockage LVM, vous devez configurer RHACM Observability pour surveiller tous les clusters OpenShift à nœud unique à partir d'un seul endroit.
4.12.3.4.1. Metrics
Vous pouvez surveiller le stockage LVM en consultant les métriques exportées par l'opérateur sur les tableaux de bord RHACM et les alertes qui sont déclenchées.
Ajouter les métriques
topolvm
suivantes à la listeallow
:topolvm_thinpool_data_percent topolvm_thinpool_metadata_percent topolvm_thinpool_size_bytes
Les mesures sont mises à jour toutes les 10 minutes ou lorsqu'il y a un changement dans le thin pool, comme la création d'un nouveau volume logique.
4.12.3.4.2. Alertes
Lorsque le thin pool et le groupe de volumes sont remplis, les opérations ultérieures échouent et peuvent entraîner une perte de données. LVM Storage envoie les alertes suivantes sur l'utilisation du thin pool et du groupe de volumes lorsque l'utilisation dépasse une certaine valeur :
Alertes pour le cluster Logical Volume Manager dans RHACM
Alerte | Description |
---|---|
| Cette alerte est déclenchée lorsque l'utilisation du groupe de volumes et du thin pool dépasse 75 % sur les nœuds. La suppression de données ou l'extension du groupe de volumes est nécessaire. |
|
Cette alerte est déclenchée lorsque l'utilisation du groupe de volumes et du thin pool dépasse 85 % sur les nœuds. |
| Cette alerte est déclenchée lorsque l'utilisation des données du thin pool dans le groupe de volumes dépasse 75 % sur les nœuds. La suppression de données ou l'extension du thin pool est nécessaire. |
| Cette alerte est déclenchée lorsque l'utilisation des données du thin pool dans le groupe de volumes dépasse 85 % sur les nœuds. La suppression de données ou l'extension du thin pool est nécessaire. |
| Cette alerte est déclenchée lorsque l'utilisation des métadonnées du thin pool dans le groupe de volumes dépasse 75 % sur les nœuds. La suppression des données ou l'extension du thin pool est nécessaire. |
| Cette alerte est déclenchée lorsque l'utilisation des métadonnées du thin pool dans le groupe de volumes dépasse 85 % sur les nœuds. La suppression de données ou l'extension du thin pool est nécessaire. |
Ressources supplémentaires
4.12.3.5. Mise à l'échelle du stockage des clusters OpenShift à nœud unique
OpenShift Container Platform prend en charge des nœuds de travail supplémentaires pour les clusters OpenShift à nœud unique sur une infrastructure bare-metal fournie par l'utilisateur. LVM Storage détecte et utilise les nouveaux nœuds de travail supplémentaires lorsqu'ils apparaissent.
Ressources supplémentaires
4.12.3.5.1. Augmenter le stockage en ajoutant de la capacité à votre cluster OpenShift à nœud unique
Pour faire évoluer la capacité de stockage de vos nœuds de travail configurés sur un cluster OpenShift à nœud unique, vous pouvez augmenter la capacité en ajoutant des disques.
Conditions préalables
- Vous disposez de disques supplémentaires inutilisés sur chaque cluster OpenShift à nœud unique à utiliser par LVM Storage.
Procédure
- Connectez-vous à la console OpenShift Container Platform du cluster OpenShift à nœud unique.
-
À partir de la page Operators
Installed Operators, cliquez sur LVM Storage Operator dans l'espace de noms openshift-storage
. -
Cliquez sur l'onglet LVMCluster pour afficher la liste des
LVMCluster
CR créés sur le cluster. - Sélectionnez Edit LVMCluster dans le menu déroulant Actions.
- Cliquez sur l'onglet YAML.
Modifiez le fichier YAML de
LVMCluster
CR pour ajouter le nouveau chemin d'accès au périphérique dans la sectiondeviceSelector
:NoteSi le champ
deviceSelector
n'est pas inclus lors de la création deLVMCluster
, il n'est pas possible d'ajouter la sectiondeviceSelector
au CR. Vous devez supprimer le champLVMCluster
et créer un nouveau CR.apiVersion: lvm.topolvm.io/v1alpha1 kind: LVMCluster metadata: name: my-lvmcluster spec: storage: deviceClasses: - name: vg1 deviceSelector: paths: - /dev/disk/by-path/pci-0000:87:00.0-nvme-1 1 - /dev/disk/by-path/pci-0000:88:00.0-nvme-1 - /dev/disk/by-path/pci-0000:89:00.0-nvme-1 2 thinPoolConfig: name: thin-pool-1 sizePercent: 90 overprovisionRatio: 10
Ressources supplémentaires
4.12.3.5.2. Augmenter le stockage en ajoutant de la capacité à votre cluster OpenShift à nœud unique à l'aide de RHACM
Vous pouvez faire évoluer la capacité de stockage de vos nœuds de travail configurés sur un cluster OpenShift à nœud unique à l'aide de RHACM.
Conditions préalables
-
Vous avez accès au cluster RHACM en utilisant un compte avec les privilèges
cluster-admin
. - Vous disposez de disques supplémentaires inutilisés sur chaque cluster OpenShift à nœud unique à utiliser par LVM Storage.
Procédure
- Connectez-vous au CLI RHACM en utilisant vos identifiants OpenShift Container Platform.
- Recherchez le disque que vous souhaitez ajouter. Le disque à ajouter doit correspondre au nom de périphérique et au chemin d'accès des disques existants.
Pour ajouter de la capacité au cluster OpenShift à nœud unique, modifiez la section
deviceSelector
de la politique YAML existante, par exemple,policy-lvms-operator.yaml
.NoteSi le champ
deviceSelector
n'est pas inclus lors de la création deLVMCluster
, il n'est pas possible d'ajouter la sectiondeviceSelector
au CR. Vous devez supprimer la sectionLVMCluster
et la recréer à partir du nouveau CR.apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-install-lvms spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: matchExpressions: - key: mykey operator: In values: - myvalue --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-install-lvms placementRef: apiGroup: apps.open-cluster-management.io kind: PlacementRule name: placement-install-lvms subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: install-lvms --- apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: annotations: policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration policy.open-cluster-management.io/standards: NIST SP 800-53 name: install-lvms spec: disabled: false remediationAction: enforce policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: install-lvms spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" pod-security.kubernetes.io/enforce: privileged pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/warn: privileged name: openshift-storage - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-storage-operatorgroup namespace: openshift-storage spec: targetNamespaces: - openshift-storage - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: lvms namespace: openshift-storage spec: installPlanApproval: Automatic name: lvms-operator source: redhat-operators sourceNamespace: openshift-marketplace remediationAction: enforce severity: low - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: lvms spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: lvm.topolvm.io/v1alpha1 kind: LVMCluster metadata: name: my-lvmcluster namespace: openshift-storage spec: storage: deviceClasses: - name: vg1 deviceSelector: paths: - /dev/disk/by-path/pci-0000:87:00.0-nvme-1 - /dev/disk/by-path/pci-0000:88:00.0-nvme-1 - /dev/disk/by-path/pci-0000:89:00.0-nvme-1 # new disk is added thinPoolConfig: name: thin-pool-1 sizePercent: 90 overprovisionRatio: 10 nodeSelector: nodeSelectorTerms: - matchExpressions: - key: app operator: In values: - test1 remediationAction: enforce severity: low
Modifiez la politique en exécutant la commande suivante :
# oc edit -f policy-lvms-operator.yaml -ns lvms-policy-ns 1
- 1
policy-lvms-operator.yaml
est le nom de la politique existante.
Cette opération utilise le nouveau disque spécifié dans le CR
LVMCluster
pour approvisionner le stockage.
4.12.3.5.3. Expansion des PVC
Pour tirer parti du nouveau stockage après l'ajout de capacité supplémentaire, vous pouvez étendre les réclamations de volumes persistants (PVC) existantes avec le stockage LVM.
Conditions préalables
- Le provisionnement dynamique est utilisé.
-
L'objet contrôlant
StorageClass
a pour valeurallowVolumeExpansion
et pour valeurtrue
.
Procédure
Modifiez le champ
.spec.resources.requests.storage
de la ressource PVC souhaitée en fonction de la nouvelle taille en exécutant la commande suivante :oc patch <pvc_name> -n <application_namespace> -p '{ "spec" : { \N- "resources\N" : { \N- "requests\N" : { \N- "storage\N" : \N- "<desired_size>\N" }}}}'
-
Surveillez le champ
status.conditions
du PVC pour voir si le redimensionnement est terminé. OpenShift Container Platform ajoute la conditionResizing
au PVC pendant l'expansion, qui est supprimée une fois l'expansion terminée.
4.12.3.6. Mise à jour du stockage LVM sur les clusters OpenShift à nœud unique
Actuellement, il n'est pas possible de mettre à niveau OpenShift Data Foundation Logical Volume Manager Operator 4.11 vers LVM Storage 4.12 sur les clusters OpenShift à nœud unique.
Les données ne seront pas conservées pendant ce processus.
Procédure
- Sauvegardez toutes les données que vous souhaitez conserver sur les réclamations de volumes persistants (PVC).
- Supprimer tous les PVC provisionnés par l'opérateur du gestionnaire de volume logique d'OpenShift Data Foundation et leurs pods.
- Réinstaller le stockage LVM sur OpenShift Container Platform 4.12.
- Recréer les charges de travail.
- Copiez les données de sauvegarde sur les PVC créés après la mise à niveau vers la version 4.12.
4.12.3.7. Instantanés de volume pour OpenShift à nœud unique
Vous pouvez prendre des instantanés de volumes persistants (PV) provisionnés par le stockage LVM. Vous pouvez également créer des instantanés de volume des volumes clonés. Les instantanés de volume vous permettent d'effectuer les opérations suivantes :
Sauvegardez les données de votre application.
ImportantLes instantanés de volume sont situés sur les mêmes périphériques que les données d'origine. Pour utiliser les instantanés de volume comme sauvegardes, vous devez déplacer les instantanés vers un emplacement sécurisé. Vous pouvez utiliser les solutions de sauvegarde et de restauration d'OpenShift API for Data Protection.
- Revenir à l'état dans lequel l'instantané du volume a été pris.
Ressources supplémentaires
4.12.3.7.1. Création d'instantanés de volume dans OpenShift à nœud unique
Vous pouvez créer des instantanés de volume en fonction de la capacité disponible du thin pool et des limites de surprovisionnement. LVM Storage crée un site VolumeSnapshotClass
avec le nom lvms-<deviceclass-name>
.
Conditions préalables
-
Vous vous êtes assuré que la revendication de volume persistant (PVC) est dans l'état
Bound
. Cela est nécessaire pour obtenir un instantané cohérent. - Vous avez arrêté toutes les entrées/sorties vers le PVC avant de prendre l'instantané.
Procédure
-
Connectez-vous à l'OpenShift à nœud unique pour lequel vous devez exécuter la commande
oc
. Enregistrez le fichier YAML suivant dans un fichier portant un nom tel que
lvms-vol-snapshot.yaml
.Exemple de YAML pour créer un instantané de volume
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: lvm-block-1-snap spec: volumeSnapshotClassName: lvms-vg1 source: persistentVolumeClaimName: lvm-block-1
Créez l'instantané en exécutant la commande suivante dans le même espace de noms que le PVC :
# oc create -f lvms-vol-snapshot.yaml
Une copie en lecture seule du PVC est créée sous la forme d'un instantané de volume.
4.12.3.7.2. Restauration d'instantanés de volumes dans OpenShift à nœud unique
Lorsque vous restaurez un instantané de volume, une nouvelle revendication de volume persistante (PVC) est créée. Le PVC restauré est indépendant de l'instantané de volume et du PVC source.
Conditions préalables
- La classe de stockage doit être la même que celle du PVC source.
La taille du PVC demandé doit être la même que celle du volume source de l'instantané.
ImportantUn instantané doit être restauré sur un PVC de la même taille que le volume source de l'instantané. Si un PVC plus grand est nécessaire, vous pouvez redimensionner le PVC après la restauration réussie de l'instantané.
Procédure
- Identifiez le nom de la classe de stockage du PVC source et le nom de l'instantané du volume.
Enregistrez le fichier YAML suivant dans un fichier portant un nom tel que
lvms-vol-restore.yaml
pour restaurer l'instantané.Exemple YAML pour restaurer un PVC.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: lvm-block-1-restore spec: accessModes: - ReadWriteOnce volumeMode: Block Resources: Requests: storage: 2Gi storageClassName: lvms-vg1 dataSource: name: lvm-block-1-snap kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
Créez la politique en exécutant la commande suivante dans le même espace de noms que l'instantané :
# oc create -f lvms-vol-restore.yaml
4.12.3.7.3. Suppression d'instantanés de volumes dans OpenShift à nœud unique
Vous pouvez supprimer les ressources des instantanés de volume et les réclamations de volumes persistants (PVC).
Procédure
Supprimez la ressource de cliché de volume en exécutant la commande suivante :
# oc delete volumesnapshot <volume_snapshot_name> -n <namespace>
NoteLorsque vous supprimez une revendication de volume persistant (PVC), les instantanés du PVC ne sont pas supprimés.
Pour supprimer l'instantané de volume restauré, supprimez le PVC créé pour restaurer l'instantané de volume en exécutant la commande suivante :
# oc delete pvc <pvc_name> -n <namespace>
4.12.3.8. Clonage de volume pour OpenShift à nœud unique
Un clone est une copie d'un volume de stockage existant qui peut être utilisé comme n'importe quel volume standard.
4.12.3.8.1. Créer des clones de volume dans OpenShift à nœud unique
Vous créez un clone d'un volume pour faire une copie ponctuelle des données. Une revendication de volume persistant (PVC) ne peut pas être clonée avec une taille différente.
Le PVC cloné a un accès en écriture.
Conditions préalables
-
Vous vous êtes assuré que le PVC est dans l'état
Bound
. Cela est nécessaire pour obtenir un instantané cohérent. -
Vous vous êtes assuré que le
StorageClass
est le même que celui du PVC source.
Procédure
- Identifier la classe de stockage du PVC source.
Pour créer un clone de volume, enregistrez le fichier YAML suivant dans un fichier portant un nom tel que
lvms-vol-clone.yaml
:Exemple de YAML pour cloner un volume
apiVersion: v1 kind: PersistentVolumeClaim Metadata: name: lvm-block-1-clone Spec: storageClassName: lvms-vg1 dataSource: name: lvm-block-1 kind: PersistentVolumeClaim accessModes: - ReadWriteOnce volumeMode: Block Resources: Requests: storage: 2Gi
Créez la stratégie dans le même espace de noms que le PVC source en exécutant la commande suivante :
# oc create -f lvms-vol-clone.yaml
4.12.3.8.2. Suppression des volumes clonés dans OpenShift à nœud unique
Vous pouvez supprimer les volumes clonés.
Procédure
Pour supprimer le volume cloné, supprimez le PVC cloné en exécutant la commande suivante :
# oc delete pvc <clone_pvc_name> -n <namespace>
4.12.3.9. Téléchargement de fichiers journaux et d'informations de diagnostic à l'aide de la collecte obligatoire
Lorsque LVM Storage n'est pas en mesure de résoudre automatiquement un problème, utilisez l'outil must-gather pour collecter les fichiers journaux et les informations de diagnostic afin que vous ou l'assistance Red Hat puissiez examiner le problème et déterminer une solution.
Exécutez la commande must-gather à partir du client connecté au cluster de stockage LVM en exécutant la commande suivante :
oc adm must-gather --image=registry.redhat.io/lvms4/lvms-must-gather-rhel8:v4.12 --dest-dir=<directory-name>
Ressources supplémentaires
4.12.3.10. Fichier YAML de référence du stockage LVM
L'exemple de ressource personnalisée (CR) LVMCluster
décrit tous les champs du fichier YAML.
Exemple LVMCluster CR
apiVersion: lvm.topolvm.io/v1alpha1 kind: LVMCluster metadata: name: my-lvmcluster spec: tolerations: - effect: NoSchedule key: xyz operator: Equal value: "true" storage: deviceClasses: 1 - name: vg1 2 nodeSelector: 3 nodeSelectorTerms: 4 - matchExpressions: - key: mykey operator: In values: - ssd deviceSelector: 5 paths: - /dev/disk/by-path/pci-0000:87:00.0-nvme-1 - /dev/disk/by-path/pci-0000:88:00.0-nvme-1 - /dev/disk/by-path/pci-0000:89:00.0-nvme-1 thinPoolConfig: 6 name: thin-pool-1 7 sizePercent: 90 8 overprovisionRatio: 10 9 status: deviceClassStatuses: 10 - name: vg1 nodeStatus: 11 - devices: 12 - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme2n1 node: my-node.example.com 13 status: Ready 14 ready: true 15 state: Ready 16
- 1
- Les groupes de volumes LVM à créer sur le cluster. Actuellement, une seule adresse
deviceClass
est prise en charge. - 2
- Le nom du groupe de volumes LVM à créer sur les nœuds.
- 3
- Les nœuds sur lesquels créer le groupe de volumes LVM. Si le champ est vide, tous les nœuds sont pris en compte.
- 4
- Liste des exigences relatives aux sélecteurs de nœuds.
- 5
- Liste des chemins d'accès aux périphériques utilisés pour créer le groupe de volumes LVM. Si ce champ est vide, tous les disques inutilisés du nœud seront utilisés.
- 6
- La configuration du thin pool LVM.
- 7
- Le nom du thin pool à créer dans le groupe de volumes LVM.
- 8
- Le pourcentage d'espace restant dans le groupe de volumes LVM qui doit être utilisé pour créer le thin pool.
- 9
- Le facteur par lequel le stockage supplémentaire peut être provisionné par rapport au stockage disponible dans le thin pool.
- 10
- Le statut du site
deviceClass
. - 11
- État du groupe de volumes LVM sur chaque nœud.
- 12
- Liste des périphériques utilisés pour créer le groupe de volumes LVM.
- 13
- Le nœud sur lequel le site
deviceClass
a été créé. - 14
- État du groupe de volumes LVM sur le nœud.
- 15
- Ce champ est obsolète.
- 16
- Le statut du site
LVMCluster
.