Container zu Google Cloud migrieren: Von Kubernetes zu GKE migrieren

Last reviewed 2023-05-22 UTC

In diesem Dokument wird erläutert, wie Sie die Migration von einer selbstverwalteten Kubernetes-Umgebung zu Google Kubernetes Engine (GKE) planen, gestalten und umsetzen. Wird diese nicht richtig durchgeführt, kann das Verschieben von Anwendungen von einer Umgebung in eine andere eine schwierige Aufgabe sein. Daher müssen Sie die Migration sorgfältig planen und ausführen.

Dieses Dokument ist Teil einer mehrteiligen Reihe zur Migration zu Google Cloud. Weitere Informationen zu der Reihe finden Sie unter Zu Google Cloud migrieren: Migrationspfad auswählen.

Dieses Dokument ist Teil einer Reihe zur Migration von Containern zu Google Cloud:

Dieses Dokument ist hilfreich, wenn Sie eine Migration von einer selbstverwalteten Kubernetes-Umgebung zu GKE durchführen möchten. Möglicherweise nutzen Sie eine lokale Umgebung, eine private Hosting-Umgebung oder führen Ihre Umgebung bei einem anderen Cloud-Anbieter aus. Dieses Dokument hilft Ihnen auch dabei, die Möglichkeiten einer Migration zu bewerten und sich ein Bild davon zu machen, wie diese aussehen könnte.

Die Verwendung von GKE bietet folgende Vorteile:

Diese Grafik veranschaulicht den Migrationsprozess:

Migrationspfad mit vier Phasen

Bei jedem Migrationsschritt folgen Sie den unter Zu Google Cloud migrieren: Erste Schritte definierten Phasen:

  1. Arbeitslasten bewerten und erkennen
  2. Grundlagen planen und aufbauen
  3. Arbeitslasten bereitstellen
  4. Umgebung optimieren

Umgebung bewerten

In der Bewertungsphase bestimmen Sie die Anforderungen und Abhängigkeiten für die Migration Ihrer selbstverwalteten Kubernets-Umgebung zu GKE:

  1. Ein umfassendes Inventar Ihrer Anwendungen erstellen.
  2. Die Anwendungen nach ihren Attributen und Abhängigkeiten katalogisieren.
  3. Die Teams auf Google Cloud vorbereiten.
  4. Einen Test und einen Proof of Concept für Google Cloud erstellen.
  5. Die Gesamtbetriebskosten (TCO) der Zielumgebung berechnen.
  6. Die Arbeitslasten auswählen, die als Erstes migriert werden sollen.

Die folgenden Abschnitte basieren auf dem Dokument Zu Google Cloud migrieren: Arbeitslasten bewerten und erkennen.

Inventar erstellen

Zum Durchführen einer Migration müssen Sie Ihre aktuelle Kubernetes-Umgebung kennen. Zuerst sammeln Sie Informationen zu Ihren Clustern und konzentrieren sich dann auf die in diesen Clustern bereitgestellten Arbeitslasten und die Abhängigkeiten der Arbeitslasten. Am Ende der Bewertungsphase haben Sie zwei Inventare: eines für Ihre Cluster und eines für die in diesen Clustern bereitgestellten Arbeitslasten.

Beim Erstellen des Inventars Ihrer Cluster sollten Sie für jeden Cluster Folgendes berücksichtigen:

  • Anzahl und Typ der Knoten: Wenn Sie die Anzahl der Knoten und die Merkmale der einzelnen Knoten kennen, die in Ihrer aktuellen Umgebung vorhanden sind, können Sie die Größe der Cluster für den Wechsel zu GKE festlegen. Die Knoten in Ihrer neuen Umgebung werden möglicherweise auf einer anderen Generation der Hardwarearchitektur ausgeführt als die, die Sie in Ihrer Umgebung verwenden. Die Leistung der einzelnen Architekturgenerationen ist unterschiedlich, sodass die Anzahl der Knoten, die Sie in Ihrer neuen Umgebung benötigen, von der Anzahl der aktuellen Umgebung abweichen kann. Prüfen Sie alle Arten von Hardware, die Sie in Ihren Knoten verwenden, z. B. Hochleistungsspeichergeräte, GPUs und TPUs.
  • Interner oder externer Cluster: Prüfen Sie, welche internen oder externen Interaktionspartner die einzelnen Cluster haben. Zur Unterstützung Ihrer Anwendungsfälle umfasst diese Prüfung die im Cluster ausgeführten Arbeitslasten und die Schnittstellen, die mit den Clustern interagieren.
  • Mehrmandantenfähigkeit: Wenn Sie mehrmandantenfähige Cluster in Ihrer Umgebung verwalten, prüfen Sie, ob sie in Ihrer neuen Google Cloud-Umgebung funktionieren. Jetzt ist ein guter Zeitpunkt, um herauszufinden, wie Sie Ihre mehrmandantenfähigen Cluster verbessern können, da Ihre Mehrmandantenstrategie Einfluss auf den Aufbau der Basis in Google Cloud hat.
  • Kubernetes-Version: Sammeln Sie Informationen zur Kubernetes-Version Ihrer Cluster, um zu beurteilen, ob zwischen diesen Versionen und den in GKE verfügbaren Versionen eine Abweichung besteht. Wenn Sie eine ältere oder kürzlich veröffentlichte Version verwenden, greifen Sie möglicherweise auf Features zurück, die in GKE nicht verfügbar sind. Die Features sind vielleicht verworfen oder die Kubernetes-Version, mit der sie bereitgestellt werden, ist in GKE noch nicht verfügbar.
  • Kubernetes-Upgradezyklus: Zur Aufrechterhaltung einer zuverlässigen Umgebung sollten Sie wissen, wie Sie mit Kubernetes-Upgrades umgehen und wie sich Ihr Upgradezyklus in Bezug auf GKE-Upgrades verhält.
  • Knotenpools: Wenn Sie eine Form der Knotengruppierung verwenden, sollten Sie überlegen, inwiefern diese Gruppierungen dem Konzept der Knotenpools in GKE entsprechen, da Ihre Gruppierungskriterien eventuell nicht für GKE geeignet sind.
  • Knoteninitialisierung: Prüfen Sie, wie jeder Knoten initialisiert wird, bevor Sie ihn für das Ausführen Ihrer Arbeitslasten als verfügbar markieren. So können Sie die Initialisierungsverfahren nach GKE übertragen.

