Travailler avec des instantanés
Vous pouvez créer des copies Snapshot de volume Kubernetes VolumeSnapshot (copie de volume) de volumes persistants pour conserver des copies instantanées de volumes Trident. Vous pouvez également créer un nouveau volume, également appelé clone, à partir d'un snapshot de volume existant. Le snapshot de volume est pris en charge par ontap-nas
, ontap-nas-flexgroup
, ontap-san
, ontap-san-economy
, solidfire-san
, gcp-cvs
, et azure-netapp-files
pilotes.
Vous devez disposer d'un contrôleur de snapshot externe et de définitions de ressources personnalisées (CRD). Cela relève de la responsabilité de l'orchestrateur Kubernetes (par exemple : Kubeadm, GKE, OpenShift).
Si votre distribution Kubernetes n'inclut pas le contrôleur de snapshot et les CRD, reportez-vous à la Déploiement d'un contrôleur de snapshot de volume.
Ne créez pas de contrôleur de snapshot si vous créez des snapshots de volume à la demande dans un environnement GKE. GKE utilise un contrôleur de snapshot caché intégré. |
Étape 1 : créer un VolumeSnapshotClass
Cet exemple crée une classe de snapshot de volume.
cat snap-sc.yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-snapclass driver: csi.trident.netapp.io deletionPolicy: Delete
Le driver
Indique le conducteur CSI d'Astra Trident. deletionPolicy
peut être Delete
ou Retain
. Lorsqu'il est réglé sur Retain
, le snapshot physique sous-jacent sur le cluster de stockage est conservé même lorsque VolumeSnapshot
l'objet a été supprimé.
Pour plus d'informations, consultez le lien :../trident-Reference/objects.html#kubernetes-volumesnapshotclass-objects[VolumeSnapshotClass
].
Étape 2 : création d'un snapshot d'un volume persistant existant
Dans cet exemple, nous allons créer un snapshot d'un volume persistant existant.
cat snap.yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: pvc1-snap spec: volumeSnapshotClassName: csi-snapclass source: persistentVolumeClaimName: pvc1
Dans cet exemple, le snapshot est créé pour une demande de volume persistant nommée pvc1
et le nom du snapshot est défini sur pvc1-snap
.
kubectl create -f snap.yaml volumesnapshot.snapshot.storage.k8s.io/pvc1-snap created kubectl get volumesnapshots NAME AGE pvc1-snap 50s
Cela a créé un VolumeSnapshot
objet. Un instantané VolumeSnapshot est similaire à une demande de volume persistant et est associé à une VolumeSnapshotContent
objet qui représente le snapshot réel.
Il est possible d'identifier le VolumeSnapshotContent
objet pour le pvc1-snap
VolumeSnapshot en le décrivant.
kubectl describe volumesnapshots pvc1-snap Name: pvc1-snap Namespace: default . . . Spec: Snapshot Class Name: pvc1-snap Snapshot Content Name: snapcontent-e8d8a0ca-9826-11e9-9807-525400f3f660 Source: API Group: Kind: PersistentVolumeClaim Name: pvc1 Status: Creation Time: 2019-06-26T15:27:29Z Ready To Use: true Restore Size: 3Gi . .
Le Snapshot Content Name
Identifie l'objet VolumeSnapshotContent qui sert ce snapshot. Le Ready To Use
Paramètre indique que l'instantané peut être utilisé pour créer une nouvelle demande de volume persistant.
Étape 3 : création de demandes de volume persistant à partir de copies Snapshot VolumeCas
Dans cet exemple, vous créez une demande de volume persistant à l'aide d'un snapshot :
cat pvc-from-snap.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-from-snap spec: accessModes: - ReadWriteOnce storageClassName: golden resources: requests: storage: 3Gi dataSource: name: pvc1-snap kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
dataSource
La montre que la demande de volume persistant doit être créée à l'aide d'un Snapshot VolumeSnapshot nommé pvc1-snap
comme source des données. Cela demande à Astra Trident de créer un volume persistant à partir du snapshot. Une fois la demande de volume persistant créée, elle peut être connectée à un pod et utilisée comme n'importe quel autre PVC.
Lors de la suppression d'un volume persistant avec les snapshots associés, le volume Trident correspondant est mis à jour et passe à un état « Suppression ». Pour supprimer le volume Astra Trident, il est nécessaire de supprimer les snapshots du volume. |
Déploiement d'un contrôleur de snapshot de volume
Si votre distribution Kubernetes n'inclut pas le contrôleur de snapshot et les CRD, vous pouvez les déployer comme suit.
-
Création de CRD de snapshot de volume.
cat snapshot-setup.sh #!/bin/bash # Create volume snapshot CRDs kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
-
Créer le contrôleur snapshot dans l'espace de noms souhaité. Modifiez les manifestes YAML ci-dessous pour modifier l'espace de noms.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml