Zum Hauptinhalt springen

Datensicherung und -wiederherstellung

Datensicherung und -wiederherstellung ist ein Dienst von NKE, mit dem Cluster-Daten und -Konfigurationen regelmässig gesichert und wiederhergestellt werden.

Details

Kunden von NKE können sich darauf verlassen, dass ihre Cluster-Konfiguration und die Daten des darin genutzten Persistent Volume Claim (PVC) vor Verlust geschützt sind und bereitgestellt werden können, wenn dies gewünscht oder nötig wird. Zu diesem Zweck erstellt Nine regelmässig automatisierte Sicherungskopien, die auf Kundenwunsch wiederhergestellt werden können.

Daten von Persistent Volumes werden mithilfe von Snapshots redundant auf unserer Virtualisierungs-Infrastruktur gesichert. Kubernetes Ressourcen-Backups werden in einem Object Storage Bucket gespeichert.

Verfügbarkeit

Datensicherung und -wiederherstellung ist standardmässig Teil von NKE.

Nutzung

  • Datensicherungen der Daten und Konfiguration des Clusters werden automatisiert jeweils nachts erstellt
  • Datensicherungen werden standardmässig 30 Tage lang aufbewahrt
  • Du kannst die Daten eines Namespaces selbst wiederherstellen

Wiederherstellung eines Namespaces

Um Sicherungen wiederherzustellen, muss das velero cli tool lokal installiert sein.

Stelle bitte zusätzlich sicher, dass dein aktiver Kubecontext deinen NKE Cluster beinhaltet. Führe dazu die dokumentierten Cluster Login Schritte aus.

Du kannst den gesamten Namespace selbst wiederherstellen. Dazu musst du zunächst die Datensicherung finden, die du wiederherstellen möchtest. Mit dem folgenden Befehl kannst du dir eine Liste aller vorhandenen Sicherungen anzeigen lassen:

velero backup get -n nine-system

Wenn du die gewünschte Datensicherung gefunden hast, kannst du den Inhalt des Namespaces in einem neuen/anderen Namespace mit folgendem Befehl wiederherstellen:

velero restore create -n nine-system --from-backup <identifiedBackup> --include-namespaces <namespaceToBeRestored> --namespace-mappings <namespaceToBeRestored>:<targetNamespace>

Wenn du den Inhalt eines bestehenden Namespaces in demselben wiederherstellen möchtest, lösche entweder den Ziel-Namespace, bevor du ihn wiederherstellst, oder lösche alle bestehenden Ressourcen, die von Velero im Namespace wiederhergestellt werden würden. Velero überschreibt keine bestehenden Ressourcen.

velero restore create -n nine-system --from-backup <identifiedBackup> --include-namespaces <namespaceToBeRestored>

Backups von Read Write Many (RWX files) Volumen

caution

Backups von RWX Persistent Volume Claims (PVC) sind an das jeweilige PVC selbst gebunden. Falls du versehentlich ein RWX PVC löschst, so werden auch die dazugehörigen Backups gelöscht. Um eine unabsichtliche Löschung zu verhindern, kannst du das Löschschutz Feature nutzen.

Der Wiederherstellungsprozess von RWX Volumen funktioniert ein wenig anders. Diese Volumen nutzen einen integrierten Snapshot-Mechanismus, welcher ausserhalb vom Velero Zeitplan läuft.

Der Zeitplan ist fix definiert wie folgt:

  • Stündlich: Ein neuer Snapshot wird jede Stunde erstellt und wird für 24h aufbewahrt.
  • Täglich: Ein neuer Snapshot wird täglich erstellt und für 7 Tage aufbewahrt.
  • Wöchentlich: Ein neuer Snapshot wird wöchentlich am Sonntag erstellt und für 4 Wochen aufbewahrt.
  • Monatlich: Ein neuer Snapshot wird am ersten Tag des Monats erstellt und für 3 Monate aufbewahrt.

Auf die Snapshot Daten kann direkt im Dateisystem des Volumens zugegriffen werden über den Ordner .snapshot im Stammverzeichnis. Um Dateien wiederherzustellen kannst du entweder exec in einen existierenden Pod verwenden oder einen temporären Pod erstellen, welcher das Volume anhängt.

# temporären Pod erstellen, der <pvc-name> muss ersetzt werden mit dem PVC
# Namen, auf welchen du zugreifen möchtest
$ kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: files-snapshots
spec:
containers:
- args:
- /bin/sh
image: instrumentisto/rsync-ssh
name: rsync
stdin: true
stdinOnce: true
tty: true
volumeMounts:
- mountPath: /data
name: files-pvc
volumes:
- name: files-pvc
persistentVolumeClaim:
claimName: <pvc-name>
EOF
$ kubectl exec -ti files-snapshot sh
# die PVC-Daten sind unter /data verfügbar, somit können dort auch alle Snapshots aufgelistet werden.
$ ls -l /data/.snapshot
total 14
drwxrwxrwt 2 root root 3 Nov 14 15:00 afs-auto-snap_hourly-2023-11-15-1100
drwxrwxrwt 2 root root 3 Nov 14 15:00 afs-auto-snap_hourly-2023-11-15-1200
drwxrwxrwt 2 root root 3 Nov 14 15:00 afs-auto-snap_hourly-2023-11-15-1300

Sobald der temporäre Pod läuft kannst du Dateien von älteren Snapshots nach /data kopieren oder rsync verwenden um grössere Ordnerstrukturen wiederherzustellen.