Die folgenden zu prüfenden Elemente in Ihrem Inventar beziehen sich auf die Sicherheit der Infrastruktur und der Kubernetes-Cluster:

  • Namespaces: Wenn Sie in Ihren Clustern Namespaces von Kubernetes verwenden, um Ressourcen logisch voneinander zu trennen, prüfen Sie, welche Ressourcen sich in jedem Namespace befinden, und machen Sie sich klar, warum Sie diese Trennung vorgenommen haben. Angenommen, Sie verwenden Namespaces als Teil Ihrer Mehrmandantenstrategie. Möglicherweise haben Sie Arbeitslasten in Namespaces bereitgestellt, die für Kubernetes-Systemkomponenten reserviert sind. In GKE haben Sie unter Umständen weniger Kontrolle darüber.
  • Rollenbasierte Zugriffssteuerung (RBAC): Wenn Sie in Ihren Clustern die RBAC-Autorisierung verwenden, erstellen Sie eine Liste mit der Beschreibung aller Clusterrollen und Clusterrollenbindungen, die Sie in Ihren Clustern konfiguriert haben.
  • Netzwerkrichtlinien: Erstellen Sie eine Liste aller Netzwerkrichtlinien, die Sie in Ihren Clustern konfiguriert haben, und machen Sie sich damit vertraut, wie Netzwerkrichtlinien in GKE funktionieren.
  • Pod-Sicherheitskontexte. Erfassen Sie Informationen zu den Pod-Sicherheitsrichtlinien und Pod-Sicherheitskontexten, die Sie in Ihren Clustern konfiguriert haben, und machen Sie sich damit vertraut, wie sie in GKE funktionieren.
  • Dienstkonten: Wenn ein Prozess in Ihrem Cluster mit dem Kubernetes API-Server interagiert, erfassen Sie Informationen zu den verwendeten Dienstkonten.

