Sicherung für GKE


Sicherung für GKE ist ein Dienst zum Sichern und Wiederherstellen von Arbeitslasten in GKE-Clustern. Es besteht aus zwei Komponenten:

  • Eine Google Cloud API, die als Steuerungsebene für den Dienst dient
  • Ein GKE-Add-on (der Sicherung für GKE-Agent), das in jedem Cluster aktiviert sein muss, für den Sie Sicherungs- und Wiederherstellungsvorgänge ausführen möchten.

Sicherungen Ihrer Arbeitslasten können für die Notfallwiederherstellung, CI/CD-Pipelines, das Klonen von Arbeitslasten oder Upgrades nützlich sein. Der Schutz Ihrer Arbeitslasten kann dazu beitragen, geschäftskritische Recovery Point Objectives zu erreichen.

Einführung

Nach der Aktivierung lässt sich der Backup for GKE-Dienst in die GKE-UI, das Google Cloud CLI und REST APIs einbinden und bietet konsistente Workflows für die Entwicklung und den Betrieb. In einer Sicherung werden zwei Arten von Daten erfasst:

  • Konfigurationssicherung: Eine Reihe von Kubernetes-Ressourcenmanifesten, die aus dem API-Server des Clusters extrahiert wurden, der die Sicherung ausführt, und den Clusterstatus erfasst.
  • Volume-Sicherungen: Eine Reihe von Volume-Sicherungen, die PersistentVolumeClaim-Ressourcen in der Konfigurationssicherung entsprechen.

Sie können auswählen, welche Arbeitslasten Sie sichern oder wiederherstellen möchten, oder Sie können alle Arbeitslasten sichern oder wiederherstellen. Sie können Arbeitslasten aus einem Cluster sichern und in einem anderen Cluster wiederherstellen. Sie können Ihre Sicherungen so planen, dass sie automatisch ausgeführt werden. Damit können Sie schnell auf Ihre Arbeitslasten reagieren, wenn es zu einem Vorfall kommt.

Zum Wiederherstellen einer Arbeitslast werden Kubernetes-Ressourcen im Zielcluster neu erstellt. Nachdem die Ressourcen erstellt wurden, unterliegt die Wiederherstellung der Arbeitslastfunktionalität dem Clusterabgleich. Beispielsweise werden Pods auf Knoten geplant und dann auf diesen Knoten gestartet. Während der Wiederherstellung können Sie optional Transformationsregeln anwenden, die mit einer Reihe von Ressourcen übereinstimmen und den aktuellen Wert eines Attributs für diese Ressourcen durch einen neuen Wert ersetzen.

Die Kombination aus selektiver Sicherung und Wiederherstellung mit Substitutionen wurde entwickelt, um viele verschiedene Sicherungs- und Wiederherstellungsszenarien zu aktivieren und zu unterstützen. Beispiel:

  • Sichern Sie alle Arbeitslasten in einem Cluster und stellen Sie sie für die Notfallwiederherstellung in einem separaten Cluster wieder her.
  • Sichern Sie alle Arbeitslasten, aber führen Sie selektiv ein Rollback einer einzelnen Arbeitslast im Quellcluster durch.
  • Sichern Sie die Ressourcen in einem Namespace und klonen Sie sie in einen anderen Namespace.
  • Migrieren oder Klonen Sie die Arbeitslast von einem Cluster zu einem anderen Cluster.
  • Ändern Sie die Speicherparameter für eine Arbeitslast, indem Sie z. B. einen zonalen nichtflüchtigen Speicher auf einen regionalen nichtflüchtigen Speicher verschieben.

Sie müssen einen Zielcluster mit aktiviertem Backup for GKE-Dienst erstellen, bevor Sie Arbeitslasten sichern oder wiederherstellen können.

Architektur

Backup for GKE besteht aus zwei Hauptkomponenten:

  • Einem Dienst, der in Google Cloud ausgeführt wird und eine ressourcenbasierte REST API unterstützt. Dieser Dienst dient als Steuerungsebene für Backup for GKE. Der Dienst enthält Elemente der Google Cloud Console UI, die mit dieser API interagieren.
  • Ein Agent, der in jedem Cluster ausgeführt wird, in dem Sicherungen oder Wiederherstellungen durchgeführt werden. Der Agent führt Sicherungs- und Wiederherstellungsvorgänge in diesen Clustern aus, indem er mit der Backup for GKE API interagiert.

Das folgende Diagramm zeigt die Beziehung zwischen den verschiedenen Komponenten von Backup for GKE:

Grafik: Backup for GKE API-Architektur

Überblick über den Service

Der Backup for GKE-Dienst stellt einen API-Endpunkt für die Clients zur Interaktion bereit. Die Backup for GKE API wird wie die meisten Google Cloud APIs auf anwendungsspezifische Cloud-Ressourcen in einer Ressourcenhierarchie angewendet. Backup for GKE verwaltet eine Datenbank dieser anwendungsspezifischen Ressourcen und die Dienst-API-Methoden entsprechen hauptsächlich dem Erstellen, Lesen, Aktualisieren oder Löschen von Vorgängen für diese Ressourcen.

