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

Schützen Sie VMs in der Red Hat OpenShift-Virtualisierung mit Trident Volume Group Snapshots

Beitragende banum-netapp

Konfigurieren Sie Volume Group Snapshots, um VMs in Red Hat OpenShift Virtualization mit Trident 25.06 und NetApp ONTAP Speicher zu schützen. Dieses Verfahren umfasst die Installation von Trident mit iSCSI-Unterstützung, die Konfiguration von ONTAP -Backends und Speicherklassen, die Erstellung einer VM mit mehreren persistenten Festplatten und die Implementierung eines Volume-Gruppen-Snapshots, der sicherstellt, dass Snapshots aller VM-Festplatten gleichzeitig erfasst werden, um zuverlässige Wiederherstellungsvorgänge zu ermöglichen.

Volume Group Snapshots ist eine Kubernetes-Funktion, die Konsistenzprobleme beim Erstellen von Snapshots mehrerer PersistentVolumeClaims (PVCs) von Containern oder VMs behebt.

Mit dieser Funktion können Sie absturzkonsistente Snapshots mehrerer PVCs gleichzeitig erstellen. Diese Funktion ist in der Kubernetes-Version v1.32 eine Beta-Version. Trident unterstützt diese Beta-Funktion ab Trident -Version 25.06 (derzeit nur für das iSCSI-Protokoll).

Zur Unterstützung der Volume Group Snapshots-Funktion führt Kubernetes drei neue API-Objekte ein:

  • VolumeGroupSnapshotClass: Wird von Clusteradministratoren erstellt, um zu beschreiben, wie Snapshots von Volumegruppen erstellt werden sollen.

  • VolumeGroupSnapshot: Von Kubernetes-Benutzern angefordert, um einen Volume-Gruppen-Snapshot für mehrere PVCs zu erstellen.

  • VolumeGroupSnapshotContent: Erstellt vom Snapshot-Controller für dynamisch erstellte VolumeGroupSnapshots.

Trident 25.06 erkennt automatisch neue CRDs (angegeben für die Volume Group Snapshot-Funktion), um die entsprechenden Feature Gates in den Trident CSI-Sidecars zu aktivieren.

Hinweis Trident unterstützt Volume Group Snapshots nur für das iSCSI-Protokoll in der Version 25.06.

Schritt 1: Installieren Sie OpenShift 4.19 und aktivieren Sie FeatureGate für Volume Group Snapshots

Installieren Sie den OpenShift 4.19-Cluster mit Kubernetes Version 1.32. Diese Version hebt die Volume Group Snapshot-Funktion auf den Beta-Status. Spätere Versionen von OpenShift können Kubernetes-Versionen über v1.32 enthalten, die diese Funktion ebenfalls unterstützen.

Schritte
  1. Installieren Sie OpenShift Cluster Version 4.19, indem Sie den Anweisungen in der Red Hat-Dokumentation folgen: "Installieren der OpenShift Container Platform" .

  2. Überprüfen Sie die Kubernetes-Version im OpenShift-Cluster.

    Das folgende Bild zeigt OpenShift Cluster v4.19, installiert mit Kubernetes v1.32.

    OpenShift-Cluster mit K8s V1.32

  3. Aktivieren Sie FeatureGate für VolumeGroupSnapshot mithilfe der OpenShift-Webkonsole: Navigieren Sie zu Administration → Benutzerdefinierte Ressourcendefinitionen.

  4. Suchen Sie nach FeatureGate und klicken Sie darauf.

  5. Klicken Sie auf die Registerkarte Instanzen und wählen Sie die Cluster-Instanz aus.

  6. Wählen Sie die Registerkarte YAML und bearbeiten Sie das FeatureGate/Cluster-Objekt, um VolumeGroupSnapshot in die aktivierte Liste unter customNoUpgrade aufzunehmen.

    Aktivieren Sie VolumeGroupSnapshot FeatureGate

Schritt 2: Installieren und konfigurieren Sie Trident 25.06 für Volume Group Snapshots

Die Volume Group Snapshot-Funktion wird von Trident nur für das iSCSI-Protokoll in Trident 25.06 unterstützt. HINWEIS: Sie müssen Trident Version 25.06.1 installieren, um das iSCSI-Protokoll auf OpenShift Cluster 4.19 zu aktivieren.

Installieren Sie Trident und konfigurieren Sie die erforderliche Speicherinfrastruktur, um Volumegruppen-Snapshots für Ihre VMs zu aktivieren. Dazu gehört das Einrichten einer iSCSI-Backend-Verbindung zu ONTAP, das Definieren von Speicherklassen für persistente VM-Volumes und das Konfigurieren von individuellen und Gruppen-Snapshot-Klassen.