Nachdem Sie das Inventar der Kubernetes-Cluster vollständig erfasst und die Sicherheit Ihrer Umgebung bewertet haben, erstellen Sie das Inventar der in diesen Clustern bereitgestellten Arbeitslasten. Beim Prüfen Ihrer Arbeitslasten sollten Sie Informationen zu folgenden Aspekten sammeln:

  • Pods und Controller: Wenn Sie die Größe der Cluster in Ihrer neuen Umgebung bestimmen möchten, müssen Sie feststellen, wie viele Instanzen jeder Arbeitslast Sie bereitgestellt haben und ob Sie Ressourcenkontingente und Verbrauchslimits für Compute-Ressourcen verwenden. Erfassen Sie Informationen zu den Arbeitslasten, die auf den Steuerungsebenenknoten jedes Clusters ausgeführt werden, sowie zu den von den einzelnen Arbeitslasten verwendeten Controllern. Wie viele Bereitstellungen verwenden Sie zum Beispiel? Wie viele Daemon-Sätze verwenden Sie?
  • Jobs und CronJobs: Ihre Cluster und Arbeitslasten müssen möglicherweise als Teil ihrer Initialisierungs- oder Betriebsverfahren Jobs oder CronJobs ausführen. Prüfen Sie die Anzahl der Instanzen von Jobs und CronJobs, die Sie bereitgestellt haben, sowie die Verantwortlichkeiten und Abschlusskriterien für jede Instanz.
  • Kubernetes-Autoscaling. Für die Migration Ihrer Autoscaling-Richtlinien in die neue Umgebung sollten Sie sich damit vertraut machen, wie das horizontale Pod-Autoscaling, das vertikale Pod-Autoscaling und das mehrdimensionale Pod-Autoscaling in GKE funktionieren.
  • Zustandslose und zustandsorientierte Arbeitslasten: Zustandslose Arbeitslasten speichern keine Daten oder Zustände im Cluster oder im nichtflüchtigen Speicher. Zustandsorientierte Anwendungen speichern Daten zur späteren Verwendung. Ermitteln Sie für jede Arbeitslast, welche Komponenten zustandslos und welche zustandsorientiert sind. Die Migration von zustandsorientierten Arbeitslasten ist in der Regel schwieriger als die Migration zustandsloser Arbeitslasten.
  • Kubernetes-Features: Im Clusterinventar können Sie nachvollziehen, welche Kubernetes-Version auf jedem Cluster ausgeführt wird. Lesen Sie die Versionshinweise jeder Kubernetes-Version, um zu erfahren, welche Features enthalten sind und welche verworfen wurden. Gleichen Sie dann Ihre Arbeitslasten mit den benötigten Kubernetes-Features ab. Das Ziel dieser Aufgabe besteht darin, zu ermitteln, ob Sie verworfene oder noch nicht in GKE verfügbare Features verwenden. Wenn Sie nicht verfügbare Features finden, führen Sie eine Migration weg von diesen verworfenen Features durch und übernehmen Sie die neuen Features, sobald sie in GKE verfügbar sind.
  • Speicher: Prüfen Sie bei zustandsorientierten Arbeitslasten, ob sie PersistentVolumeClaims verwenden. Erstellen Sie eine Liste aller Speicheranforderungen, z. B. Größe und Zugriffsmodus, und ermitteln Sie, wie diese PersistentVolumeClaims PersistentVolumes zugeordnet sind. Prüfen Sie zur Berücksichtigung des zukünftigen Wachstums, ob Sie einen PersistentVolumeClaim erweitern müssen.
  • Konfiguration und Einfügen von Secrets: Damit Sie Ihre bereitstellbaren Artefakte nicht bei jeder Änderung der Umgebungskonfiguration neu erstellen müssen, fügen Sie die Konfiguration und die Secrets mit ConfigMaps und Secrets in Pods ein. Ermitteln Sie für jede Arbeitslast, welche ConfigMaps und Secrets sie verwendet und wie Sie diese Objekte befüllen.
  • Abhängigkeiten: Ihre Arbeitslasten funktionieren wahrscheinlich nicht isoliert. Sie können Abhängigkeiten haben, entweder innerhalb des Clusters oder von externen Systemen. Erfassen Sie für jede Arbeitslast die Abhängigkeiten und stellen Sie fest, ob Ihre Arbeitslasten eine Toleranz dafür haben, wenn die Abhängigkeiten nicht verfügbar sind. Zu den gängigen Abhängigkeiten gehören beispielsweise verteilte Dateisysteme, Datenbanken, Verteilungsplattformen für Secrets, Identitäts- und Zugriffsverwaltungssysteme, Diensterkennungsmechanismen und andere externe Systeme.
  • Kubernetes-Dienste: Verwenden Sie Dienste, um Ihre Arbeitslasten für interne und externe Clients verfügbar zu machen. Sie müssen zu jedem Dienst den jeweiligen Typ kennen. Prüfen Sie bei extern zugänglichen Diensten, wie dieser Dienst mit dem Rest Ihrer Infrastruktur interagiert. Wie unterstützt Ihre Infrastruktur beispielsweise Load-Balancing-Dienste und Ingress-Objekte? Welche Controller für eingehenden Traffic haben Sie in Ihren Clustern bereitgestellt?
  • Service Mesh: Wenn Sie in Ihrer Umgebung ein Service Mesh verwenden, prüfen Sie, wie es konfiguriert ist. Außerdem müssen Sie wissen, wie viele Cluster es umfasst, welche Dienste Teil des Mesh sind und wie Sie die Topologie des Mesh ändern können. Verwenden Sie beispielsweise eine automatische Sidecar-Injektion, um Sidecars automatisch Kubernetes-Pods hinzuzufügen?
  • Markierungen und Toleranzen sowie Affinität und Anti-Affinität: Prüfen Sie für jeden Pod und Knoten, ob Sie Knotenmarkierungen, Pod-Toleranzen oder Affinitäten konfiguriert haben, um die Planung von Pods in Ihren Kubernetes-Clustern anzupassen. Diese Attribute bieten möglicherweise auch Informationen zu möglichen nicht homogenen Knoten- oder Pod-Konfigurationen und können bedeuten, dass entweder die Pods, die Knoten oder beides mit besonderer Sorgfalt bewertet werden müssen. Wenn Sie beispielsweise eine bestimmte Gruppe von Pods konfiguriert haben, die nur auf bestimmten Knoten in Ihrem Kubernetes-Cluster geplant werden sollen, bedeutet dies, dass die Pods spezielle Ressourcen benötigen, die nur auf diesen Knoten verfügbar sind.

Nachdem Sie Ihre Cluster und deren Arbeitslasten geprüft haben, bewerten Sie die restlichen unterstützenden Dienste und Aspekte in Ihrer Infrastruktur. Dazu gehören:

  • Storage-Klassen und nichtflüchtige Volumes: Prüfen Sie, wie Ihre Infrastruktur Ansprüche auf nichtflüchtige Volumes sichert, indem Sie die Speicherklassen für die dynamische Bereitstellung und für statisch bereitgestellte nichtflüchtige Volumes auflisten. Berücksichtigen Sie für jedes nichtflüchtige Volume Folgendes: Kapazität, Volume-Modus, Zugriffsmodus, Klasse, Rückforderungsrichtlinie, Bereitstellungsoptionen und Knotenaffinität.
  • VolumeSnapshots und VolumeSnapshotContents: Prüfen Sie für jedes PersistentVolume, ob Sie einen VolumeSnapshot konfiguriert haben und ob Sie vorhandene VolumeSnapshotContents migrieren müssen.
  • CSI-Treiber (Container Storage Interface). Prüfen Sie bei der Bereitstellung in Ihren Clustern, ob diese Treiber mit GKE kompatibel sind und ob Sie die Konfiguration Ihrer Volumes anpassen müssen, um mit CSI-Treibern zu arbeiten, die mit GKE kompatibel sind.
  • Datenspeicherung: Wenn Sie für die Bereitstellung von nichtflüchtigen Volumes externe Systeme benötigen, bieten Sie den Arbeitslasten in Ihrer GKE-Umgebung die Möglichkeit, diese Systeme zu verwenden. Die Datenlokalität wirkt sich auf die Leistung zustandsorientierter Arbeitslasten aus, da die Latenz zwischen den externen Systemen und der GKE-Umgebung proportional zur Entfernung zwischen ihnen ist. Berücksichtigen Sie für jedes externe Datenspeichersystem den Typ, z. B. Block-Volumes, Dateispeicher oder Objektspeicher, sowie alle Anforderungen an Leistung und Verfügbarkeit, die es erfüllen muss.
  • Logging, Monitoring und Tracing: Erfassen Sie Informationen zu Ihren Monitoring-, Logging- und Tracing-Systemen. Sie können Ihre Systeme in Google Cloud Observability einbinden oder Google Cloud Observability als einziges Monitoring-, Logging- und Tracing-Tool verwenden. Sie können beispielsweise Google Cloud Observability in andere Dienste einbinden, Logging-Schnittstellen für Ihre bevorzugten Programmiersprachen einrichten und den Cloud Logging-Agent auf Ihren VMs verwenden. GKE lässt sich in Google Cloud Observability und Cloud-Audit-Logs einbinden. Sie können auch Cloud Logging-Logs für GKE mit Fluentd anpassen und dann umfangreiche Logs mit Dataflow verarbeiten.
  • Benutzerdefinierte Ressourcen und Kubernetes-Add-ons. Sammeln Sie Informationen zu allen benutzerdefinierten Kubernetes-Ressourcen und allen Kubernetes-Add-ons, die Sie in Ihren Clustern bereitgestellt haben. Möglicherweise funktionieren sie nicht in GKE oder Sie müssen sie anpassen. Wenn beispielsweise eine benutzerdefinierte Ressource mit einem externen System interagiert, dann prüfen Sie, ob dies auch in der Google Cloud-Umgebung der Fall ist.