Das Cloud-Ressourcenmodell enthält zwei primäre aktive Ressourcentypen:

  • Backup: Stellt die Sicherung eines bestimmten Teils eines GKE-Clusters zu einem bestimmten Zeitpunkt dar. Durch das Erstellen einer Backup-Ressource wird der Sicherungsvorgang initiiert (letztendlich werden Kubernetes-Zielressourcen gespeichert und Snapshots der nichtflüchtigen Ziel-Volumes erstellt). Durch Löschen eines Backup werden diese gespeicherten Artefakte gelöscht.
  • Restore: Stellt die Wiederherstellung eines ausgewählten Teils eines bestimmten Backup in einem GKE-Cluster dar. Durch das Erstellen einer Restore-Ressource wird der Wiederherstellungsprozess initiiert. Das Löschen von Restore hat keine Nebeneffekte und entfernt einfach den Datensatz aus der Datenbank.

Backup for GKE umfasst auch zwei Konfigurations- und Steuerungsressourcentypen:

  • BackupPlan: Eine übergeordnete Ressource für Backup-Ressourcen, die eine Kette von Sicherungen darstellen. Diese Ressource enthält eine Sicherungskonfiguration, die den Quellcluster, die Auswahl der zu sichernden Arbeitslasten und die Region enthält, in der die unter diesem Plan erstellten Backup-Artefakte gespeichert werden.
  • RestorePlan: Stellt eine wiederverwendbare Wiederherstellungsvorlage bereit. Diese Ressource enthält eine Wiederherstellungskonfiguration, einschließlich des Zielclusters, in dem Sie die Sicherung wiederherstellen möchten, des Quellsicherungsplans, des Umfangs der Wiederherstellung, der Konfliktbehandlung und Transformationsregeln.

Agent-Übersicht

Der Backup for GKE-Agent wird in jedem GKE-Cluster bereitgestellt und ausgeführt, den Sie zum Sichern durch den Backup for GKE-Dienst konfigurieren. Der Agent ist für die Ausführung der Sicherungs- und Wiederherstellungsaktivitäten verantwortlich. Beispiel:

  • Back-up:

    • Orchestrierung des Sicherungsvorgangs
    • Ressourcen vom Kubernetes API-Server abrufen, in ein Archiv serialisieren und das Archiv speichern
    • Sicherungen der zugrunde liegenden Volumes erstellen, die PersistentVolumeClaims zugeordnet sind
  • Wiederherstellen:

    • Orchestrierung des Wiederherstellungsprozesses
    • Das Kubernetes-Ressourcenarchiv aus dem Speicher abrufen, die ausgewählten Ressourcen extrahieren, die entsprechenden Änderungen auf diese Ressourcen anwenden und sie im Zielcluster erstellen.
    • Volumes erstellen und in die Kubernetes-Konfiguration des Zielclusters integrieren.

Administratoren interagieren nicht mit dem Agent, da der Agent von benutzerdefinierten Kubernetes-Ressourcen (BackupJob und RestoreJob) gesteuert wird, die automatisch im Cluster vom Backup for GKE-Dienst im Rahmen der Erstellung von Sicherungs- und Wiederherstellungs-Cloudressourcen erstellt werden. Administratoren können jedoch die Orchestrierung von Sicherungen beeinflussen, indem sie optionale Kubernetes-Ressourcen im Cluster erstellenProtectedApplication. Diese ProtectedApplication-Ressourcen gelten nur für Backup for GKE und bieten detailliertere Optionen zum Definieren des Sicherungs- und Wiederherstellungsbereichs.

Informationen zu Unterschieden zwischen der Vorschau und den GA-Versionen des Agents finden Sie unter Einstellung von Vorschau-Agents.

Nicht gesicherte Inhalte

Mit Backup for GKE können Sie nur Kubernetes-Ressourcen und zugrunde liegende nichtflüchtige Volumes sichern. Bei Backup for GKE wird Folgendes nicht gesichert:

  • GKE-Clusterkonfigurationsinformationen wie Knotenkonfiguration, Knotenpools, anfängliche Clustergröße oder aktivierte Features.
  • Container-Images, auf die von einer Sicherung verwiesen wird. Nur die Kubernetes-Ressourcen, die die Arbeitslast beschreiben und auf die Container-Images verweisen, werden gesichert. Wenn ein Image, auf das ein Arbeitslastmanifest in einer Sicherung verweist, aus seinem Image-Repository entfernt wird, wird bei einer nachfolgenden Wiederherstellung dieser Konfiguration die Arbeitslast nicht erfolgreich wiederhergestellt.
  • Konfigurationsinformationen oder Status von Diensten außerhalb des Clusters, z. B. Cloud SQL oder externe Load-Balancer.

Nächste Schritte