Zum Inhalt springen

Snapshots machen und wiederherstellen

Ein Snapshot ist der etcd-Snapshot von k3s selbst: der Zustand des Clusters, jedes Kubernetes-Objekt einschließlich der Secrets. Diese Seite macht jetzt einen, stellt einen an Ort und Stelle wieder her und sagt, was ein Snapshot zurückbringt und was nicht.

Er enthält nicht die Daten in deinen Volumes. Eine Datenbank auf einem Volume, hochgeladene Dateien, alles, was ein Pod auf eine Platte schreibt: Das sicherst du mit den Werkzeugen, die du dafür benutzt. Für Postgres richtet die PaaSbox Platform die Backups selbst ein In Arbeit.

k3s nimmt die geplanten Snapshots und lädt sie in deinen Bucket, nach dem Zeitplan, den du unter Backups einrichten festlegst. Der Reiter Backups listet die Snapshots, die der Cluster zuletzt gemeldet hat, mit ihrer Art (Kind): Scheduled, On demand, Before an upgrade oder Final.

Du musst Team-Admin sein, und der Cluster muss laufen.

  1. Wähle auf der Overview oder dem Reiter Backups des Clusters Snapshot now.

  2. pbx-agent nimmt ihn bei seiner nächsten Synchronisation und bestätigt, dass er im Bucket angekommen ist, bevor er Erfolg meldet. Operations zeigt die Schritte.

  3. Der Snapshot erscheint unter Snapshots, als On demand, mit Where S3.

Vor jedem Upgrade nimmt pbx-agent selbst einen Snapshot; löschst du einen Cluster, bietet das Portal einen letzten an.

Eine Wiederherstellung setzt den Zustand des Clusters auf einen Snapshot zurück, auf demselben Server. Starten kann sie nur ein Team-Admin, nur bei einem Cluster, der bereit oder fehlgeschlagen ist, und nur aus einem Snapshot in S3.

  1. Wähle auf dem Reiter Backups neben dem Snapshot Restore.

  2. Lies, was die Wiederherstellung tut, tippe zur Bestätigung den Namen des Clusters ein und wähle Restore. Das Portal schreibt den Admins des Teams eine Mail, dass eine Wiederherstellung angestoßen wurde, und von wem In Arbeit.

  3. pbx-agent hält k3s an, legt den Snapshot auf den Node (die Kopie, die k3s dort hat, oder aus dem Bucket geholt), setzt den Zustand des Clusters darauf zurück, startet k3s, wartet auf die API und entfernt nach zwei Minuten Wartezeit jeden anderen Node, der nicht zurückgekommen ist. Die Kubernetes-API ist so lange nicht erreichbar. Operations zeigt jeden Schritt.

Im Labor war die API etwa 35 Sekunden nach dem Start zurück, und die ganze Wiederherstellung dauerte 160 Sekunden. Wird pbx-agent während einer Wiederherstellung angehalten, macht er beim Schritt weiter, in dem er war.

Was eine Wiederherstellung an Ort und Stelle ändert und was sie behält:

  • Weg: alles, was der Cluster nach dem Snapshot gespeichert hat: Deployments, Secrets, ConfigMaps und jedes andere Objekt, das seitdem angelegt oder geändert wurde.
  • Bleibt: die Daten in deinen Volumes auf der Platte des Servers. Ein Volume, das nach dem Snapshot angelegt wurde, bleibt auf der Platte, aber der wiederhergestellte Cluster hat kein Objekt mehr, das darauf verweist.

Hältst du die Schlüssel des Buckets selbst, funktioniert eine Wiederherstellung nur, solange die Kubernetes-API läuft, denn pbx-agent liest dein Secret, bevor er k3s anhält. Stell einen Snapshot nur auf derselben oder einer neueren k3s-Version wieder her als der, die ihn genommen hat. Das Portal behält jede Version des Server-Tokens des Clusters, die ein behaltener Snapshot braucht, und schickt die passende mit der Wiederherstellung.

Geplant Das Portal soll einen neuen Server anlegen, dessen pbx-agent den Snapshot wiederherstellt, bevor k3s zum ersten Mal startet. pbx-agent kann seinen Teil schon; die Seite im Portal und der Schritt im Provisioner, die einen solchen Server anlegen, sind nicht gebaut. Bis dahin ist die Antwort auf einen verlorenen Server ein neuer Cluster, auf dem du deine Apps neu deployst, oder eine Wiederherstellung von Hand (Ohne PaaSbox weiterbetreiben).

EreignisZustand des Clusters (Objekte, Secrets)Daten in Volumes auf der Platte des ServersDaten auf Hetzner-Volumes
Ein Upgradebleibtbleibenbleiben
Eine Wiederherstellung an Ort und Stellezurückgesetzt auf den Snapshotbleibenbleiben
Der Server geht verlorenim letzten Snapshot in deinem Bucketverlorenbleiben, in deinem Projekt
Den Cluster löschenim letzten Snapshot, wenn du ihn gewählt hastmit dem Server gelöscht (ein übernommener Server behält seine Platte)mit dem Cluster gelöscht