Bewertung abschließen

Nachdem Sie die Inventare erstellt haben, die sich auf Ihre Kubernetes-Cluster und -Arbeitslasten beziehen, schließen Sie die restlichen Aktivitäten der Bewertungsphase ab, die unter Migration zu Google Cloud: Arbeitslasten bewerten und erkennen beschrieben sind.

Grundlage planen und erstellen

In der Planungs- und Aufbauphase stellen Sie die Infrastruktur und die Dienste bereit, die Ihre Arbeitslasten in Google Cloud unterstützen:

  1. Erstellen Sie eine Ressourcenhierarchie.
  2. Konfigurieren Sie die Identitäts- und Zugriffsverwaltung.
  3. Richten Sie die Abrechnung ein.
  4. Richten Sie die Netzwerkverbindung ein.
  5. Erhöhen Sie die Sicherheit.
  6. Richten Sie Monitoring und Benachrichtigungen ein.

Wenn Sie bereits Infrastruktur als Code verwenden, um die Arbeitslasten in Ihrer Kubernetes-Umgebung zu verwalten, können Sie denselben Prozess auf Ihre Google Cloud-Umgebung anwenden. Sie analysieren Ihre Kubernetes-Deskriptoren, weil einige Google Cloud-Ressourcen, die von GKE automatisch für Sie bereitgestellt werden, mithilfe von Kubernetes-Labels und Annotationen konfigurierbar sind. Sie können beispielsweise einen internen Load-Balancer anstelle eines externen Load-Balancers bereitstellen, indem Sie einem LoadBalancer-Dienst eine Annotation hinzufügen.

Die folgenden Abschnitte basieren auf Zu Google Cloud migrieren: Grundlage schaffen.

Ressourcenhierarchie erstellen

Wenn Sie eine effiziente Ressourcenhierarchie erstellen möchten, berücksichtigen Sie, wie Ihre Unternehmens- und Organisationsstrukturen Google Cloud zugeordnet werden können. Weitere Informationen dazu finden Sie unter Zu Google Cloud migrieren: Grundlage schaffen.

Wenn Sie beispielsweise eine mehrmandantenfähige Umgebung in GKE benötigen, können Sie zwischen den folgenden Optionen wählen:

  • Für jeden Mandanten ein Google Cloud-Projekt erstellen
  • Ein Projekt für verschiedene Mandanten verwenden und mehrere GKE-Cluster bereitstellen
  • Kubernetes-Namespaces verwenden

Die Wahl hängt von Ihren Anforderungen an Isolierung, Komplexität und Skalierbarkeit ab. Wenn beispielsweise ein Projekt pro Mandant vorhanden ist, sind die Mandanten voneinander getrennt, die Verwaltung der Ressourcenhierarchie wird jedoch aufgrund der hohen Anzahl von Projekten komplexer. Obwohl die Verwaltung von Kubernetes-Namespaces im Vergleich einfacher ist als eine komplexe Ressourcenhierarchie, bietet diese Option eine weniger gute Isolierung. Beispielsweise kann die Steuerungsebene von mehreren Mandanten gemeinsam genutzt werden.

Identitäts- und Zugriffsverwaltung konfigurieren

Identity and Access Management umfasst Tools zum zentralen Konfigurieren einer detaillierten Zugriffssteuerung für Cloud-Ressourcen. Weitere Informationen finden Sie unter Identitäts- und Zugriffsverwaltung.

Prüfen Sie, wie die rollenbasierte Zugriffssteuerung (RBAC) von Kubernetes mit der Identitäts- und Zugriffsverwaltung in Google Cloud interagiert, und konfigurieren Sie die RBAC gemäß Ihren Anforderungen, die Sie in der Bewertungsphase ermittelt haben.

Abrechnung einrichten

Bevor Sie Google Cloud-Ressourcen bereitstellen, konfigurieren Sie Cloud Billing und machen Sie sich mit dem Preismodell von GKE vertraut. Weitere Informationen finden Sie unter Abrechnung.

