Arbeiten Sie mit Snapshots
Kubernetes VolumeSnapshots (Volume Snapshot) von persistenten Volumes (PVS) können erstellt werden, um zeitpunktgenaue Kopien von Astra Trident Volumes zu erhalten. Darüber hinaus können Sie aus einem vorhandenen Volume-Snapshot ein neues Volume, auch als „Clone“ bekannt, erstellen. Volume Snapshot wird von unterstützt ontap-nas, ontap-nas-flexgroup, ontap-san, ontap-san-economy, solidfire-san, gcp-cvs, und azure-netapp-files Treiber.
Sie müssen über einen externen Snapshot-Controller und benutzerdefinierte Ressourcen-Definitionen (CRDs) verfügen. Dies ist die Aufgabe des Kubernetes Orchestrator (z. B. Kubeadm, GKE, OpenShift).
Wenn die Kubernetes-Distribution den Snapshot-Controller und die CRDs nicht enthält, lesen Sie Bereitstellung eines Volume Snapshot Controllers.
|
|
Erstellen Sie keinen Snapshot Controller, wenn Sie On-Demand Volume Snapshots in einer GKE-Umgebung erstellen. GKE verwendet einen integrierten, versteckten Snapshot-Controller. |
Schritt 1: Erstellen Sie einen VolumeSnapshotClass
Dieses Beispiel erstellt eine Volume-Snapshot-Klasse.
cat snap-sc.yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-snapclass driver: csi.trident.netapp.io deletionPolicy: Delete
Der driver Verweist auf den Astra Trident CSI-Treiber. deletionPolicy Kann sein Delete Oder Retain. Wenn eingestellt auf Retain, Der zugrunde liegende physische Snapshot auf dem Storage-Cluster wird auch dann beibehalten, wenn der VolumeSnapshot Objekt wurde gelöscht.
Weitere Informationen finden Sie unter Link:../trident-reference/Objects.HTML#kubernetes-volumesnapshotclass-Objects[VolumeSnapshotClass].
Schritt 2: Erstellen Sie einen Schnappschuss eines vorhandenen PVC
In diesem Beispiel wird ein Snapshot eines vorhandenen PVC erstellt.
cat snap.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: pvc1-snap
spec:
volumeSnapshotClassName: csi-snapclass
source:
persistentVolumeClaimName: pvc1
In diesem Beispiel wird der Snapshot für ein PVC mit dem Namen erstellt pvc1 Der Name des Snapshots lautet pvc1-snap.
kubectl create -f snap.yaml volumesnapshot.snapshot.storage.k8s.io/pvc1-snap created kubectl get volumesnapshots NAME AGE pvc1-snap 50s
Dadurch wurde ein erstellt VolumeSnapshot Objekt: Ein VolumeSnapshot ist analog zu einem PVC und einem zugeordnet VolumeSnapshotContent Objekt, das den tatsächlichen Snapshot darstellt.
Es ist möglich, die zu identifizieren VolumeSnapshotContent Objekt für das pvc1-snap VolumeSnapshot wird beschrieben.
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
.
.
Der Snapshot Content Name Identifiziert das VolumeSnapshotContent-Objekt, das diesen Snapshot bereitstellt. Der Ready To Use Der Parameter gibt an, dass der Snapshot zum Erstellen einer neuen PVC verwendet werden kann.
Schritt 3: PVCs aus VolumeSnapshots erstellen
In diesem Beispiel wird eine PVC mithilfe eines Snapshots erstellt.
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 Zeigt an, dass das PVC mit dem Namen VolumeSnapshot erstellt werden muss pvc1-snap Als Quelle der Daten. Damit beauftragt Astra Trident, aus dem Snapshot ein PVC zu erstellen. Nachdem die PVC erstellt wurde, kann sie an einem Pod befestigt und wie jedes andere PVC verwendet werden.
|
|
Die PVC muss im gleichen Namespace wie ITS erstellt werden dataSource.
|
Löschen eines PV mit Snapshots
Wenn Sie ein persistentes Volume mit zugeordneten Snapshots löschen, wird das entsprechende Trident-Volume in einen „Löschzustand“ aktualisiert. Entfernen Sie die Volume Snapshots, um das Astra Trident Volume zu löschen.
Bereitstellung eines Volume Snapshot Controllers
Wenn Ihre Kubernetes-Distribution den Snapshot-Controller und CRDs nicht enthält, können Sie sie wie folgt bereitstellen.
-
Erstellen von Volume Snapshot-CRDs.
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
-
Erstellen Sie den Snapshot-Controller.
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
Öffnen Sie bei Bedarf deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yamlUnd AktualisierungnamespaceIn Ihren Namespace.
Stellen Sie Volume-Daten mithilfe von Snapshots wieder her
Das Snapshot-Verzeichnis ist standardmäßig ausgeblendet, um die maximale Kompatibilität von Volumes zu ermöglichen, die über bereitgestellt werden ontap-nas Und ontap-nas-economy Treiber. Aktivieren Sie die .snapshot Verzeichnis, um Daten von Snapshots direkt wiederherzustellen.
Verwenden Sie die ONTAP-CLI zur Wiederherstellung eines Volume-Snapshots, um einen in einem früheren Snapshot aufgezeichneten Zustand wiederherzustellen.
cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
|
|
Wenn Sie eine Snapshot-Kopie wiederherstellen, wird die vorhandene Volume-Konfiguration überschrieben. Änderungen an den Volume-Daten nach der Erstellung der Snapshot Kopie gehen verloren. |