5.5. Clonage du volume CSI
Le clonage de volume duplique un volume persistant existant pour aider à protéger contre la perte de données dans OpenShift Container Platform. Cette fonctionnalité n'est disponible qu'avec les pilotes CSI (Container Storage Interface) pris en charge. Vous devez vous familiariser avec les volumes persistants avant de provisionner un clone de volume CSI.
5.5.1. Vue d'ensemble du clonage de volumes CSI
Un clone de volume de l'interface de stockage de conteneurs (CSI) est un duplicata d'un volume persistant existant à un moment donné.
Le clonage de volume est similaire aux instantanés de volume, mais il est plus efficace. Par exemple, un administrateur de cluster peut dupliquer un volume de cluster en créant une autre instance du volume de cluster existant.
Le clonage crée une copie exacte du volume spécifié sur le périphérique dorsal, plutôt que de créer un nouveau volume vide. Après le provisionnement dynamique, vous pouvez utiliser un clone de volume comme vous le feriez avec n'importe quel volume standard.
Aucun nouvel objet API n'est nécessaire pour le clonage. Le champ dataSource
existant dans l'objet PersistentVolumeClaim
est étendu de manière à pouvoir accepter le nom d'un PersistentVolumeClaim existant dans le même espace de noms.
5.5.1.1. Limites du soutien
Par défaut, OpenShift Container Platform prend en charge le clonage de volume CSI avec ces limitations :
- La revendication de volume persistant (PVC) de destination doit exister dans le même espace de noms que le PVC source.
Le clonage est pris en charge avec une classe de stockage différente.
- Le volume de destination peut être le même pour une classe de stockage différente de celle de la source.
-
Vous pouvez utiliser la classe de stockage par défaut et omettre
storageClassName
dans le champspec
.
- La prise en charge n'est disponible que pour les pilotes CSI. In-tree et FlexVolumes ne sont pas pris en charge.
- Les pilotes CSI peuvent ne pas avoir implémenté la fonctionnalité de clonage de volume. Pour plus de détails, voir la documentation du pilote CSI.
5.5.2. Approvisionnement d'un clone de volume CSI
Lorsque vous créez un objet API de réclamation de volume persistant (PVC) cloné, vous déclenchez le provisionnement d'un clone de volume CSI. Le clone est pré-rempli avec le contenu d'un autre PVC, en respectant les mêmes règles que tout autre volume persistant. La seule exception est que vous devez ajouter une adresse dataSource
qui fait référence à un PVC existant dans le même espace de noms.
Conditions préalables
- Vous êtes connecté à un cluster OpenShift Container Platform en cours d'exécution.
- Votre PVC est créé à l'aide d'un pilote CSI qui prend en charge le clonage de volume.
- Votre back-end de stockage est configuré pour le provisionnement dynamique. La prise en charge du clonage n'est pas disponible pour les provisionneurs statiques.
Procédure
Pour cloner un PVC à partir d'un PVC existant :
Créer et sauvegarder un fichier avec l'objet
PersistentVolumeClaim
décrit par le YAML suivant :pvc-clone.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-1-clone namespace: mynamespace spec: storageClassName: csi-cloning 1 accessModes: - ReadWriteOnce resources: requests: storage: 5Gi dataSource: kind: PersistentVolumeClaim name: pvc-1
- 1
- Le nom de la classe de stockage qui fournit le back-end de stockage. La classe de stockage par défaut peut être utilisée et
storageClassName
peut être omis dans la spécification.
Créez l'objet que vous avez sauvegardé à l'étape précédente en exécutant la commande suivante :
$ oc create -f pvc-clone.yaml
Un nouveau PVC
pvc-1-clone
est créé.Vérifiez que le clone de volume a été créé et qu'il est prêt en exécutant la commande suivante :
$ oc get pvc pvc-1-clone
Le site
pvc-1-clone
indique qu'il s'agit deBound
.Vous êtes maintenant prêt à utiliser le nouveau PVC cloné pour configurer un pod.
Créer et enregistrer un fichier avec l'objet
Pod
décrit par le YAML. Par exemple :kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: myfrontend image: dockerfile/nginx volumeMounts: - mountPath: "/var/www/html" name: mypd volumes: - name: mypd persistentVolumeClaim: claimName: pvc-1-clone 1
- 1
- Le PVC cloné créé lors de l'opération de clonage du volume CSI.
L'objet
Pod
créé est maintenant prêt à consommer, cloner, snapshoter ou supprimer votre PVC cloné indépendamment de son PVCdataSource
d'origine.