Netzwerkverbindung einrichten

Die Netzwerkkonfiguration ist ein grundlegender Aspekt Ihrer Umgebung. Sehen Sie sich das GKE-Netzwerkmodell an und prüfen Sie die Konnektivitätsanforderungen Ihrer Arbeitslasten. Anschließend können Sie mit der Planung Ihrer Netzwerkkonfiguration beginnen. Weitere Informationen finden Sie unter Konnektivität und Netzwerke.

Sicherheit erhöhen

Es ist wichtig, die Unterschiede zwischen dem Sicherheitsmodell Ihrer Umgebung und dem Modell von Google Cloud zu verstehen. Außerdem müssen Sie wissen, wie Sie die Sicherheit Ihrer GKE-Cluster erhöhen können, um Ihre kritischen Ressourcen zu schützen. Weitere Informationen finden Sie unter Sicherheit.

Monitoring und Benachrichtigungen einrichten

Es ist entscheidend, ein klares Bild von der Leistung Ihrer Infrastruktur und Ihrer Arbeitslasten zu haben, um Verbesserungsmöglichkeiten zu ermitteln. GKE ist umfassend in Google Cloud Observability eingebunden, sodass Sie Logging- und Monitoring-Informationen zu Ihren GKE-Clustern und Arbeitslasten in diesen Clustern erhalten. Weitere Informationen finden Sie unter Monitoring und Benachrichtigungen.

Arbeitslasten bereitstellen

In der Bereitstellungsphase gehen Sie so vor:

  1. Stellen Sie Ihre GKE-Umgebung bereit und konfigurieren Sie sie.
  2. Konfigurieren Sie Ihre GKE-Cluster.
  3. Migrieren Sie Daten aus der Quellumgebung zu Google Cloud.
  4. Stellen Sie Arbeitslasten in Ihrer GKE-Umgebung bereit.
  5. Validieren Sie Ihre Arbeitslasten.
  6. Machen Sie Arbeitslasten verfügbar, die in GKE ausgeführt werden.
  7. Verschieben Sie Traffic von der Quellumgebung in die GKE-Umgebung.
  8. Außerbetriebnahme der Quellumgebung.

Laufzeitplattform und -umgebungen bereitstellen und konfigurieren

Bevor Sie eine Arbeitslast in Ihre neue Google Cloud-Umgebung verschieben, müssen Sie die GKE-Cluster bereitstellen.

Nach der Bewertungsphase wissen Sie jetzt, wie Sie die GKE-Cluster in Ihrer neuen Google Cloud-Umgebung bereitstellen, um Ihren Anforderungen gerecht zu werden. Sie können Folgendes bereitstellen:

  • Die Anzahl der Cluster, die Anzahl der Knoten pro Cluster, die Clustertypen, die Konfiguration jedes Clusters und jedes Knotens und die Skalierbarkeitspläne jedes Clusters.
  • Den Betriebsmodus jedes Clusters. GKE bietet zwei Betriebsmodi für Cluster: GKE Autopilot und GKE Standard.
  • Die Anzahl der privaten Cluster.
  • Die Wahl zwischen VPC-nativen und routerbasierten Netzwerken.
  • Die Kubernetes-Versionen und Release-Versionen, die Sie in Ihren GKE-Clustern benötigen.
  • Die Knotenpools zum logischen Gruppieren der Knoten in Ihren GKE-Clustern und die Entscheidung, ob Sie Knotenpools mit der automatischen Knotenbereitstellung automatisch erstellen müssen.
  • Die Initialisierungsverfahren, die Sie von Ihrer Umgebung in die GKE-Umgebung übertragen können, sowie neue Verfahren, die Sie einführen können. Sie können beispielsweise GKE-Knoten automatisch starten, indem Sie für jeden Knoten oder Knotenpool in Ihren Clustern ein oder mehrere privilegierte Initialisierungsverfahren nutzen.
  • Die Skalierbarkeitspläne für jeden Cluster.
  • Die zusätzlichen GKE-Features, die Sie benötigen, z. B. Anthos Service Mesh und GKE-Add-ons, z. B. Backup for GKE.

Weitere Informationen zum Bereitstellen von GKE-Clustern finden Sie unter:

Cluster konfigurieren

Nachdem Sie Ihre GKE-Cluster bereitgestellt haben und bevor Sie eine Arbeitslast bereitstellen oder Daten migrieren, konfigurieren Sie Namespaces, RBAC, Netzwerkrichtlinien, Ressourcenkontingente und andere Kubernetes- und GKE-Objekte für jeden GKE-Cluster.

Zum Konfigurieren von Kubernetes- und GKE-Objekten in Ihren GKE-Clustern empfehlen wir Folgendes:

  1. Achten Sie darauf, dass Sie die erforderlichen Anmeldedaten und Berechtigungen haben, um auf die Cluster in der Quellumgebung und in Ihrer GKE-Umgebung zuzugreifen.
  2. Prüfen Sie, ob die Objekte in den Kubernetes-Clustern Ihrer Quellumgebung mit GKE kompatibel sind und wie sich die Implementierungen, die diese Objekte unterstützen, von der Quellumgebung und GKE unterscheiden.
  3. Refaktorieren Sie jedes inkompatible Objekt, damit es mit GKE kompatibel ist, oder deaktivieren Sie es.
  4. Migrieren Sie diese Objekte zu Ihren GKE-Clustern.
  5. Konfigurieren Sie alle weiteren Objekte, die Sie in Ihren GKE-Clustern benötigen.

