7.3. En utilisant des volumes pour persister les données des conteneurs
Les fichiers dans un conteneur sont éphémères. En tant que tel, lorsqu’un conteneur s’écrase ou s’arrête, les données sont perdues. Il est possible d’utiliser des volumes pour persister les données utilisées par les conteneurs dans un pod. Le volume est un répertoire, accessible aux Conteneurs dans un pod, où les données sont stockées pour la durée de vie de la gousse.
7.3.1. Comprendre les volumes Copier lienLien copié sur presse-papiers!
Les volumes sont des systèmes de fichiers montés disponibles pour les pods et leurs conteneurs qui peuvent être soutenus par un certain nombre de points de stockage locaux ou réseau attachés à l’hôte. Les conteneurs ne sont pas persistants par défaut; au redémarrage, leur contenu est effacé.
Afin de s’assurer que le système de fichiers sur le volume ne contient pas d’erreurs et, si des erreurs sont présentes, pour les réparer si possible, Red Hat OpenShift Service sur AWS invoque l’utilitaire fsck avant l’utilitaire de montage. Cela se produit lors de l’ajout d’un volume ou de la mise à jour d’un volume existant.
Le type de volume le plus simple est emptyDir, qui est un répertoire temporaire sur une seule machine. Les administrateurs peuvent également vous permettre de demander un volume persistant qui est automatiquement attaché à vos pods.
le stockage de volume videDir peut être limité par un quota basé sur le groupe FS du pod, si le paramètre FSGroup est activé par votre administrateur de cluster.
7.3.2. En travaillant avec les volumes à l’aide du service Red Hat OpenShift sur AWS CLI Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser le volume défini par commande CLI pour ajouter et supprimer des volumes et des montages de volume pour n’importe quel objet doté d’un modèle de pod comme des contrôleurs de réplication ou des configurations de déploiement. Il est également possible de répertorier les volumes dans les pods ou n’importe quel objet ayant un modèle de pod.
La commande oc set volume utilise la syntaxe générale suivante:
oc set volume <object_selection> <operation> <mandatory_parameters> <options>
$ oc set volume <object_selection> <operation> <mandatory_parameters> <options>
- Choix de l’objet
- Indiquez l’un des paramètres suivants pour le paramètre object_selection dans la commande oc set volume:
Syntaxe | Description | Exemple : |
---|---|---|
| Sélectionne <nom> du type <object_type>. |
|
| Sélectionne <nom> du type <object_type>. |
|
<Object_type>--selector=<object_label_selector> | Sélectionne les ressources de type <object_type> qui correspondaient au sélecteur d’étiquette donné. | déploiementConfig--selector="nom=registry" |
| Sélectionne toutes les ressources de type <object_type>. |
|
-F ou --filename=<file_name> | Le nom du fichier, le répertoire ou l’URL à utiliser pour modifier la ressource. |
|
- L’opération
- Indiquez --add ou --remove pour le paramètre d’opération dans la commande oc set volume.
- Les paramètres obligatoires
- Les paramètres obligatoires sont spécifiques à l’opération sélectionnée et sont discutés dans les sections suivantes.
- Les options
- Les options sont spécifiques à l’opération sélectionnée et sont discutées dans les sections ultérieures.
7.3.3. Liste des volumes et des montages de volume dans un pod Copier lienLien copié sur presse-papiers!
Liste des volumes et des montages de volume dans des pods ou des modèles de pod:
Procédure
Liste des volumes:
oc set volume <object_type>/<name> [options]
$ oc set volume <object_type>/<name> [options]
Liste des options prises en charge du volume:
L’option | Description | Défaut par défaut |
---|---|---|
| Le nom du volume. | |
| Choisissez les conteneurs par nom. Il peut également prendre wildcard '*' qui correspond à n’importe quel personnage. |
|
À titre d’exemple:
Liste de tous les volumes pour pod p1:
oc set volume pod/p1
$ oc set volume pod/p1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lister le volume v1 défini sur toutes les configurations de déploiement:
oc set volume dc --all --name=v1
$ oc set volume dc --all --name=v1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.4. Ajouter des volumes à un pod Copier lienLien copié sur presse-papiers!
Il est possible d’ajouter des volumes et des montures de volume à un pod.
Procédure
Ajouter un volume, une monture de volume, ou les deux aux modèles de pod:
oc set volume <object_type>/<name> --add [options]
$ oc set volume <object_type>/<name> --add [options]
L’option | Description | Défaut par défaut |
---|---|---|
| Le nom du volume. | Généré automatiquement, s’il n’est pas spécifié. |
| Le nom de la source du volume. Les valeurs prises en charge: emptyDir, hostPath, secret, configmap, persistantVolumeClaim ou projeté. |
|
| Choisissez les conteneurs par nom. Il peut également prendre wildcard '*' qui correspond à n’importe quel personnage. |
|
| Monter le chemin à l’intérieur des conteneurs sélectionnés. Il ne faut pas monter sur la racine du conteneur, /, ou tout 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 hôte /dev/pts. Il est sûr de monter l’hôte en utilisant /host. | |
| Chemin de l’hôte. Le paramètre obligatoire pour --type=hostPath. Il ne faut pas monter sur la racine du conteneur, /, ou tout 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 hôte /dev/pts. Il est sûr de monter l’hôte en utilisant /host. | |
| Le nom du secret. Le paramètre obligatoire pour --type=secret. | |
| Le nom de la configmap. Le paramètre obligatoire pour --type=configmap. | |
| Le nom de la revendication de volume persistant. Le paramètre obligatoire pour --type=persistentVolumeClaim. | |
| Détails de la source de volume en tant que chaîne JSON. Il est recommandé si la source de volume souhaitée n’est pas prise en charge par --type. | |
| Afficher les objets modifiés au lieu de les mettre à jour sur le serveur. Les valeurs prises en charge: json, yaml. | |
| Afficher les objets modifiés avec la version donnée. |
|
À titre d’exemple:
Ajouter un nouveau volume source videDir à l’objet DéploiementConfig du registre:
oc set volume dc/registry --add
$ oc set volume dc/registry --add
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AstuceAlternativement, vous pouvez appliquer le YAML suivant pour ajouter le volume:
Exemple 7.1. Exemple de configuration de déploiement avec un volume ajouté
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajoutez la source de volume videDir.
Ajouter le volume v1 avec secret secret1 pour le contrôleur de réplication r1 et monter à l’intérieur des conteneurs à /data:
oc set volume rc/r1 --add --name=v1 --type=secret --secret-name='secret1' --mount-path=/data
$ oc set volume rc/r1 --add --name=v1 --type=secret --secret-name='secret1' --mount-path=/data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AstuceAjouter le volume v1 persistant existant avec le nom de revendication pvc1 à la configuration de déploiement dc.json sur le disque, monter le volume sur le conteneur c1 à /data, et mettre à jour l’objet DeploymentConfig sur le serveur:
oc set volume -f dc.json --add --name=v1 --type=persistentVolumeClaim \ --claim-name=pvc1 --mount-path=/data --containers=c1
$ oc set volume -f dc.json --add --name=v1 --type=persistentVolumeClaim \ --claim-name=pvc1 --mount-path=/data --containers=c1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AstuceAlternativement, vous pouvez appliquer le YAML suivant pour ajouter le volume:
Ajouter un volume v1 basé sur le dépôt Git https://github.com/namespace1/project1 avec la révision 5125c45f9f563 pour tous les contrôleurs de réplication:
oc set volume rc --all --add --name=v1 \ --source='{"gitRepo": {
$ oc set volume rc --all --add --name=v1 \ --source='{"gitRepo": { "repository": "https://github.com/namespace1/project1", "revision": "5125c45f9f563" }}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.5. La mise à jour des volumes et des montages de volume dans un pod Copier lienLien copié sur presse-papiers!
Il est possible de modifier les volumes et les montages de volume dans un pod.
Procédure
La mise à jour des volumes existants en utilisant l’option --overwrite:
oc set volume <object_type>/<name> --add --overwrite [options]
$ oc set volume <object_type>/<name> --add --overwrite [options]
À titre d’exemple:
Afin de remplacer le volume v1 existant pour le contrôleur de réplication r1 par la revendication de volume persistante existante pvc1:
oc set volume rc/r1 --add --overwrite --name=v1 --type=persistentVolumeClaim --claim-name=pvc1
$ oc set volume rc/r1 --add --overwrite --name=v1 --type=persistentVolumeClaim --claim-name=pvc1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AstuceAlternativement, vous pouvez appliquer le YAML suivant pour remplacer le volume:
Exemple 7.4. Contrôleur de réplication d’échantillons avec revendication de volume persistante nommée pvc1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Définir la revendication de volume persistant à pvc1.
Changer le point de montage de l’objet D1 DeploymentConfig en /opt pour le volume v1:
oc set volume dc/d1 --add --overwrite --name=v1 --mount-path=/opt
$ oc set volume dc/d1 --add --overwrite --name=v1 --mount-path=/opt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AstuceAlternativement, vous pouvez appliquer le YAML suivant pour changer le point de montage:
Exemple 7.5. Exemple de configuration de déploiement avec le point de montage défini pour opter.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Définissez le point de montage sur /opt.
7.3.6. Enlever les volumes et les montages de volume d’une gousse Copier lienLien copié sur presse-papiers!
Il est possible d’enlever un support de volume ou de volume d’une gousse.
Procédure
Afin de supprimer un volume des modèles de pod:
oc set volume <object_type>/<name> --remove [options]
$ oc set volume <object_type>/<name> --remove [options]
L’option | Description | Défaut par défaut |
---|---|---|
| Le nom du volume. | |
| Choisissez les conteneurs par nom. Il peut également prendre wildcard '*' qui correspond à n’importe quel personnage. |
|
| Indiquez que vous souhaitez supprimer plusieurs volumes à la fois. | |
| Afficher les objets modifiés au lieu de les mettre à jour sur le serveur. Les valeurs prises en charge: json, yaml. | |
| Afficher les objets modifiés avec la version donnée. |
|
À titre d’exemple:
Afin de supprimer un volume v1 de l’objet DeploymentConfig d1:
oc set volume dc/d1 --remove --name=v1
$ oc set volume dc/d1 --remove --name=v1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Démonter le volume v1 du conteneur c1 pour l’objet DeploymentConfig d1 et supprimer le volume v1 s’il n’est pas référencé par des conteneurs sur d1:
oc set volume dc/d1 --remove --name=v1 --containers=c1
$ oc set volume dc/d1 --remove --name=v1 --containers=c1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow De supprimer tous les volumes pour le contrôleur de réplication r1:
oc set volume rc/r1 --remove --confirm
$ oc set volume rc/r1 --remove --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.7. Configuration des volumes pour plusieurs utilisations dans un pod Copier lienLien copié sur presse-papiers!
En utilisant la propriété VolumeMounts.subPath, vous pouvez configurer un volume pour partager un volume pour plusieurs utilisations en utilisant la propriété volumeMounts.subPath pour spécifier une valeur subPath à l’intérieur d’un volume au lieu de la racine du volume.
Il n’est pas possible d’ajouter un paramètre SubPath à une pod existante.
Procédure
Afin d’afficher la liste des fichiers dans le volume, exécutez la commande oc rsh:
oc rsh <pod>
$ oc rsh <pod>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
ls /path/to/volume/subpath/mount
sh-4.2$ ls /path/to/volume/subpath/mount example_file1 example_file2 example_file3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Indiquez le sous-Path:
Exemple Pod spec avec paramètre subPath
Copy to Clipboard Copied! Toggle word wrap Toggle overflow