Skip to main content
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Arbeiten mit Volumegruppen-Snapshots

Beitragende netapp-aruldeepa

Kubernetes-Volumegruppen-Snapshots von persistenten Volumes (PVs). NetApp Trident ermöglicht die Erstellung von Snapshots mehrerer Volumes (einer Gruppe von Volume-Snapshots). Dieser Volumegruppen-Snapshot stellt Kopien mehrerer Volumes dar, die zum gleichen Zeitpunkt erstellt wurden.

Hinweis VolumeGroupSnapshot ist eine Beta-Funktion in Kubernetes mit Beta-APIs. Für VolumeGroupSnapshot ist mindestens Kubernetes 1.32 erforderlich.

Erstellen von Volumegruppen-Snapshots

Die Snapshot-Funktion für Volumengruppen wird von den folgenden Speichertreibern unterstützt:

  • `ontap-san`Treiber - nur für die iSCSI- und FC-Protokolle, nicht für das NVMe/TCP-Protokoll.

  • ontap-san-economy - nur für das iSCSI-Protokoll.

  • ontap-nas

Hinweis Die Erstellung von Volume-Group-Snapshots wird für NetApp ASA r2- oder AFX-Speichersysteme nicht unterstützt.
Bevor Sie beginnen
  • Stellen Sie sicher, dass Ihre Kubernetes-Version K8s 1.32 oder höher ist.

  • Sie benötigen einen externen Snapshot-Controller und benutzerdefinierte Ressourcendefinitionen (CRDs), um mit Snapshots arbeiten zu können. Dies ist die Aufgabe des Kubernetes Orchestrator (z. B. Kubeadm, GKE, OpenShift).

    Wenn Ihre Kubernetes-Distribution den externen Snapshot-Controller und die CRDs nicht enthält, lesen Sie Stellen Sie einen Volume-Snapshot-Controller bereit .

    Hinweis Erstellen Sie keinen Snapshot-Controller, wenn Sie On-Demand-Volume-Gruppen-Snapshots in einer GKE-Umgebung erstellen. GKE verwendet einen integrierten, versteckten Snapshot-Controller.
  • Legen Sie im Snapshot-Controller-YAML Folgendes fest: CSIVolumeGroupSnapshot Setzen Sie das Feature Gate auf „true“, um sicherzustellen, dass der Volumegruppen-Snapshot aktiviert ist.

  • Erstellen Sie die erforderlichen Snapshot-Klassen für Volumegruppen, bevor Sie einen Snapshot für Volumegruppen erstellen.

  • Stellen Sie sicher, dass sich alle PVCs/Volumes auf derselben SVM befinden, um VolumeGroupSnapshot erstellen zu können.

Schritte
  • Erstellen Sie eine VolumeGroupSnapshotClass, bevor Sie einen VolumeGroupSnapshot erstellen. Weitere Informationen finden Sie unter "VolumeGroupSnapshotClass".

    apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshotClass
    metadata:
      name: csi-group-snap-class
      annotations:
        kubernetes.io/description: "Trident group snapshot class"
    driver: csi.trident.netapp.io
    deletionPolicy: Delete
  • Erstellen Sie PVCs mit den erforderlichen Bezeichnungen unter Verwendung vorhandener Speicherklassen oder fügen Sie diese Bezeichnungen zu vorhandenen PVCs hinzu.

    Das folgende Beispiel erstellt den PVC mit pvc1-group-snap als Datenquelle und Bezeichnung consistentGroupSnapshot: groupA . Definieren Sie den Label-Schlüssel und den Wert entsprechend Ihren Anforderungen.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc1-group-snap
  labels:
    consistentGroupSnapshot: groupA
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  storageClassName: sc1-1
  • Erstellen Sie einen VolumeGroupSnapshot mit demselben Label (consistentGroupSnapshot: groupA ) im PVC angegeben.

    In diesem Beispiel wird ein Snapshot einer Volume-Gruppe erstellt:

apiVersion: groupsnapshot.storage.k8s.io/v1beta1
kind: VolumeGroupSnapshot
metadata:
  name: "vgs1"
  namespace: trident
spec:
  volumeGroupSnapshotClassName: csi-group-snap-class
  source:
    selector:
      matchLabels:
        consistentGroupSnapshot: groupA

Wiederherstellen von Volumedaten mithilfe eines Gruppen-Snapshots

Sie können einzelne persistente Volumes mithilfe der einzelnen Snapshots wiederherstellen, die im Rahmen des Volume-Gruppen-Snapshots erstellt wurden. Der Volume-Gruppen-Snapshot kann nicht als Einheit wiederhergestellt werden.

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
Hinweis 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.

In-Place-Volume-Wiederherstellung aus einem Snapshot

Trident ermöglicht mithilfe des CR-Systems (TASR) eine schnelle Wiederherstellung von in-Place-Volumes aus einem Snapshot TridentActionSnapshotRestore. Dieser CR fungiert als eine zwingend notwendige Kubernetes-Aktion und bleibt nach Abschluss des Vorgangs nicht erhalten.

Weitere Informationen finden Sie unter "In-Place-Volume-Wiederherstellung aus einem Snapshot".

Löschen eines PV mit zugehörigen Gruppen-Snapshots

Beim Löschen eines Gruppenvolume-Snapshots:

  • Sie können VolumeGroupSnapshots als Ganzes löschen, nicht jedoch einzelne Snapshots in der Gruppe.

  • Wenn PersistentVolumes gelöscht werden, während ein Snapshot für dieses PersistentVolume vorhanden ist, versetzt Trident dieses Volume in den Status „Löschen“, da der Snapshot entfernt werden muss, bevor das Volume sicher entfernt werden kann.

  • Wenn ein Klon mithilfe eines gruppierten Snapshots erstellt wurde und die Gruppe anschließend gelöscht werden soll, beginnt ein Split-on-Clone-Vorgang und die Gruppe kann erst gelöscht werden, wenn die Aufteilung abgeschlossen ist.

Stellen Sie einen Volume-Snapshot-Controller bereit

Wenn Ihre Kubernetes-Distribution den Snapshot-Controller und CRDs nicht enthält, können Sie sie wie folgt bereitstellen.

Schritte
  1. 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-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotclasses.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotcontents.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshots.yaml
  2. Erstellen Sie den Snapshot-Controller.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
    Hinweis Öffnen Sie bei Bedarf deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml Und Aktualisierung namespace In Ihren Namespace.