Clusterkonfiguration migrieren

Mit dem folgenden Ansatz können Sie die Konfiguration Ihrer Kubernetes-Cluster aus der Quellumgebung zu Ihren GKE-Clustern migrieren:

  • Wenn Sie Infrastruktur-als-Code-Prozesse verwenden, um Objekte in den Kubernetes-Clustern in Ihrer Quellumgebung zu konfigurieren, haben Sie folgende Möglichkeiten:

    1. Migrieren Sie Objekte, die nur mit geringfügigen Metadatenänderungen, z. B. Objektnamen, Standorte oder Namespaces, mit GKE kompatibel sind, indem Sie Kubernetes-Tools (kubectl) oder verwaltete Dienste (Config Sync) verwenden.
    2. Refaktorieren oder deaktivieren Sie Objekte, die nicht mit GKE kompatibel sind.
  • Wenn Sie keine Infrastruktur-als-Code-Prozesse implementiert haben, haben Sie folgende Möglichkeit:

    • Migrieren Sie die Konfiguration von Kubernetes-Objekten aus Ihrer Quellumgebung in Ihre GKE-Umgebung mit Drittanbietertools wie Crane und Velero.

Daten migrieren

Zum Migrieren von Daten, die Ihre zustandsorientierten Arbeitslasten aus Ihrer Quellumgebung benötigen, in Ihre GKE-Umgebung empfehlen wir, einen Datenmigrationsplan zu erstellen. Folgen Sie dazu der Anleitung unter Zu Google Cloud migrieren: Große Datasets übertragen

Sie stellen die gesamte erforderliche Speicherinfrastruktur bereit, bevor Sie Ihre Daten verschieben. Wenn Sie Bereitsteller für Speicherklassen verwenden, konfigurieren Sie diese in den neuen Clustern.

Weitere Informationen zu den in GKE verfügbaren Datenspeicheroptionen finden Sie unter Speicherkonfiguration. Sie können beispielsweise nichtflüchtige Compute Engine-Speicher verwenden, entweder zonale oder in einer Region replizierte Speicher, oder Sie verwenden Filestore.

Nach der Bereitstellung von StorageClasses stellen Sie alle erforderlichen PersistentVolumes zum Speichern der zu migrierenden Daten bereit. Migrieren Sie dann die Daten aus der Quellumgebung zu diesen PersistentVolumes. Die Details dieser Datenmigration hängen von den Merkmalen der Quellumgebung ab. Sie können zum Beispiel:

  1. Eine Compute Engine-Instanz bereitstellen.
  2. Nichtflüchtigen Speicher an die Compute Engine-Instanz anhängen.
  3. Daten aus der Quellumgebung in den nichtflüchtigen Speicher kopieren.
  4. Die Compute Engine-Instanz herunterfahren.
  5. Den nichtflüchtigen Speicher von der Compute Engine-Instanz trennen.
  6. Den nichtflüchtigen Speicher als GKE-PersistentVolume konfigurieren.
  7. Die Compute Engine-Instanz außer Betrieb nehmen.

Weitere Informationen zur Verwendung von nichtflüchtigen Compute Engine-Speichern als GKE-PersistentVolumes finden Sie unter Vorhandenen nichtflüchtigen Speicher als PersistentVolumes verwenden.

Arbeitslasten bereitstellen

Zum Bereitstellen Ihrer Arbeitslasten empfehlen wir einen der folgenden Ansätze:

  • Implementieren Sie einen Bereitstellungsprozess in Google Cloud.
  • Refaktorieren Sie Ihre vorhandenen Bereitstellungsprozesse, um Arbeitslasten in Ihrer GKE-Umgebung bereitzustellen.

In der Bereitstellungsphase bietet sich auch die Gelegenheit, die Bereitstellungsprozesse und Arbeitslasten zu modernisieren. Wenn Sie in Ihrer Umgebung beispielsweise Pods verwenden, sollten Sie diese Arbeitslasten zu Kubernetes-Deployments migrieren.

Weitere Informationen zur Refaktorierung Ihrer Bereitstellungsprozesse finden Sie unter Zu Google Cloud migrieren: Von manuellen Bereitstellungen zu Containern und Automatisierung migrieren. Dort finden Sie Hinweise zur Migration weg von manuellen Bereitstellungen sowie zu Tools für die Containerorchestrierung und zur Automation.

Wenn die Bereitstellungsprozesse bereit sind, können Sie Ihre Arbeitslasten in GKE bereitstellen.

Bereitstellungsprozess in Google Cloud implementieren

Verwenden Sie zur Implementierung Ihrer Bereitstellungsprozesse in Google Cloud die Skalierbarkeit, die verwalteten Vorgänge und die von Grund auf sicheren Google Cloud-Produkte.

Weitere Informationen zur Implementierung Ihrer Bereitstellungsprozesse in Google Cloud finden Sie unter:

Vorhandene Bereitstellungsprozesse refaktorieren

Obwohl dies für ein erfolgreiches Ergebnis nicht unbedingt erforderlich ist, können Sie Ihre Bereitstellungsprozesse auch während der Migration refaktorieren. Sie können beispielsweise Ihre vorhandenen Bereitstellungsprozesse modernisieren und automatisieren und in Google Cloud implementieren.