Hinweis Es empfiehlt sich, sowohl die Trident Speicherklasse als auch die Snapshot-Klasse als Standard festzulegen, damit Sie beim Erstellen neuer VMs den schnellen FlexCloning-Mechanismus aus den Snapshots des Golden Image nutzen können.
Bevor Sie beginnen
  • Stellen Sie sicher, dass das Feature Gate für VolumeGroupSnapshots aktiviert ist.

  • Verwenden Sie node-prep zum Installieren von iSCSI-Tools.

Schritte
  1. Installieren Sie Trident mit dem folgenden Befehl:

    Installieren Sie Trident mit iscsi nodeprep

  2. Stellen Sie sicher, dass die erforderlichen CRDs für VolumeGroupSnapshots installiert sind.

    erforderliche CRDs verfügbar

  3. Erstellen Sie das Trident -iSCSI-Backend mithilfe der folgenden YAML-Definition.

    #tbc-iscsi.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: tbc-iscsi-secret
    type: Opaque
    stringData:
      username: admin
      password: <passwd to log into ONTAP ClI>
    ---
    apiVersion: trident.netapp.io/v1
    kind: TridentBackendConfig
    metadata:
      name: tbc-iscsi
    spec:
      version: 1
      storageDriverName: ontap-san
      managementLIF: <mgmt-lif>
      backendName: tbc-iscsi
      svm: openshift
      storagePrefix: openshift-iscsi
      defaults:
        formatOptions: "-E nodiscard"
        nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
      credentials:
        name: tbc-iscsi-secret
  4. Erstellen Sie die iSCSI-Speicherklasse mithilfe der folgenden YAML-Definition.

    # sc-iscsi.yaml
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: sc-iscsi
    provisioner: csi.trident.netapp.io
    parameters:
      backendType: "ontap-san"
      provisioningType: "thin"
      fsType: ext4
      snapshots: "true"
    reclaimPolicy: "Delete"
    allowVolumeExpansion: true
  5. Erstellen Sie das VolumeSnapshotClass-Objekt mithilfe der folgenden YAML-Definition.

    # snapshotclass.yaml
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: trident-snapshotclass
    driver: csi.trident.netapp.io
    deletionPolicy: Retain

    Speicherklasse und Volume-Snapshot-Klasse

  6. Legen Sie die Standardwerte für die Speicherklasse und die VolumeSnapshotClass im Cluster fest.

    kubectl patch storageclass <storage-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    kubectl patch volumesnapshotclass <volumesnapshotclass-name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'
  7. Erstellen Sie ein VolumeGroupSnapshotClass-Objekt mithilfe der folgenden YAML-Definition.

    apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshotClass
    metadata:
      name: trident-groupsnapshotclass
      annotations:
        kubernetes.io/description: "Trident group snapshot class"
    driver: csi.trident.netapp.io
    deletionPolicy: Delete

    Volume Group Snapshot-Klasse

Schritt 3: Installieren Sie OpenShift Virtualization und erstellen Sie eine Test-VM mit mehreren Festplatten

Installieren Sie den OpenShift Virtualization Operator, um VM-Verwaltungsfunktionen in Ihrem Cluster zu aktivieren. Erstellen Sie nach der Installation eine Test-VM mit mehreren persistenten Datenträgern, um die Snapshot-Funktionalität der Volume-Gruppe zu demonstrieren.

Schritte
  1. Installieren Sie OpenShift Virtualization Operator.

    Hinweis Dies muss nach dem Einrichten der Standardspeicherklasse und der Snapshot-Klasse mit Trident erfolgen, damit die Golden Images mit Trident CSI als VolumeSnapshots im Cluster verfügbar gemacht werden.
  2. Überprüfen Sie, ob die Golden Images in den Volume-Snapshots enthalten sind.

    Goldene Bilder in Datei-Überblicken

  3. Erstellen Sie eine VM aus der Standardvorlage. Fügen Sie 2 zusätzliche Festplatten für die VM hinzu. (Eine Root-Disk und 2 zusätzliche Disks).

    VM mit 3 PVCs

  4. Überprüfen Sie die entsprechenden Volumes im ONTAP Backend.

    Das Root-Disk-Volume ist ein Flex-Clone-Volume des Snapshots mit dem Golden Image. Die anderen 2 Volumes für die zusätzlichen 2 Festplatten der VMs sind FlexVol -Volumes.

  5. Melden Sie sich mit dem Tool virtctl bei der VM an.

  6. Formatieren und mounten Sie die beiden Festplatten wie unten gezeigt:

    VM-Datenträger

Schritt 4: VM-Datenträger für den Gruppen-Snapshot-Schutz kennzeichnen

Snapshots von Volumegruppen verwenden Label-Selektoren, um zu identifizieren, welche PVCs zusammengehören. So wird sichergestellt, dass alle zugehörigen VM-Datenträger gleichzeitig zum gleichen Zeitpunkt erfasst werden.

