cherezoff - stock.adobe.com

So setzen Sie Snapshots für Kubernetes Persistent Volumes ein

Snapshots können helfen, Kubernetes Persistent Volumes abzusichern. Folgen Sie diesen Schritten, um einen Snapshot auf GKE mithilfe von YAML-Dateien und kubectl-Befehlen anzulegen.

IT-Teams verwenden Kubernetes Persistent Volumes häufig als Repository zum Speichern von Anwendungsdaten. Wie jede andere Art von Anwendungsdaten müssen Administratoren die Daten in Kubernetes Persistent Volumes regelmäßig sichern.

Hierfür gibt es zwei Hauptoptionen: Die erste ist die Verwendung einer Backup-Anwendung eines Drittanbieters, die Kubernetes unterstützt; die zweite Option ist die Verwendung nativer Kubernetes-Tools, um Snapshots von Kubernetes Persistent Volumes zu erstellen.

Im Folgenden wird beschrieben, wie Sie Snapshots verwenden, um Kubernetes Persistent Volumes auf der Google Kubernetes Engine (GKE) zu sichern.

Kubernetes-Snapshots für Backups

Google nennt ein paar grundlegende Anforderungen, um einen Snapshot auf GKE zu erstellen. Erstens: Stellen Sie sicher, dass der CSI-Treiber (Container Storage Interface) Snapshots unterstützt. Zweitens: Verwenden Sie GKE Version 1.17 oder höher. Drittens, Sie müssen einen Anspruch (Claim) auf ein persistentes Volume haben – oder eine Benutzeranforderung für Speicher – und stellen Sie sicher, dass das persistente Volume durch den CSI-Treiber verwaltet wird. Der CSI-Treiber macht den Speicher über API-Aufrufe zugänglich, wodurch das Backup mit dem Speicher interagieren kann.

Der nächste Schritt ist das Erstellen einer Volume-Snapshot-Klasse. Eine Volume-Snapshot-Klasse basiert auf einer YAML-Datei, die der Kubernetes-Engine mitteilt, welche Treiberdatei Sie beim Erstellen von Snapshots verwenden möchten. Hier ist eine Beispiel-YAML-Datei aus der Dokumentation von Google:

# snapshot-class-example.yaml

apiVersion: snapshot.storage.k8s.io/v1beta1

kind: VolumeSnapshotClass

metadata:

  name: snapshot-class

driver: csi-driver

deletionPolicy: Delete

Sie müssen zwei Änderungen an dieser Datei vornehmen, bevor Sie sie verwenden. Zunächst ersetzen Sie im Feld name: snapshot-class durch den Namen der Snapshot-Klasse, die Sie erstellen möchten. Dann ersetzen Sie im Feld driver: csi-driver durch den Namen der Treiberdatei, die Sie verwenden möchten. Wenn Sie zum Beispiel den Compute Engine Persistent Disk CSI Driver verwenden, lautet der Treibername pd.csi.storage.gke.io.

Der Compute Engine Persistent Disk CSI-Treiber wird häufig verwendet, aber er ist nicht der einzige CSI-Treiber. Viele Storage-Anbieter stellen ihre eigenen CSI-Treiber zur Verfügung. Wenn Sie einen dieser Treiber verwenden, müssen Sie den Namen dieses Treibers angeben, anstatt den Treiber pd.csi.storage.gke.io zu verwenden.

Sobald Sie die YAML-Datei vorbereitet haben, verwenden Sie den Befehl kubectl, um die Volumen-Snapshot-Klasse zu erstellen. Auch hier ersetzen Sie snapshot-class-example durch den Namen der von Ihnen erstellten YAML-Datei:

kubectl apply -f snapshot-class-example.yaml

Als nächstes erstellen Sie eine zweite YAML-Datei. Im Gegensatz zur ersten YAML-Datei, die die Erstellung der Snapshot-Klasse beschreibt, werden in dieser Datei die Parameter für den Snapshot selbst definiert. In dieser YAML-Datei werden die API-Version, die Art des Snapshots, der Snapshot-Name, der Name der Volume-Snapshot-Klasse (wie in der ersten YAML-Datei definiert) und der Name des persistenten Volume-Anspruchs (Claim) aufgelistet.

Hier ist ein Beispiel für eine Snapshot-YAML-Datei aus der Google-Dokumentation: 

#snapshot-example.yaml

apiVersion: snapshot.storage.k8s.io/v1beta1

kind: VolumeSnapshot

metadata:

  name: snapshot

spec:

  volumeSnapshotClassName: snapshot-class

  source:

    persistentVolumeClaimName: pvc

Auch hier müssen Sie einige Dinge in der obigen YAML-Datei ändern, bevor Sie diese zum Erstellen eines Snapshots verwenden können. Ändern Sie zunächst den Namen des Snapshots in einen aussagekräftigeren Namen. Der neue Name könnte beispielsweise auf die Anwendung verweisen und nicht auf den Volume-Namen, da dieser den Zweck der Daten im Volume vermittelt.

Als nächstes ersetzen Sie snapshot-class durch den Namen der Snapshot-Klasse, die Sie zuvor erstellt haben. Schließlich ersetzen Sie pvc durch den Namen des Persitent Volume Claims, auf dem der Snapshot basieren soll. Um Snapshots von mehreren persistenten Volume-Claims zu erstellen, legen Sie für jeden eine eigene YAML-Datei an. Aus diesem Grund ist es wichtig, einen Snapshot-Namen zu wählen, der den zu schützenden persistenten Datenträger widerspiegelt.

An diesem Punkt sind Sie bereit, einen Snapshot zu erstellen. Geben Sie den folgenden Befehl ein - aber ersetzen Sie auch hier snapshot-example durch den Namen der YAML-Datei, die Sie gerade erstellt haben:

kubectl apply -f snapshot-example.yaml

Erfahren Sie mehr über Backup-Lösungen und Tools