Die Migration Ihrer Bereitstellungsprozesse zu Google Cloud gleichzeitig mit der Migration von Arbeitslasten kann komplex sein und das Risiko erhöhen, dass die Migration fehlschlägt. Bei besonders komplexen Migrationen können Sie auch Ihren Bereitstellungsprozess ein zweites Mal migrieren und Ihre aktuellen Prozesse weiterhin zum Bereitstellen von Arbeitslasten in Ihrer GKE-Umgebung verwenden. Dieser Ansatz hilft Ihnen, die Komplexität der Migration zu verringern. Durch die Verwendung Ihrer vorhandenen Bereitstellungsprozesse können Sie den Migrationsprozess vereinfachen.

Arbeitslasten validieren

Nachdem Sie Arbeitslasten in Ihrer GKE-Umgebung bereitgestellt haben, aber bevor Sie diese Arbeitslasten für Ihre Nutzer verfügbar machen, sollten Sie umfassende Validierungen und Tests durchführen. Mit diesen Tests können Sie prüfen, ob sich Ihre Arbeitslasten wie erwartet verhalten. Beispiele:

  • Führen Sie Integrationstests, Lasttests, Compliancetests, Zuverlässigkeitstests und andere Überprüfungsverfahren durch, um sicherzustellen, dass Ihre Arbeitslasten innerhalb der erwarteten Parameter und gemäß ihren Spezifikationen funktionieren.
  • Untersuchen Sie Logs, Messwerte und Fehlerberichte in Google Cloud Observability, um potenzielle Probleme zu identifizieren oder sie vorherzusehen, bevor sie auftreten.

Weitere Informationen zur Arbeitslastvalidierung finden Sie unter Zuverlässigkeit testen.

Arbeitslasten freigeben

Nachdem Sie die Validierungstests der Arbeitslasten ausgeführt haben, die in Ihrer GKE-Umgebung ausgeführt werden, stellen Sie Ihre Arbeitslasten bereit, damit sie erreichbar sind.

Zum Bereitstellen von Arbeitslasten, die in Ihrer GKE-Umgebung ausgeführt werden, können Sie Kubernetes-Dienste und ein Service Mesh verwenden.

Weitere Informationen dazu, wie GKE Kubernetes-Services unterstützt, finden Sie unter Services.

Weitere Informationen zum Bereitstellen von Arbeitslasten, die in GKE ausgeführt werden, finden Sie unter:

Traffic zur Google Cloud-Umgebung verschieben

Nachdem Sie geprüft haben, ob die Arbeitslasten in Ihrer GKE-Umgebung ausgeführt werden, nachdem Sie sie für Clients freigegeben haben, verschieben Sie den Traffic von Ihrer Quellumgebung in Ihre GKE-Umgebung. Damit Sie umfangreiche Migrationen und alle damit verbundenen Risiken vermeiden können, empfehlen wir, den Traffic schrittweise von Ihrer Quellumgebung zu GKE zu verschieben.

Je nachdem, wie Sie Ihre GKE-Umgebung entworfen haben, haben Sie mehrere Möglichkeiten, einen Load-Balancing-Mechanismus zu implementieren, der den Traffic schrittweise von Ihrer Quellumgebung in Ihre Zielumgebung verschiebt. Sie können beispielsweise eine DNS-Auflösungsrichtlinie implementieren, die DNS-Einträge gemäß einer bestimmten Richtlinie auflöst, um einen bestimmten Prozentsatz an Anfragen an IP-Adressen aufzulösen, die zu Ihrer GKE-Umgebung gehören. Sie können einen Load-Balancing-Mechanismus auch mithilfe von virtuellen IP-Adressen und Network Load Balancern implementieren.

Nachdem Sie mit dem schrittweisen Verschieben des Traffics in Ihre GKE-Umgebung begonnen haben, empfehlen wir Ihnen zu beobachten, wie sich Ihre Arbeitslasten bei steigender Last verhalten.

Schließlich führen Sie eine Umstellung aus, bei der Sie den gesamten Traffic von der Quellumgebung zu Ihrer GKE-Umgebung verschieben.

Weitere Informationen zum Load-Balancing finden Sie unter Load-Balancing am Frontend.

Quellumgebung außer Betrieb nehmen

Sobald die Arbeitslasten in Ihrer GKE-Umgebung Anfragen korrekt verarbeiten, deaktivieren Sie die Quellumgebung.

Bevor Sie die Außerbetriebnahme von Ressourcen in Ihrer Quellumgebung beginnen, empfehlen wir Folgendes:

  • Sichern Sie alle Daten, um Ressourcen in der Quellumgebung wiederherstellen zu können.
  • Benachrichtigen Sie Ihre Nutzer, bevor Sie die Umgebung außer Betrieb nehmen.

So deaktivieren Sie Ihre Quellumgebung:

  1. Nehmen Sie die Arbeitslasten außer Betrieb, die in den Clustern in Ihrer Quellumgebung ausgeführt werden.
  2. Löschen Sie die Cluster in der Quellumgebung.
  3. Löschen Sie die mit diesen Clustern verknüpften Ressourcen wie Sicherheitsgruppen, Load Balancer und virtuelle Netzwerke.

Die Reihenfolge, in der Sie die Ressourcen in Ihrer Quellumgebung außer Betrieb nehmen, ist wichtig, um verwaiste Ressourcen zu vermeiden. Bestimmte Anbieter verlangen beispielsweise, dass Kubernetes-Services außer Betrieb genommen werden, die zur Erstellung von Load Balancern führen, bevor die virtuellen Netzwerke, die diese Load Balancer enthalten, außer Betrieb genommen werden.

Umgebung optimieren