Schritte
  1. Beschriften Sie die PVCs mit demselben Schlüssel/Wert und überprüfen Sie sie.

    #oc label pvc fedora-vm1 consistencygroup=group1
    persistentvolumeclaim/fedora-vm1 labeled
    # oc label pvc dv-fedora-vm1-disk1-ulsgg2 consistencygroup=group1
    persistentvolumeclaim/dv-fedora-vm1-disk1-ulsgg2 labeled
    # oc label pvc dv-fedora-vm1-disk2-86oq76 consistencygroup=group1
    persistentvolumeclaim/dv-fedora-vm1-disk2-86oq76 labeled
  2. Überprüfen Sie die Etiketten der PVCs.

    # oc get pvc fedora-vm1 -o jsonpath='{.metadata.labels.consistencygroup'}
    group1
    # oc get pvc dv-fedora-vm1-disk1-ulsgg2 -o jsonpath='{.metadata.labels.consistencygroup'}
    group1
    # oc get pvc dv-fedora-vm1-disk2-86oq76 -o jsonpath='{.metadata.labels.consistencygroup'}
    group1
  3. Erstellen Sie einen VolumeGroupSnapshot, der mithilfe der folgenden YAML-Definition automatisch alle gekennzeichneten PVCs erkennt.

    #vgs.yaml
    apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshot
    metadata:
      name: vgs1
    spec:
      volumeGroupSnapshotClassName: trident-groupsnapshotclass
      source:
        selector:
          matchLabels:
            consistencygroup: group1
    # oc create -f vgs1.yaml
    volumegroupsnapshot.groupsnapshot.storage.k8s.io/vgs1 created

    VGS erstellt

    Ergebnis

    Es wird ein Snapshot aller PVCs mit dem Schlüssel-/Wertpaar der Bezeichnung consistencygroup: group1 erstellt. Trident VolumeGroupSnapshots verwendet die ONTAP Konsistenzgruppe im ONTAP Backend.

Hinweis Trident VolumeGroupSnapshots verwendet die ONTAP Konsistenzgruppe (CG) im ONTAP Backend. Wenn Sie die REST-API verwenden, wird eine CG mit allen zur VM gehörenden Volumes (gruppiert nach den Labels) erstellt, von jedem Volume wird auf konsistente Weise ein Snapshot erstellt und anschließend die CG gelöscht. Je nach Zeitpunkt können Sie möglicherweise sehen, wie die Konsistenzgruppe in ONTAP erstellt und gelöscht wird, oder auch nicht.

Das folgende Bild zeigt die Konsistenzgruppe, die in ONTAP erstellt und dann gelöscht wurde:

ONTAP Konsistenzgruppe

Schritt 5: Wiederherstellen von VM-Datenträgern aus Snapshots

Dieser Schritt überprüft, ob die Snapshots bei Bedarf VM-Daten erfolgreich wiederherstellen können. Nehmen wir an, wir hätten verloren die sample.txt Datei von jeder der beiden Datenfestplatten.

Dateien verloren

Hinweis Obwohl wir einen Snapshot einer Gruppe von Volumes als einzelne Einheit erstellt haben, können wir nur aus einem einzelnen Snapshot wiederherstellen.

Trident ermöglicht eine schnelle, direkte Volume-Wiederherstellung aus einem Snapshot mithilfe von TridentActionSnapshotRestore (TASR) CR. Dieser CR fungiert als zwingende Kubernetes-Aktion und bleibt nach Abschluss des Vorgangs nicht bestehen.

Schritte
  1. Stoppen Sie die VM.

  2. Stellen Sie den Inhalt der ersten Festplatte/PVC mit dem entsprechenden Snapshot mithilfe des YAML wieder her, wie unten gezeigt.

    # cat tasr1.yaml
    apiVersion: trident.netapp.io/v1
    kind: TridentActionSnapshotRestore
    metadata:
      name: trident-snap-disk1
      namespace: default
    spec:
      pvcName: dv-fedora-vm1-disk1-ulsgg2
      volumeSnapshotName: snapshot-4d47c9f45423bfca625a0f1b6c5a5ec456ac59d3e583157be919bb7237317c65
    # oc create -f tasr1.yaml
    tridentactionsnapshotrestore.trident.netapp.io/trident-snap created
  3. Erstellen Sie auf ähnliche Weise ein weiteres TASR-Objekt für die zweite Festplatte mithilfe des PVC und des entsprechenden Snapshots.

    # cat tasr2.yaml
    apiVersion: trident.netapp.io/v1
    kind: TridentActionSnapshotRestore
    metadata:
      name: trident-snap-disk2
      namespace: default
    spec:
      pvcName: dv-fedora-vm1-disk2-86oq76
      volumeSnapshotName: snapshot-afb4c4833460e233c4e86f1108c921b86a6f4d0eb182e99e579081ff6f743f56
    # oc create -f tasr2.yaml
  4. Überprüfen Sie, ob der Wiederherstellungsvorgang erfolgreich war.

    TASR erfolgreich

  5. Starten Sie nun die VM, melden Sie sich an und überprüfen Sie, ob die Datei sample.txt wieder auf den Festplatten vorhanden ist.

    Snapshots wiederhergestellt