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
  • Sie können die Daten eines Namespaces selbst wieder herstellen

Wiederherstellung eines Namespaces

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

Stellen Sie bitte zusätzlich sicher, dass ihr aktiver Kubecontext Ihren NKE Cluster beinhaltet. Führen Sie dazu die dokumentierten Cluster Login Schritte aus.

Sie können den gesamten Namespace selbst wiederherstellen. Dazu müssen Sie zunächst die Datensicherung finden, die Sie wiederherstellen möchten. Mit dem folgenden Befehl können Sie sich eine Liste aller vorhandenen Sicherungen anzeigen lassen:

velero backup get -n nine-system

Wenn Sie die gewünschte Datensicherung gefunden haben, können Sie 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 Sie den Inhalt eines bestehendes Namespaces in demselben wiederherstellen möchten, löschen Sie entweder den Ziel-Namespace, bevor Sie ihn wiederherstellen, oder Sie löschen 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 Sie versehentlich ein RWX PVC löschen, so werden auch die dazugehörigen Backups gelöscht. Um eine unabsichtliche Löschung zu verhindern, können Sie 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 können Sie 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 Sie zugreifen möchten
$ 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 können Sie Dateien von älteren Snapshots nach /data kopieren oder rsync verwenden um grössere Ordnerstrukturen wiederherzustellen.