Die Optimierung ist die letzte Phase Ihrer Migration. In dieser Phase machen Sie Ihre Umgebung effizienter als zuvor. Sie führen mehrere Iterationen einer wiederholbaren Schleife aus, bis Ihre Umgebung Ihre Optimierungsanforderungen erfüllt. Die Schritte dieser wiederholbaren Schleife sind folgende:

  1. Aktuelle Umgebung, Teams und Optimierungsschleife bewerten
  2. Optimierungsanforderungen und -ziele festlegen
  3. Umgebung und Teams optimieren
  4. Optimierungsschleife verbessern

Die folgenden Abschnitte basieren auf dem Dokument Zu Google Cloud migrieren: Umgebung optimieren.

Aktuelle Umgebung, Teams und Optimierungsschleife bewerten

Die erste Bewertung bezieht sich auf die Migration von Ihrer aktuellen Umgebung zu GKE, und diese Bewertung ist auf die Optimierungsphase zugeschnitten.

Optimierungsanforderungen festlegen

Prüfen Sie die folgenden Optimierungsanforderungen für Ihre GKE-Umgebung:

  • Implementieren Sie erweiterte Bereitstellungsprozesse: Prozesse wie Canary-Deployments oder Blau/Grün-Bereitstellungen bieten Ihnen mehr Flexibilität und können die Zuverlässigkeit Ihrer Umgebung erhöhen, für erweiterte Tests sorgen und die Auswirkungen von Problemen auf Ihre Nutzer reduzieren.
  • Konfigurieren Sie ein Service Mesh: Durch das Einführen eines Service Mesh in Ihrer Umgebung können Sie Features wie Beobachtbarkeit, Trafficverwaltung und gegenseitige Authentifizierung für Ihre Dienste nutzen und Ihre DevOps-Teams entlasten. Sie können ein Service Mesh mit mehreren Clustern bereitstellen, um Ihre Arbeitslasten besser zu segmentieren, oder ein erweitertes Service Mesh verwenden, um die Migration in die neue Umgebung zu unterstützen.
  • Richten Sie das Autoscaling ein: Sie haben verschiedene, sich ergänzende Möglichkeiten, Ihre GKE-Umgebung automatisch zu skalieren. Sie können Ihre Cluster und die Arbeitslasten in jedem Cluster automatisch skalieren. Durch Konfigurieren des Cluster-Autoscalings können Sie die Größe eines GKE-Clusters automatisch an die Anforderungen Ihrer Arbeitslasten anpassen, indem Sie dem Cluster Worker-Knoten hinzufügen oder daraus entfernen. Wenn Sie Ihre Arbeitslasten automatisch skalieren möchten, passen Sie die Verbrauchsanfragen und -limits für CPU und Arbeitsspeicher mit dem vertikalen Pod-Autoscaling an. Wenn Sie Autoscaling verwenden, müssen Sie sich keine Gedanken über die Werte machen, die für die CPU- und Arbeitsspeicheranforderungen der einzelnen Container angegeben werden müssen. Sie können auch die vom Autoscaling bereitgestellten Messwerte exportieren, um die Größe von GKE-Arbeitslasten in großem Maßstab anzupassen.
  • Reduzieren Sie die Kosten mithilfe von virtuellen Maschinen (VMs) auf Abruf: Wenn einige Ihrer Arbeitslasten gegenüber Laufzeitumgebungen ohne Verfügbarkeitsgarantien tolerant sind, sollten Sie diese Arbeitslasten in einem Knotenpool aus VMs auf Abruf bereitstellen. VMs auf Abruf sind günstiger als Standard-VMs von Compute Engine, sodass Sie die Kosten für Ihre Cluster senken können.
  • Binden Sie GKE in andere Produkte ein: Einige Google Cloud-Produkte können in GKE eingebunden werden, um die Sicherheit Ihrer Umgebung zu erhöhen. Sie können beispielsweise Container auf Sicherheitslücken analysieren oder verwaltete Basis-Images in Container Registry verwenden.
  • Erstellen Sie Ihre GKE-Cluster so, dass sie austauschbar sind. Wenn Sie Ihre Cluster als austauschbar betrachten und ihre Bereitstellung und Konfiguration automatisieren, können Sie die operativen Prozesse optimieren und verallgemeinern, um sie zu verwalten, und zukünftige Migrationen und GKE-Cluster-Upgrades vereinfachen. Wenn Sie beispielsweise einen austauschbaren GKE-Cluster auf eine neue GKE-Version aktualisieren müssen, können Sie automatisch einen neuen, aktualisierten Cluster bereitstellen und konfigurieren, Arbeitslasten automatisch im neuen Cluster bereitstellen und den veralteten GKE-Cluster außer Betrieb nehmen.
  • Multi-Cluster-Umgebung entwerfen. Die Implementierung einer Multi-Cluster-Umgebung in GKE bietet folgende Vorteile:

    • Sie reduzieren die Wahrscheinlichkeit, dass es in Ihrer Architektur Single Points of Failure gibt.
    • Sie profitieren von der größeren Flexibilität in Form des Testens von Konfigurationsänderungen an einer Teilmenge Ihrer GKE-Cluster.
    • Sie verteilen Arbeitslasten auf die GKE-Cluster.

Obwohl Sie einige dieser Optimierungsanforderungen in einer Kubernetes-Umgebung umsetzen können, ist dies in GKE einfacher, da für das Ausführen des Clusters kein Aufwand anfällt. Stattdessen können Sie sich auf die Optimierung selbst konzentrieren.

Optimierung abschließen

Nachdem Sie die Liste Ihrer Optimierungsanforderungen erstellt haben, schließen Sie die restlichen Aktivitäten der Optimierungsphase ab.

Nächste Schritte