This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.Migration von Version 3 zu 4
Migration zu OpenShift Container Platform 4
Zusammenfassung
Kapitel 1. Überblick über die Migration von OpenShift Container Platform 3 zu 4 Link kopierenLink in die Zwischenablage kopiert!
OpenShift Container Platform 4-Cluster unterscheiden sich von OpenShift Container Platform 3-Clustern. OpenShift Container Platform 4-Cluster enthalten neue Technologien und Funktionalitäten, die dafür sorgen, dass der Cluster sich selbst verwaltet, flexibel und automatisiert ist. Mehr zur Migration von OpenShift Container Platform 3 zu 4 finden Sie unter Informationen zur Migration von OpenShift Container Platform 3 zu 4.
1.1. Unterschiede zwischen OpenShift Container Platform 3 und 4 Link kopierenLink in die Zwischenablage kopiert!
Bevor Sie von OpenShift Container 3 zu 4 migrieren, können Sie sich die Unterschiede zwischen OpenShift Container Platform 3 und 4 näher ansehen. Sehen Sie sich die folgenden Informationen an:
- Architektur
- Installation und Aktualisierung
- Überlegungen zu Speicher, Netzwerk, Protokollierung, Sicherheit und Überwachung
1.2. Überlegungen zur Netzwerkplanung Link kopierenLink in die Zwischenablage kopiert!
Bevor Sie von OpenShift Container Platform 3 zu 4 migrieren, sollten Sie sich die Unterschiede zwischen OpenShift Container Platform 3 und 4 ansehen, um Informationen zu den folgenden Bereichen zu erhalten:
Sie können zustandsbehaftete Anwendungs-Workloads mit der Granularität eines Namespaces von OpenShift Container Platform 3 zu 4 migrieren. Mehr über das MTC erfahren Sie unter Informationen zum MTC.
Wenn Sie von OpenShift Container Platform 3 migrieren, lesen Sie bitte den Abschnitt Informationen zur Migration von OpenShift Container Platform 3 zu 4 und Installieren des Legacy Migration Toolkit for Containers Operator auf OpenShift Container Platform 3.
1.3. Installation des MTC Link kopierenLink in die Zwischenablage kopiert!
Gehen Sie die folgenden Schritte zur Installation des MTC durch:
- Installieren Sie den Migration Toolkit for Containers Operator auf dem Ziel-Cluster mithilfe des Operator Lifecycle Managers (OLM).
- Installieren Sie den Legacy Migration Toolkit for Containers Operator manuell auf dem Quell-Cluster.
- Konfigurieren Sie den Objektspeicher für die Verwendung als Replikations-Repository.
1.4. Upgrade des MTC Link kopierenLink in die Zwischenablage kopiert!
Sie aktualisieren das Migration Toolkit for Containers (MTC) auf OpenShift Container Platform 4.10 mithilfe von OLM. Sie aktualisieren MTC auf OpenShift Container Platform 3, indem Sie den alten Migration Toolkit for Containers Operator neu installieren.
1.5. Überprüfen der Checklisten zur Migrationsvorbereitung Link kopierenLink in die Zwischenablage kopiert!
Bevor Sie Ihre Anwendungs-Workloads mit dem Migration Toolkit for Containers (MTC) migrieren, sollten Sie die Checklisten zur Migrationsvorbereitung überprüfen.
1.6. Migration von Anwendungen Link kopierenLink in die Zwischenablage kopiert!
Sie können Ihre Anwendungen über die MTC-Webkonsole oder die Befehlszeile migrieren.
1.7. Erweiterte Migrationsoptionen Link kopierenLink in die Zwischenablage kopiert!
Sie können Ihre Migrationen automatisieren und die benutzerdefinierten MTC-Ressourcen anpassen, um die Leistung umfangreicher Migrationen zu verbessern, indem Sie die folgenden Optionen verwenden:
1.8. Problembehandlung bei Migrationen Link kopierenLink in die Zwischenablage kopiert!
Sie können die folgenden Schritte zur Problembehandlung durchführen:
- Anzeige der Ressourcen des Migrationsplans über die MTC-Webkonsole
- Anzeige der aggregierten Protokolldatei des Migrationsplans
- Verwendung des Lesers für Migrationsprotokolle
- Zugriff auf Leistungsmetriken
-
Verwendung des
must-gather
-Tools -
Verwendung der Velero CLI zum Debuggen von
Backup
- undRestore
-CRs - Verwendung benutzerdefinierter MTC-Ressourcen für die Problembehandlung
- Nachschlagen häufig gestellter Fragen und Bedenken
1.9. Zurücksetzen einer Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können eine Migration über die MTC-Webkonsole, über die Befehlszeilenschnittstelle (CLI) oder manuell zurücksetzen.
1.10. Deinstallation des MTC und Löschen von Ressourcen Link kopierenLink in die Zwischenablage kopiert!
Sie können das MTC deinstallieren und seine Ressourcen löschen, um den Cluster zu bereinigen.
Kapitel 2. Informationen zur Migration von OpenShift Container Platform 3 zu 4 Link kopierenLink in die Zwischenablage kopiert!
OpenShift Container Platform 4 enthält neue Technologien und Funktionalitäten, die dafür sorgen, dass der Cluster sich selbst verwaltet, flexibel und automatisiert ist. OpenShift Container Platform 4-Cluster werden anders bereitgestellt und verwaltet wie in OpenShift Container Platform 3.
Der effektivste Weg, um von OpenShift Container Platform 3 zu 4 zu migrieren, ist die Verwendung einer CI/CD-Pipeline zur Automatisierung von Bereitstellungen in einem Framework zum Application Lifecycle Management.
Wenn Sie nicht über eine CI/CD-Pipeline verfügen oder wenn Sie zustandsbehaftete Anwendungen migrieren, können Sie das Migration Toolkit for Containers (MTC) verwenden, um Ihre Anwendungs-Workloads zu migrieren.
Um erfolgreich auf OpenShift Container Platform 4 umzusteigen, lesen Sie bitte die folgenden Informationen:
- Unterschiede zwischen OpenShift Container Platform 3 und 4
- Architektur
- Installation und Upgrade
- Überlegungen zu Speicher, Netzwerk, Protokollierung, Sicherheit und Überwachung
- Informationen zum Migration Toolkit for Containers
- Workflow
- Dateisystem- und Schnappschuss-Kopiermethoden für Persistent Volumes (PVs)
- Direct Volume Migration
- Direct Image Migration
- Erweiterte Migrationsoptionen
- Automatisieren Ihrer Migration mit Hooks für die Migration
- Verwendung der MTC API
- Ausschluss von Ressourcen aus einem Migrationsplan
-
Konfigurieren der benutzerdefinierten Ressource
MigrationController
für umfangreiche Migrationen - Aktivieren der automatischen PV-Größenänderung für die Direct Volume Migration
- Aktivieren von zwischengespeicherten Kubernetes-Clients für verbesserte Leistung
Neue Funktionen und Erweiterungen, technische Änderungen und bekannte Probleme finden Sie in den MTC-Versionshinweisen.
Kapitel 3. Unterschiede zwischen OpenShift Container Platform 3 und 4 Link kopierenLink in die Zwischenablage kopiert!
OpenShift Container Platform 4.10 führt architektonische Änderungen und Erweiterungen ein. Die Verfahren, die Sie für die Verwaltung Ihres OpenShift Container Platform 3-Clusters verwendet haben, gelten möglicherweise nicht für OpenShift Container Platform 4.
Informationen zur Konfiguration Ihres OpenShift Container Platform 4-Clusters finden Sie in den entsprechenden Abschnitten der OpenShift Container Platform-Dokumentation. Informationen über neue Features und andere nennenswerte technische Änderungen finden Sie in den OpenShift Container Platform 4.10 Versionshinweise.
Es ist nicht möglich, Ihren bestehenden OpenShift Container Platform 3-Cluster auf OpenShift Container Platform 4 zu aktualisieren. Sie müssen mit einer neuen Installation von OpenShift Container Platform 4 beginnen. Es stehen Tools zur Verfügung, die Sie bei der Migration Ihrer Kontrollebenen-Einstellungen und Anwendungs-Workloads unterstützen.
3.1. Architektur Link kopierenLink in die Zwischenablage kopiert!
Mit OpenShift Container Platform 3 haben Administratoren Red Hat Enterprise Linux(RHEL)-Hosts einzeln bereitgestellt und dann OpenShift Container Platform auf diesen Hosts installiert, um einen Cluster zu bilden. Die Administratoren waren für die ordnungsgemäße Konfiguration dieser Hosts und die Durchführung von Updates verantwortlich.
OpenShift Container Platform 4 stellt eine bedeutende Veränderung in der Art und Weise dar, wie OpenShift Container Platform-Cluster bereitgestellt und verwaltet werden. OpenShift Container Platform 4 enthält neue Technologien und Funktionalitäten wie Operatoren, Machine Sets und Red Hat Enterprise Linux CoreOS (RHCOS), die für den Betrieb des Clusters von zentraler Bedeutung sind. Dieser technologische Wandel ermöglicht es Clustern, einige Funktionen selbst zu verwalten, die zuvor von Administratoren ausgeführt wurden. Dies gewährleistet auch die Stabilität und Konsistenz der Plattform und vereinfacht die Installation und Skalierung.
Weitere Informationen finden Sie unter OpenShift Container Platform-Architektur.
Unveränderliche Infrastruktur
OpenShift Container Platform 4 verwendet Red Hat Enterprise Linux CoreOS (RHCOS), das für die Ausführung von containerisierten Anwendungen entwickelt wurde und eine effiziente Installation, eine operatorenbasierte Verwaltung und vereinfachte Upgrades bietet. RHCOS ist ein unveränderlicher Container-Host und kein anpassbares Betriebssystem wie RHEL. RHCOS ermöglicht OpenShift Container Platform 4 die Verwaltung und Automatisierung der Bereitstellung des zugrunde liegenden Container-Hosts. RHCOS ist ein Teil der OpenShift Container Platform, was bedeutet, dass alles innerhalb eines Containers läuft und mit der OpenShift Container Platform bereitgestellt wird.
In OpenShift Container Platform 4 müssen die Knoten der Kontrollebene RHCOS ausführen, um sicherzustellen, dass die vollständige Automatisierung der Kontrollebene beibehalten wird. Dies macht das Ausrollen von Updates und Upgrades wesentlich einfacher als in OpenShift Container Platform 3.
Weitere Informationen finden Sie unter Red Hat Enterprise Linux CoreOS (RHCOS).
Operatoren
Operatoren sind eine Methode zum Verpacken, Bereitstellen und Verwalten einer Kubernetes-Anwendung. Die Operatoren können die Komplexität des Betriebs einer weiteren Software verringern. Sie überwachen Ihre Umgebung und nutzen den aktuellen Zustand, um in Echtzeit Entscheidungen zu treffen. Erweiterte Operatoren sind so konzipiert, dass sie automatisch Upgrades durchführen und auf Störungen reagieren.
Weitere Informationen finden Sie unter Informationen zu Operatoren.
3.2. Installation und Upgrade Link kopierenLink in die Zwischenablage kopiert!
Installationsvorgang
Um OpenShift Container Platform 3.11 zu installieren, haben Sie Ihre Red Hat Enterprise Linux(RHEL)-Hosts vorbereitet, alle für Ihren Cluster erforderlichen Konfigurationswerte festgelegt und dann ein Ansible-Playbook zur Installation und Einrichtung Ihres Clusters ausgeführt.
In OpenShift Container Platform 4.10 verwenden Sie das OpenShift-Installationsprogramm, um eine Mindestmenge an Ressourcen zu erstellen, die für einen Cluster erforderlich sind. Nachdem der Cluster in Betrieb ist, verwenden Sie Operatoren, um Ihren Cluster weiter zu konfigurieren und neue Dienste zu installieren. Nach dem ersten Start werden Red Hat Enterprise Linux CoreOS(RHCOS)-Systeme vom Machine Config Operator (MCO) verwaltet, der im OpenShift Container Platform-Cluster ausgeführt wird.
Weitere Informationen finden Sie unter Installationsvorgang.
Wenn Sie Ihrem OpenShift Container Platform 4.10-Cluster Red Hat Enterprise Linux(RHEL)-Worker-Maschinen hinzufügen möchten, verwenden Sie ein Ansible-Playbook, um die RHEL-Worker-Maschinen zusammenzuführen, nachdem der Cluster ausgeführt wurde. Weitere Informationen finden Sie unter Hinzufügen von RHEL-Rechenmaschinen zu einem OpenShift Container Platform-Cluster.
Infrastruktur-Optionen
In OpenShift Container Platform 3.11 haben Sie Ihren Cluster auf einer Infrastruktur installiert, die Sie vorbereitet und gewartet haben. Neben der Bereitstellung einer eigenen Infrastruktur bietet OpenShift Container Platform 4 die Möglichkeit, einen Cluster auf einer Infrastruktur bereitzustellen, die vom OpenShift Container Platform-Installationsprogramm bereitgestellt und vom Cluster verwaltet wird.
Weitere Informationen finden Sie unter OpenShift Container Platform Installationsübersicht.
Upgrade Ihres Clusters
In OpenShift Container Platform 3.11 haben Sie Ihren Cluster durch die Ausführung von Ansible-Playbooks aktualisiert. In OpenShift Container Platform 4.10 verwaltet der Cluster seine eigenen Updates, einschließlich Updates für Red Hat Enterprise Linux CoreOS (RHCOS) auf den Cluster-Knoten. Sie können Upgrades für Ihren Cluster ganz einfach über die Webkonsole oder mit dem Befehl oc adm upgrade
in der OpenShift-CLI durchführen und die Operatoren aktualisieren sich automatisch. Wenn Ihr OpenShift Container Platform 4.10-Cluster über RHEL-Worker-Maschinen verfügt, müssen Sie dennoch ein Ansible-Playbook ausführen, um diese Worker-Maschinen zu aktualisieren.
Weitere Informationen finden Sie unter Aktualisieren von Clustern.
3.3. Überlegungen zur Migration Link kopierenLink in die Zwischenablage kopiert!
Überprüfen Sie die Änderungen und andere Überlegungen, die Ihren Umstieg von OpenShift Container Platform 3.11 zu OpenShift Container Platform 4 beeinflussen könnten.
3.3.1. Überlegungen zum Speicher Link kopierenLink in die Zwischenablage kopiert!
Prüfen Sie die folgenden Speicheränderungen, die beim Übergang von OpenShift Container Platform 3.11 auf OpenShift Container Platform 4.10 zu berücksichtigen sind.
Lokaler persistenter Volume-Speicher
Lokaler Speicher wird in OpenShift Container Platform 4.10 nur durch die Verwendung des Local Storage Operator unterstützt. Es wird nicht unterstützt, die lokale Provisionierungsmethode von OpenShift Container Platform 3.11 zu verwenden.
Weitere Informationen finden Sie unter Persistenter Speicher mit lokalen Volumes.
Persistenter FlexVolume-Speicher
Der Speicherort des FlexVolume-Plug-ins in OpenShift Container Platform 3.11 wurde geändert. Der neue Speicherort in OpenShift Container Platform 4.10 ist /etc/kubernetes/kubelet-plugins/volume/exec
. Anfügbare FlexVolume-Plug-ins werden nicht mehr unterstützt.
Weitere Informationen finden Sie unter Persistenter Speicher mit FlexVolume.
Container Storage Interface (CSI) – persistenter Speicher
Der persistente Speicher unter Verwendung des Container Storage Interface (CSI) war eine Technologievorschau in OpenShift Container Platform 3.11. OpenShift Container Platform 4.10 enthält mehrere CSI-Treiber. Sie können auch einen eigenen Treiber installieren.
Weitere Informationen finden Sie unter Persistenter Speicher mit dem Container Storage Interface (CSI).
Red Hat OpenShift Container Storage
Red Hat OpenShift Container Storage 3 kann mit OpenShift Container Platform 3.11 verwendet werden und nutzt Red Hat Gluster Storage als Reservespeicher.
Red Hat OpenShift Container Storage 4 kann mit OpenShift Container Platform 4 verwendet werden und nutzt Red Hat Ceph Storage als Reservespeicher.
Weitere Informationen finden Sie unter Persistenter Speicher mit Red Hat OpenShift Container Storage und im Artikel zur Interoperabilitätsmatrix.
Nicht unterstützte persistente Speicheroptionen
Die Unterstützung für die folgenden persistenten Speicheroptionen von OpenShift Container Platform 3.11 hat sich in OpenShift Container Platform 4.10 geändert:
- GlusterFS wird nicht mehr unterstützt.
- CephFS wird nicht mehr als eigenständiges Produkt unterstützt.
- Ceph RBD wird nicht mehr als eigenständiges Produkt unterstützt.
Wenn Sie eine dieser Optionen in OpenShift Container Platform 3.11 verwendet haben, müssen Sie für eine vollständige Unterstützung in OpenShift Container Platform 4.10 eine andere Option für persistenten Speicher wählen.
Weitere Informationen finden Sie unter Informationen zu persistentem Speicher.
3.3.2. Überlegungen zur Vernetzung Link kopierenLink in die Zwischenablage kopiert!
Überprüfen Sie die folgenden Vernetzungsänderungen, die beim Umstieg von OpenShift Container Platform 3.11 auf OpenShift Container Platform 4.10 zu berücksichtigen sind.
Netzwerk-Isolationsmodus
Der standardmäßige Netzwerk-Isolationsmodus für OpenShift Container Platform 3.11 war ovs-subnet
, auch wenn die Benutzer häufig zu ovn-multitenant
wechselten. Der standardmäßige Netzwerk-Isolationsmodus für OpenShift Container Platform 4.10 wird durch eine Netzwerkrichtlinie gesteuert.
Wenn Ihr OpenShift Container Platform 3.11-Cluster den ovs-subnet
- oder ovs-multitenant
-Modus verwendet hat, empfiehlt es sich, für Ihren OpenShift Container Platform 4.10-Cluster zu einer Netzwerkrichtlinie zu wechseln. Netzwerkrichtlinien haben eine Upstream-Unterstützung, sind flexibler und bieten dieselbe Funktionalität wie ovs-multitenant
. Wenn Sie das ovs-multitenant
-Verhalten beibehalten möchten, während Sie eine Netzwerkrichtlinie in OpenShift Container Platform 4.10 verwenden, folgen Sie den Schritten zur Konfiguration der Multitenant-Isolation mit der Netzwerkrichtlinie.
Weitere Informationen finden Sie unter Informationen zu Netzwerkrichtlinien.
3.3.3. Überlegungen zur Protokollierung Link kopierenLink in die Zwischenablage kopiert!
Überprüfen Sie die folgenden Änderungen bei der Protokollierung, die beim Umstieg von OpenShift Container Platform 3.11 auf OpenShift Container Platform 4.10 zu beachten sind.
Bereitstellung von OpenShift Logging
OpenShift Container Platform 4 bietet einen einfachen Bereitstellungsmechanismus für OpenShift Logging, indem eine benutzerdefinierte Cluster Logging-Ressource verwendet wird.
Weitere Informationen finden Sie unter Installieren von OpenShift Logging.
Aggregierte Protokolldaten
Sie können Ihre aggregierten Protokolldaten von OpenShift Container Platform 3.11 nicht in Ihren neuen OpenShift Container Platform 4-Cluster übertragen.
Weitere Informationen finden Sie unter Informationen zu OpenShift Logging.
Nicht unterstützte Protokollierungskonfigurationen
Einige Protokollierungskonfigurationen, die in OpenShift Container Platform 3.11 verfügbar waren, werden in OpenShift Container Platform 4.10 nicht mehr unterstützt.
Weitere Informationen zu den explizit nicht unterstützten Anwendungsfällen der Protokollierung finden Sie unter Wartung und Unterstützung.
3.3.4. Überlegungen zur Sicherheit Link kopierenLink in die Zwischenablage kopiert!
Überprüfen Sie die folgenden Sicherheitsänderungen, die Sie beim Umstieg von OpenShift Container Platform 3.11 auf OpenShift Container Platform 4.10 berücksichtigen sollten.
Nicht authentifizierter Zugriff auf Discovery-Endpunkte
In OpenShift Container Platform 3.11 konnte ein nicht authentifizierter Benutzer auf die Discovery-Endpunkte zugreifen (z. B. /api/*
und /apis/*
). Aus Sicherheitsgründen ist der nicht authentifizierte Zugriff auf die Discovery-Endpunkte in OpenShift Container Platform 4.10 nicht mehr erlaubt. Wenn Sie den nicht authentifizierten Zugriff zulassen müssen, können Sie die RBAC-Einstellungen nach Bedarf konfigurieren; beachten Sie jedoch die Sicherheitsauswirkungen, da dadurch interne Clusterkomponenten für das externe Netzwerk zugänglich gemacht werden können.
Identitätsanbieter
Die Konfiguration für Identitätsanbieter hat sich in OpenShift Container Platform 4 geändert, einschließlich der folgenden nennenswerten Änderungen:
- Der Request-Header-Identitätsanbieter in OpenShift Container Platform 4.10 erfordert wechselseitige TLS, während dies in OpenShift Container Platform 3.11 nicht der Fall war.
-
Die Konfiguration des OpenID-Connect-Identitätsanbieters wurde in OpenShift Container Platform 4.10 vereinfacht. Es werden nun Daten bezogen, die zuvor in OpenShift Container Platform 3.11 angegeben vom Endpunkt
/.well-known/openid-configuration
des Anbieters angegeben werden mussten.
Weitere Informationen finden Sie unter Informationen zur Identitätsanbieterkonfiguration.
OAuth-Token-Speicherformat
Neu erstellte OAuth-HTTP-Bearer-Tokens stimmen nicht mehr mit den Namen der entsprechenden OAuth-Zugriffstoken-Objekte überein. Die Objektnamen sind jetzt ein Hash des Bearer-Tokens und sind nicht mehr vertraulich. Dadurch verringert sich das Risiko, dass vertrauliche Informationen nach außen dringen.
3.3.5. Überlegungen zur Überwachung Link kopierenLink in die Zwischenablage kopiert!
Überprüfen Sie die folgenden Überwachungsänderungen, die beim Umstieg von OpenShift Container Platform 3.11 auf OpenShift Container Platform 4.10 zu beachten sind.
Warnmeldung zur Verfügbarkeit der Überwachungs-Infrastruktur
Die Standard-Warnmeldung, die ausgelöst wird, um die Verfügbarkeit der Überwachungsstruktur sicherzustellen, wurde in OpenShift Container Platform 3.11 DeadMansSwitch
genannt. Dieser wurde in OpenShift Container Platform 4 in Watchdog
umbenannt. Wenn Sie die PagerDuty-Integration für diesen Alarm in OpenShift Container Platform 3.11 eingerichtet haben, müssen Sie die PagerDuty-Integration für den Watchdog-Alarm
in OpenShift Container Platform 4 einrichten.
Weitere Informationen finden Sie unter Anwenden einer benutzerdefinierten Alertmanager-Konfiguration.
Kapitel 4. Überlegungen zum Netzwerk Link kopierenLink in die Zwischenablage kopiert!
Überprüfen Sie die nach der Migration verfügbaren Methoden zur Umleitung des Netzwerkverkehrs Ihrer Anwendung.
4.1. DNS-Überlegungen Link kopierenLink in die Zwischenablage kopiert!
Die DNS-Domain des Ziel-Clusters unterscheidet sich von der Domain des Quell-Clusters. Standardmäßig erhalten die Anwendungen nach der Migration die Fully Qualified Domain Names (FQDNs) des Ziel-Clusters.
Um die Quell-DNS-Domain der migrierten Anwendungen beizubehalten, wählen Sie eine der beiden unten beschriebenen Optionen.
4.1.1. Isolation der DNS-Domain des Ziel-Clusters von den Clients Link kopierenLink in die Zwischenablage kopiert!
Sie können zulassen, dass die an die DNS-Domain des Quell-Clusters gesendeten Anfragen der Clients die DNS-Domain des Ziel-Clusters erreichen, ohne dass der Ziel-Cluster für die Clients zugänglich gemacht wird.
Vorgehensweise
- Platzieren Sie eine externe Netzwerkkomponente, wie z. B. einen Anwendungs-Lastenverteiler oder einen Reverse-Proxy, zwischen den Clients und dem Ziel-Cluster.
- Aktualisieren Sie den FQDN der Anwendung auf dem Quell-Cluster im DNS-Server, um die IP-Adresse der externen Netzwerkkomponente zurückzugeben.
- Konfigurieren Sie die Netzwerkkomponente so, dass sie für die Anwendung in der Quell-Domain empfangene Anfragen an den Lastenverteiler in der Ziel-Cluster-Domain sendet.
-
Erstellen Sie einen Platzhalter-DNS-Eintrag für die Domain
*.apps.source.example.com
, der auf die IP-Adresse des Lastenverteilers des Quell-Clusters verweist. - Erstellen Sie für jede Anwendung einen DNS-Eintrag, der auf die IP-Adresse der externen Netzwerkkomponente vor dem Ziel-Cluster verweist. Ein spezifischer DNS-Eintrag hat eine höhere Priorität als ein Platzhalter-Eintrag, sodass bei der Auflösung des FQDN der Anwendung kein Konflikt entsteht.
- Die externe Netzkomponente muss alle sicheren TLS-Verbindungen beenden. Wenn die Verbindungen zum Lastenverteiler des Ziel-Clusters weitergeleitet werden, ist der FQDN der Zielanwendung für den Client zugänglich und es treten Zertifikatsfehler auf.
- Die Anwendungen dürfen den Clients keine Links zurückgeben, die auf die Ziel-Cluster-Domain verweisen. Andernfalls könnten Teile der Anwendung nicht geladen werden oder nicht richtig funktionieren.
4.1.2. Einrichten des Ziel-Clusters zur Annahme der Quell-DNS-Domain Link kopierenLink in die Zwischenablage kopiert!
Sie können den Ziel-Cluster so einrichten, dass er Anfragen für eine migrierte Anwendung in der DNS-Domain des Quell-Clusters annimmt.
Vorgehensweise
Führen Sie sowohl für den nicht sicheren HTTP-Zugang als auch für den sicheren HTTPS-Zugang die folgenden Schritte durch:
Erstellen Sie im Projekt des Ziel-Clusters eine Route, die so konfiguriert ist, dass sie Anfragen annimmt, die an den FQDN der Anwendung im Quell-Cluster gerichtet sind:
oc expose svc <app1-svc> --hostname <app1.apps.source.example.com> \ -n <app1-namespace>
$ oc expose svc <app1-svc> --hostname <app1.apps.source.example.com> \ -n <app1-namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mit dieser neuen Route nimmt der Server jede Anfrage für diesen FQDN an und sendet sie an die entsprechenden Anwendungs-Pods. Darüber hinaus wird bei der Migration der Anwendung eine weitere Route in der Ziel-Cluster-Domain erstellt. Anfragen erreichen die migrierte Anwendung über einen dieser beiden Hostnamen.
Erstellen Sie einen DNS-Eintrag bei Ihrem DNS-Anbieter, der den FQDN der Anwendung im Quell-Cluster auf die IP-Adresse des Standard-Lastenverteilers des Ziel-Clusters verweist. Dadurch wird der Datenverkehr von Ihrem Quell-Cluster zu Ihrem Ziel-Cluster umgeleitet.
Der FQDN der Anwendung wird zum Lastenverteiler des Ziel-Clusters aufgelöst. Der standardmäßige Ingress-Controller-Router akzeptiert Anfragen für diesen FQDN, da eine Route für diesen Hostnamen zugänglich ist.
Für einen sicheren HTTPS-Zugang führen Sie den folgenden zusätzlichen Schritt durch:
- Ersetzen Sie das x509-Zertifikat des standardmäßigen Ingress-Controllers, das während des Installationsvorgangs erstellt wurde, durch ein benutzerdefiniertes Zertifikat.
Konfigurieren Sie dieses Zertifikat so, dass es die Platzhalter-DNS-Domains für den Quell- und den Ziel-Cluster im Feld
subjectAltName
enthält.Das neue Zertifikat ist für die Sicherung von Verbindungen gültig, die über eine der beiden DNS-Domains hergestellt werden.
4.2. Methoden zur Umleitung des Netzwerkverkehrs Link kopierenLink in die Zwischenablage kopiert!
Nach einer erfolgreichen Migration müssen Sie den Netzwerkverkehr Ihrer zustandslosen Anwendungen vom Quell-Cluster zum Ziel-Cluster umleiten.
Die Methoden zur Umleitung des Netzwerkverkehrs beruhen auf folgenden Annahmen:
- Die Anwendungspods werden sowohl auf dem Quell- als auch auf dem Ziel-Cluster ausgeführt.
- Jede Anwendung hat eine Route, die den Hostnamen des Quell-Clusters enthält.
- Die Route mit dem Hostnamen des Quell-Clusters enthält ein CA-Zertifikat.
- Bei HTTPS enthält das CA-Zielzertifikat des Routers einen Subject Alternative Name für den Platzhalter-DNS-Eintrag des Quell-Clusters.
Ziehen Sie die folgenden Methoden in Betracht und wählen Sie diejenige aus, die Ihrer Zielsetzung entspricht.
Gleichzeitige Umleitung des gesamten Netzwerkverkehrs für alle Anwendungen
Ändern Sie den Platzhalter-DNS-Eintrag des Quell-Clusters so, dass er auf die virtuelle IP-Adresse (VIP) des Ziel-Cluster-Routers zeigt.
Diese Methode eignet sich für einfache Anwendungen oder kleine Migrationen.
Umleitung des Netzwerkverkehrs für einzelne Anwendungen
Erstellen Sie für jede Anwendung einen DNS-Eintrag, wobei der Hostname des Quell-Clusters auf die VIP des Ziel-Cluster-Routers verweist. Dieser DNS-Eintrag hat Vorrang vor dem Platzhalter-DNS-Eintrag.
Schrittweise Umleitung des Netzwerkverkehrs für einzelne Anwendungen
- Erstellen Sie einen Proxy, der den Netzwerkverkehr für jede Anwendung sowohl an die VIP des Quell-Cluster-Routers als auch an die VIP des Ziel-Cluster-Routers weiterleiten kann.
- Erstellen Sie für jede Anwendung einen DNS-Eintrag mit dem Hostnamen des Quell-Clusters, der auf den Proxy verweist.
- Konfigurieren Sie den Proxy-Eintrag für die Anwendung so, dass ein bestimmter Prozentsatz des Netzwerkverkehrs an die VIP des Ziel-Cluster-Routers und der Rest des Datenverkehrs an das VIP des Quell-Cluster-Routers geleitet wird.
- Erhöhen Sie schrittweise den Prozentsatz des Netzwerkverkehrs, den Sie an die VIP des Ziel-Cluster-Routers weiterleiten, bis der gesamte Netzwerkverkehr umgeleitet ist.
Benutzerbasierte Umleitung des Netzwerkverkehrs für einzelne Anwendungen
Mit dieser Methode können Sie TCP/IP-Header von Benutzeranfragen filtern, um den Netzwerkverkehr für vordefinierte Gruppen von Benutzern umzuleiten. Auf diese Weise können Sie den Umleitungsvorgang an bestimmten Benutzergruppen testen, bevor Sie den gesamten Netzwerkverkehr umleiten.
- Erstellen Sie einen Proxy, der den Netzwerkverkehr für jede Anwendung sowohl an die VIP des Quell-Cluster-Routers als auch an die VIP des Ziel-Cluster-Routers weiterleiten kann.
- Erstellen Sie für jede Anwendung einen DNS-Eintrag mit dem Hostnamen des Quell-Clusters, der auf den Proxy verweist.
-
Konfigurieren Sie den Proxy-Eintrag für die Anwendung so, dass Netzwerkverkehr, der einem bestimmten Header-Muster entspricht, z. B.
test customers
, an die VIP des Ziel-Cluster-Routers und der restliche Datenverkehr an die VIP des Quell-Cluster-Routers geleitet wird. - Leiten Sie den Netzwerkverkehr schrittweise auf die VIP des Ziel-Cluster-Routers um, bis der gesamte Netzwerkverkehr auf der VIP des Ziel-Cluster-Routers läuft.
Kapitel 5. Informationen zum Migration Toolkit for Containers Link kopierenLink in die Zwischenablage kopiert!
Mit dem Migration Toolkit for Containers (MTC) können Sie zustandsbehaftete Anwendungs-Workloads von OpenShift Container Platform 3 zu 4.10 auf der Granularität eines Namespaces migrieren.
Bevor Sie mit der Migration beginnen, sollten Sie sich über die Unterschiede zwischen OpenShift Container Platform 3 und 4 informieren.
MTC bietet eine Webkonsole und eine API, die auf benutzerdefinierten Kubernetes-Ressourcen basiert, um die Migration zu steuern und die Ausfallzeiten von Anwendungen zu minimieren.
Die MTC-Konsole wird standardmäßig auf dem Ziel-Cluster installiert. Sie können den Migration Toolkit for Containers Operator so konfigurieren, dass die Konsole auf einem Quell-Cluster der OpenShift Container Platform 3 oder auf einem Remote-Cluster installiert wird.
MTC unterstützt die Dateisystem- und Schnappschuss-Datenkopiermethoden für die Migration von Daten aus dem Quell-Cluster in den Ziel-Cluster. Sie können eine Methode wählen, die für Ihre Umgebung geeignet ist und von Ihrem Speicheranbieter unterstützt wird.
Der Servicekatalog wird in OpenShift Container Platform 4 eingestellt. Sie können Workload-Ressourcen, die mit dem Servicekatalog bereitgestellt wurden, von OpenShift Container Platform 3 zu 4 migrieren, aber Sie können nach der Migration keine Servicekatalog-Aktionen wie provision
, deprovision
oder update
für diese Workloads durchführen. Die MTC-Konsole zeigt eine Meldung an, wenn die Servicekatalogressourcen nicht migriert werden können.
5.1. Terminologie Link kopierenLink in die Zwischenablage kopiert!
Begriff | Definition |
---|---|
Quellen-Cluster | Cluster, aus dem die Anwendungen migriert werden. |
Ziel-Cluster[1] | Cluster, in den die Anwendungen migriert werden. |
Replikations-Repository | Objektspeicher zum Kopieren von Images, Volumes und Kubernetes-Objekten bei indirekter Migration oder für Kubernetes-Objekte bei Direct Volume Migration oder Direct Image Migration. Das Replikations-Repository muss für alle Cluster zugänglich sein. |
Host-Cluster |
Cluster, auf dem der Pod Der Host-Cluster benötigt keine zur Verfügung gestellte Registrierungsroute für die Direct Image Migration. |
Remote-Cluster | Ein Remote-Cluster ist normalerweise der Quell-Cluster, dies ist jedoch nicht erforderlich.
Für einen Remote-Cluster ist eine benutzerdefinierte Ressource Ein Remote-Cluster erfordert eine zur Verfügung gestellte sichere Registrierungsroute für die Direct Image Migration. |
Indirekte Migration | Images, Volumes und Kubernetes-Objekte werden vom Quell-Cluster in das Replikations-Repository und anschließend vom Replikations-Repository in den Ziel-Cluster kopiert. |
Direct Volume Migration | Persistent Volumes werden direkt vom Quell-Cluster auf den Ziel-Cluster kopiert. |
Direct Image Migration | Die Bilder werden direkt vom Quell-Cluster auf den Ziel-Cluster kopiert. |
Stage-Migration | Die Daten werden auf den Ziel-Cluster kopiert, ohne dass die Anwendung angehalten wird. Die mehrfache Ausführung einer Stage-Migration verkürzt die Dauer der Cutover-Migration. |
Cutover-Migration | Die Anwendung wird auf dem Quell-Cluster gestoppt und ihre Ressourcen werden auf den Ziel-Cluster migriert. |
State-Migration | Der Anwendungszustand wird migriert, indem bestimmte Persistent Volume Claims und Kubernetes-Objekte auf den Ziel-Cluster kopiert werden. |
Rollback-Migration | Die Rollback-Migration setzt eine abgeschlossene Migration zurück. |
1 Rufen Sie den Zielcluster in der MTC-Webkonsole auf.
5.2. MTC-Workflow Link kopierenLink in die Zwischenablage kopiert!
Sie können Kubernetes-Ressourcen, Persistent Volume-Daten und interne Container-Images auf OpenShift Container Platform 4.10 migrieren, indem Sie die MTC-Webkonsole (Migration Toolkit for Containers) oder die Kubernetes-API verwenden.
MTC migriert die folgenden Ressourcen:
- Ein in einem Migrationsplan angegebener Namespace.
Namespace-gebundene Ressourcen: Wenn der MTC einen Namespace migriert, migriert er alle mit diesem Namespace verbundenen Objekte und Ressourcen, wie z. B. Dienste oder Pods. Wenn außerdem eine Ressource, die im Namespace, aber nicht auf Cluster-Ebene existiert, von einer Ressource abhängt, die auf Cluster-Ebene existiert, migriert das MTC beide Ressourcen.
Ein Security Context Constraint (SCC) ist beispielsweise eine Ressource, die auf Cluster-Ebene existiert, und ein Service Account (SA) ist eine Ressource, die auf Namespace-Ebene existiert. Wenn ein SA in einem Namespace existiert, den das MTC migriert, findet der MTC automatisch alle SCCs, die mit dem SA verknüpft sind, und migriert auch diese SCCs. In ähnlicher Weise migriert der MTC Persistent Volume Claims, die mit den Persistent Volumes des Namespace verknüpft sind.
AnmerkungCluster-gebundene Ressourcen müssen je nach Ressource möglicherweise manuell migriert werden.
- Custom Resources (CRs) und Custom Resource Definitions (CRDs): MTC migriert automatisch CRs und CRDs auf Namespace-Ebene.
Die Migration einer Anwendung mit der MTC-Webkonsole umfasst die folgenden Schritte:
Installieren Sie den Migration Toolkit for Containers Operator auf allen Clustern.
Sie können den Migration Toolkit for Containers Operator in einer eingeschränkten Umgebung mit begrenztem oder keinem Internetzugang installieren. Die Quell- und Ziel-Cluster müssen über einen Netzwerkzugang zueinander und zu einer Spiegelregistrierung verfügen.
Konfigurieren Sie das Replikations-Repository, einen temporären Objektspeicher, den MTC für die Datenmigration verwendet.
Quell- und Ziel-Cluster müssen während der Migration Netzwerkzugriff auf das Replikations-Repository haben. Wenn Sie einen Proxyserver verwenden, müssen Sie ihn so konfigurieren, dass der Netzwerkverkehr zwischen dem Replikations-Repository und den Clustern zugelassen wird.
- Fügen Sie den Quell-Cluster zur MTC-Webkonsole hinzu.
- Fügen Sie das Replikations-Repository zur MTC-Webkonsole hinzu.
Erstellen Sie einen Migrationsplan mit einer der folgenden Datenmigrationsoptionen:
Copy: MTC kopiert die Daten aus dem Quell-Cluster in das Replikations-Repository und aus dem Replikations-Repository in den Ziel-Cluster.
AnmerkungBei der Direct Image Migration oder der Direct Volume Migration werden die Images oder Volumes direkt vom Quell-Cluster auf den Ziel-Cluster kopiert.
Move: MTC gebt die Bereitstellung eines Remote-Volume auf, z. B. NFS auf dem Quell-Cluster, erstellt eine PV-Ressource auf dem Ziel-Cluster, die auf das Remote-Volume zeigt, und stellt dann das Remote-Volume auf dem Ziel-Cluster bereit. Anwendungen, die auf dem Ziel-Cluster ausgeführt werden, verwenden dasselbe Remote-Volume, das auch der Quell-Cluster verwendet hat. Das Remote-Volume muss für den Quell- und den Ziel-Cluster zugänglich sein.
AnmerkungObwohl das Replikations-Repository in diesem Diagramm nicht angezeigt wird, ist es für die Migration erforderlich.
Führen Sie den Migrationsplan mit einer der folgenden Optionen aus:
Stage kopiert Daten auf den Ziel-Cluster, ohne die Anwendung anzuhalten.
Eine Stage-Migration kann mehrfach durchgeführt werden, sodass die meisten Daten vor der Migration auf das Ziel kopiert werden. Die Durchführung einer oder mehrerer Stage-Migrationen verkürzt die Dauer der Cutover-Migration.
Cutover stoppt die Anwendung auf dem Quell-Cluster und verschiebt die Ressourcen auf den Ziel-Cluster.
Optional: Sie können das Kontrollkästchen Halt transactions on the source cluster during migration deaktivieren.
5.3. Informationen zu Datenkopiermethoden Link kopierenLink in die Zwischenablage kopiert!
Das Migration Toolkit for Containers (MTC) unterstützt die Dateisystem- und Schnappschuss-Datenkopiermethoden für die Migration von Daten aus dem Quell-Cluster in den Ziel-Cluster. Sie können eine Methode wählen, die für Ihre Umgebung geeignet ist und von Ihrem Speicheranbieter unterstützt wird.
5.3.1. Dateisystem-Kopiermethode Link kopierenLink in die Zwischenablage kopiert!
MTC kopiert Datendateien aus dem Quell-Cluster in das Replikations-Repository und von dort in den Ziel-Cluster.
Die Dateisystem-Kopiermethode verwendet Restic für die indirekte Migration oder Rsync für die Direct Volume Migration.
Vorteile | Einschränkungen |
---|---|
|
|
5.3.2. Schnappschuss-Kopiermethode Link kopierenLink in die Zwischenablage kopiert!
MTC kopiert einen Schnappschuss der Daten des Quell-Clusters in das Replikations-Repository eines Cloud-Anbieters. Die Daten werden auf dem Ziel-Cluster wiederhergestellt.
Die Schnappschuss-Kopiermethode kann mit Amazon Web Services, Google Cloud Provider und Microsoft Azure verwendet werden.
Vorteile | Einschränkungen |
---|---|
|
|
5.4. Direct Volume Migration und Direct Image Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können die Direct Image Migration (DIM) und die Direct Volume Migration (DVM) verwenden, um Images und Daten direkt vom Quell-Cluster zum Ziel-Cluster zu migrieren.
Wenn Sie die DVM mit Knoten durchführen, die sich in unterschiedlichen Verfügbarkeitszonen befinden, kann die Migration fehlschlagen, weil die migrierten Pods nicht auf den Persistent Volume Claim zugreifen können.
Die DIM und DVM bieten erhebliche Leistungsvorteile, da die Zwischenschritte des Backups von Dateien aus dem Quell-Cluster in das Replikations-Repository und der Wiederherstellung von Dateien aus dem Replikations-Repository in den Ziel-Cluster übersprungen werden. Die Daten werden mit Rsync übertragen.
Für die DIM und DVM gibt es zusätzliche Voraussetzungen.
Kapitel 6. Installation des Migration Toolkit for Containers Link kopierenLink in die Zwischenablage kopiert!
Sie können das Migration Toolkit for Containers (MTC) auf OpenShift Container Platform 3 und 4 installieren.
Nach der Installation von Migration Toolkit for Containers Operator auf OpenShift Container Platform 4.10 mit Hilfe des Operator Lifecycle Managers installieren Sie manuell den Legacy Migration Toolkit for Containers Operator auf OpenShift Container Platform 3.
Standardmäßig werden die MTC-Webkonsole und der Pod Migration Controller
auf dem Ziel-Cluster ausgeführt. Sie können das Manifest der Custom Resource Migration Controller
so konfigurieren, dass die MTC-Webkonsole und der Pod Migration Controller
auf einem Quell-Cluster oder einem Remote-Cluster ausgeführt werden.
Nach der Installation von MTC müssen Sie einen Objektspeicher für die Verwendung als Replikations-Repository konfigurieren.
Informationen zur Deinstallation von MTC finden Sie unter Deinstallation von MTC und Löschen von Ressourcen.
6.1. Kompatibilitäts-Leitlinien Link kopierenLink in die Zwischenablage kopiert!
Sie müssen den Migration Toolkit for Containers (MTC) Operator installieren, der mit Ihrer OpenShift Container Platform-Version kompatibel ist.
Sie können MTC 1.6 nicht auf OpenShift Container Platform 4.5 oder früheren Versionen installieren, da die Versionen der Custom Resource Definition API nicht kompatibel sind.
Sie können Workloads von einem Quell-Cluster mit MTC 1.5.3 zu einem Ziel-Cluster mit MTC 1.6 migrieren, solange die benutzerdefinierte Ressource MigrationController
und die MTC-Webkonsole auf dem Ziel-Cluster ausgeführt werden.
Version der OpenShift Container Platform | MTC-Version | Migration Toolkit for Containers Operator |
---|---|---|
4.5 und früher | 1.5.3 |
Legacy Migration Toolkit for Containers Operator, manuell mit der Datei |
4.6 und später | Neueste Version 1.6.x von z-stream | Migration Toolkit for Containers Operator, installiert mit Operator Lifecycle Manager. |
6.2. Installation des Legacy Migration Toolkit for Containers Operator auf OpenShift Container Platform 3 Link kopierenLink in die Zwischenablage kopiert!
Sie können den Legacy Migration Toolkit for Containers Operator manuell auf OpenShift Container Platform 3 installieren.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein. -
Sie müssen Zugriff auf
registry.redhat.io
haben. -
Sie müssen
podman
installiert haben. - Sie müssen ein Image Stream-Geheimnis erstellen und es auf jeden Knoten im Cluster kopieren.
Vorgehensweise
Melden Sie sich mit Ihren Anmeldedaten für das Red Hat Customer Portal bei
registry.redhat.io
an:sudo podman login registry.redhat.io
$ sudo podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Laden Sie die Datei
operator.yml
herunter:sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/operator.yml ./
$ sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/operator.yml ./
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Laden Sie die Datei
controller.yml
herunter:sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/controller.yml ./
$ sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/controller.yml ./
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Melden Sie sich bei Ihrem OpenShift Container Platform 3-Cluster an.
Überprüfen Sie, ob sich der Cluster bei
registry.redhat.io
authentifizieren kann:oc run test --image registry.redhat.io/ubi8 --command sleep infinity
$ oc run test --image registry.redhat.io/ubi8 --command sleep infinity
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie das Objekt Migration Toolkit for Containers Operator:
oc create -f operator.yml
$ oc create -f operator.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Sie können die Meldung
Error from server (AlreadyExists)
ignorieren. Sie werden durch den Migration Toolkit for Containers Operator verursacht, der Ressourcen für frühere Versionen von OpenShift Container Platform 3 erstellt, die in späteren Versionen bereitgestellt werden.
Erstellen Sie das Objekt
MigrationController
:oc create -f controller.yml
$ oc create -f controller.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Überprüfen Sie, ob die MTC-Pods ausgeführt werden:
oc get pods -n openshift-migration
$ oc get pods -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. Installation von Migration Toolkit for Containers Operator auf OpenShift Container Platform 4.10 Link kopierenLink in die Zwischenablage kopiert!
Sie installieren den Migration Toolkit for Containers Operator auf OpenShift Container Platform 4.10 mit Hilfe des Operator Lifecycle Managers.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
- Klicken Sie in der Webkonsole der OpenShift Container Platform auf Operators → OperatorHub.
- Verwenden Sie das Feld Filter by keyword, um den Migration Toolkit for Containers Operator zu finden.
- Wählen Sie den Migration Toolkit for Containers Operator aus und klicken Sie auf Install.
Klicken Sie auf Install.
Auf der Seite Installed Operators wird der Migration Toolkit for Containers Operator im Projekt openshift-migration mit dem Status Succeeded angezeigt.
- Klicken Sie auf Migration Toolkit for Containers Operator.
- Suchen Sie unter Provided APIs die Kachel Migration Controller und klicken Sie auf Create Instance.
- Klicken Sie auf Create.
- Klicken Sie auf Workloads → Pods, um zu überprüfen, ob die MTC-Pods ausgeführt werden.
6.4. Konfigurieren von Proxys Link kopierenLink in die Zwischenablage kopiert!
Für OpenShift Container Platform 4.1 und frühere Versionen müssen Sie, nachdem Sie den Migration Toolkit for Containers Operator installiert haben, Proxys im Manifest der Custom Resource (CR) MigrationController
konfigurieren, da diese Versionen kein clusterweites Proxy
-Objekt unterstützen.
Für OpenShift Container Platform 4.2 bis 4.10 erbt das Migration Toolkit for Containers (MTC) die clusterweiten Proxy-Einstellungen. Sie können die Proxy-Parameter ändern, wenn Sie die clusterweiten Proxy-Einstellungen außer Kraft setzen wollen.
Sie müssen die Proxys so konfigurieren, dass sie das SPDY-Protokoll zulassen und den Header Upgrade HTTP
an den API-Server weiterleiten. Andernfalls wird die Fehlermeldung Upgrade request required
angezeigt. Die CR MigrationController
verwendet SPDY, um Befehle in Remote-Pods auszuführen. Der Header Upgrade HTTP
ist erforderlich, um eine Websocket-Verbindung mit dem API-Server zu öffnen.
Direct Volume Migration
Wenn Sie eine Direct Volume Migration (DVM) von einem Quell-Cluster hinter einem Proxy durchführen, müssen Sie einen Stunnel-Proxy konfigurieren. Stunnel erstellt einen transparenten Tunnel zwischen dem Quell- und dem Ziel-Cluster für die TCP-Verbindung, ohne die Zertifikate zu ändern.
Die DVM unterstützt nur einen Proxy. Der Quell-Cluster kann nicht auf die Route des Ziel-Clusters zugreifen, wenn sich der Ziel-Cluster ebenfalls hinter einem Proxy befindet.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
Rufen Sie das CR-Manifest
MigrationController
ab:oc get migrationcontroller <migration_controller> -n openshift-migration
$ oc get migrationcontroller <migration_controller> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie die Proxy-Parameter:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Stunnel-Proxy-URL für die Direct Volume Migration.
- 2
- Proxy-URL für die Erstellung von HTTP-Verbindungen außerhalb des Clusters. Das URL-Schema muss
http
sein. - 3
- Proxy-URL für die Erstellung von HTTPS-Verbindungen außerhalb des Clusters. Wenn dies nicht angegeben wird, wird
httpProxy
sowohl für HTTP- als auch für HTTPS-Verbindungen verwendet. - 4
- Durch Kommata getrennte Liste von Zieldomain-Namen, Domains, IP-Adressen oder anderen Netzwerk-CIDRs zum Ausschluss von Proxying.
Stellen Sie einer Domain ein
.
voran, um nur Subdomains zu finden. Zum Beispiel gibt es bei.y.com
eine Übereinstimmung mitx.y.com
, aber nicht mity.com
. Verwenden Sie*
, um den Proxy für alle Ziele zu umgehen. Wenn Sie Worker hochskalieren, die nicht in dem durch das Installationskonfigurationsfeldnetworking.machineNetwork[].cidr
definierten Netzwerk enthalten sind, müssen Sie sie zu dieser Liste hinzufügen, um Verbindungsprobleme zu vermeiden.Dieses Feld wird ignoriert, wenn weder das Feld
httpProxy
noch das FeldhttpsProxy
konfiguriert ist.-
Speichern Sie das Manifest als
migration-controller.yaml
. Wenden Sie das aktualisierte Manifest an:
oc replace -f migration-controller.yaml -n openshift-migration
$ oc replace -f migration-controller.yaml -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Weitere Informationen finden Sie unter Konfigurieren des clusterweiten Proxys.
6.5. Konfigurieren eines Replikations-Repositorys Link kopierenLink in die Zwischenablage kopiert!
Sie müssen einen Objektspeicher für die Verwendung als Replikations-Repository konfigurieren. Das Migration Toolkit for Containers (MTC) kopiert Daten aus dem Quell-Cluster in das Replikations-Repository und anschließend aus dem Replikations-Repository in den Ziel-Cluster.
MTC unterstützt die Dateisystem- und Schnappschuss-Datenkopiermethoden für die Migration von Daten aus dem Quell-Cluster in den Ziel-Cluster. Sie können eine Methode wählen, die für Ihre Umgebung geeignet ist und von Ihrem Speicheranbieter unterstützt wird.
Die folgenden Speicheranbieter werden unterstützt:
- Multicloud Object Gateway
- Amazon Web Services S3
- Google Cloud Platform
- Microsoft Azure Blob
- Generischer S3-Objektspeicher, z. B. Minio oder Ceph S3
6.5.1. Voraussetzungen Link kopierenLink in die Zwischenablage kopiert!
- Alle Cluster müssen ununterbrochenen Netzwerkzugriff zum Replikations-Repository haben.
- Wenn Sie einen Proxy-Server mit einem intern gehosteten Replikations-Repository verwenden, müssen Sie sicherstellen, dass der Proxy den Zugriff auf das Replikations-Repository erlaubt.
6.5.2. Abrufen von Anmeldedaten für Multicloud Object Gateway Link kopierenLink in die Zwischenablage kopiert!
Sie müssen die Anmeldedaten für Multicloud Object Gateway (MCG) und den S3-Endpunkt abrufen, um MCG als Replikations-Repository für das Migration Toolkit for Containers (MTC) zu konfigurieren. Sie müssen die Anmeldedaten für Multicloud Object Gateway (MCG) abrufen, um eine Secret
Custom Resource (CR) für die OpenShift API for Data Protection (OADP) zu erstellen.
MCG ist eine Komponente von OpenShift Container Storage.
Voraussetzungen
- Sie müssen OpenShift Container Storage mit Hilfe der entsprechenden Bereitstellungsanleitung für OpenShift Container Storage bereitstellen.
Vorgehensweise
Ermitteln Sie den S3-Endpunkt, die
AWS_ACCESS_KEY_ID
und denAWS_SECRET_ACCESS_KEY
, indem Sie den Befehldescribe
für die benutzerdefinierteNooBaa
-Ressource ausführen.Sie verwenden diese Anmeldedaten, um MCG als Replikations-Repository hinzuzufügen.
6.5.3. Konfigurieren von Amazon Web Services Link kopierenLink in die Zwischenablage kopiert!
Sie konfigurieren den S3-Objektspeicher von Amazon Web Services (AWS) als Replikations-Repository für das Migration Toolkit for Containers (MTC).
Voraussetzungen
- Sie müssen die AWS CLI installiert haben.
- Der Speicher-Bucket für AWS S3 muss für den Quell- und den Ziel-Cluster zugänglich sein.
Wenn Sie die Schnappschuss-Kopiermethode verwenden:
- Sie müssen Zugang zu EC2 Elastic Block Storage (EBS) haben.
- Der Quell- und der Ziel-Cluster müssen sich in derselben Region befinden.
- Die Quell- und Ziel-Cluster müssen dieselbe Speicherklasse haben.
- Die Speicherklasse muss mit Schnappschüssen kompatibel sein.
Vorgehensweise
Legen Sie die Variable
BUCKET
fest:BUCKET=<your_bucket>
$ BUCKET=<your_bucket>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Legen Sie die Variable
REGION
fest:REGION=<your_region>
$ REGION=<your_region>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie einen AWS S3-Bucket:
aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION
$ aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
us-east-1
unterstützt keinenLocationConstraint
. Wenn Ihre Regionus-east-1
ist, lassen Sie--create-bucket-configuration LocationConstraint=$REGION
weg.
Erstellen Sie einen IAM-Benutzer:
aws iam create-user --user-name velero
$ aws iam create-user --user-name velero
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Wenn Sie Velero für die Sicherung mehrerer Cluster mit mehreren S3-Buckets verwenden möchten, erstellen Sie für jeden Cluster einen eindeutigen Benutzernamen.
Erstellen Sie die Datei
velero-policy.json
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Fügen Sie die Richtlinien hinzu, um dem Benutzer
velero
die erforderlichen Berechtigungen zu erteilen:aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
$ aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie einen Zugriffsschlüssel für den Benutzer
velero
:aws iam create-access-key --user-name velero
$ aws iam create-access-key --user-name velero
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Halten Sie den
AWS_SECRET_ACCESS_KEY
und dieAWS_ACCESS_KEY_ID
fest. Sie benötigen die Anmeldedaten, um AWS als Replikations-Repository hinzuzufügen.
6.5.4. Konfigurieren von Google Cloud Platform Link kopierenLink in die Zwischenablage kopiert!
Sie konfigurieren einen Speicher-Bucket von Google Cloud Platform (GCP) als Replikations-Repository für das Migration Toolkit for Containers (MTC).
Voraussetzungen
-
Sie müssen die CLI-Tools
gcloud
undgsutil
installiert haben. Einzelheiten finden Sie in der Dokumentation für Google Cloud. - Der GCP-Speicher-Bucket muss für den Quell- und den Ziel-Cluster zugänglich sein.
Wenn Sie die Schnappschuss-Kopiermethode verwenden:
- Der Quell- und der Ziel-Cluster müssen sich in derselben Region befinden.
- Die Quell- und Ziel-Cluster müssen dieselbe Speicherklasse haben.
- Die Speicherklasse muss mit Schnappschüssen kompatibel sein.
Vorgehensweise
Melden Sie sich bei GCP an:
gcloud auth login
$ gcloud auth login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Legen Sie die Variable
BUCKET
fest:BUCKET=<bucket>
$ BUCKET=<bucket>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie den Namen Ihres Buckets an.
Erstellen Sie den Speicher-Bucket:
gsutil mb gs://$BUCKET/
$ gsutil mb gs://$BUCKET/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Legen Sie für die Variable
PROJECT_ID
Ihr aktives Projekt fest:PROJECT_ID=$(gcloud config get-value project)
$ PROJECT_ID=$(gcloud config get-value project)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie einen Service Account:
gcloud iam service-accounts create velero \ --display-name "Velero service account"
$ gcloud iam service-accounts create velero \ --display-name "Velero service account"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Listen Sie Ihre Service Accounts auf:
gcloud iam service-accounts list
$ gcloud iam service-accounts list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Legen Sie für die Variable
SERVICE_ACCOUNT_EMAIL
den entsprechendenemail
-Wert fest:SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')
$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Fügen Sie die Richtlinien hinzu, um dem Benutzer
velero
die erforderlichen Berechtigungen zu erteilen:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie die benutzerdefinierte Rolle
velero.server
:gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
$ gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Fügen Sie dem Projekt eine IAM-Richtlinienbindung hinzu:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server
$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie den IAM-Service Account:
gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Speichern Sie die Schlüssel des IAM-Service Accounts in der Datei
credentials-velero
im aktuellen Verzeichnis:gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL
$ gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Sie verwenden die Datei
credentials-velero
, um GCP als Replikations-Repository hinzuzufügen.
6.5.5. Konfigurieren von Microsoft Azure Link kopierenLink in die Zwischenablage kopiert!
Sie konfigurieren einen Microsoft Azure Blob-Speichercontainer als Replikations-Repository für das Migration Toolkit for Containers (MTC).
Voraussetzungen
- Sie müssen die Azure CLI installiert haben.
- Der Azure Blob-Speichercontainer muss für den Quell- und den Ziel-Cluster zugänglich sein.
Wenn Sie die Schnappschuss-Kopiermethode verwenden:
- Der Quell- und der Ziel-Cluster müssen sich in derselben Region befinden.
- Die Quell- und Ziel-Cluster müssen dieselbe Speicherklasse haben.
- Die Speicherklasse muss mit Schnappschüssen kompatibel sein.
Vorgehensweise
Melden Sie sich bei Azure an:
az login
$ az login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Legen Sie die Variable
AZURE_RESOURCE_GROUP
fest:AZURE_RESOURCE_GROUP=Velero_Backups
$ AZURE_RESOURCE_GROUP=Velero_Backups
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie eine Azure-Ressourcengruppe:
az group create -n $AZURE_RESOURCE_GROUP --location CentralUS
$ az group create -n $AZURE_RESOURCE_GROUP --location CentralUS
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie Ihren Standort an.
Legen Sie die Variable
AZURE_STORAGE_ACCOUNT_ID
fest:AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
$ AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie ein Azure-Speicherkonto:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Legen Sie die Variable
BLOB_CONTAINER
fest:BLOB_CONTAINER=velero
$ BLOB_CONTAINER=velero
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie einen Azure Blob-Speichercontainer:
az storage container create \ -n $BLOB_CONTAINER \ --public-access off \ --account-name $AZURE_STORAGE_ACCOUNT_ID
$ az storage container create \ -n $BLOB_CONTAINER \ --public-access off \ --account-name $AZURE_STORAGE_ACCOUNT_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie einen Service Principal und Anmeldedaten für
velero
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Speichern Sie die Anmeldedaten des Service Principal in der Datei
credentials-velero
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Sie verwenden die Datei
credentials-velero
, um Azure als Replikations-Repository hinzuzufügen.
6.6. Deinstallation des MTC und Löschen von Ressourcen Link kopierenLink in die Zwischenablage kopiert!
Sie können das Migration Toolkit for Containers (MTC) deinstallieren und seine Ressourcen löschen, um den Cluster zu bereinigen.
Durch das Löschen der velero
-CRDs wird Velero aus dem Cluster entfernt.
Voraussetzungen
-
Sie müssen als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
Löschen Sie die benutzerdefinierte Ressource (CR)
MigrationController
auf allen Clustern:oc delete migrationcontroller <migration_controller>
$ oc delete migrationcontroller <migration_controller>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Deinstallieren Sie den Migration Toolkit for Containers Operator auf OpenShift Container Platform 4 mit Hilfe des Operator Lifecycle Managers.
Löschen Sie mit den folgenden Befehlen die Cluster-abhängigen Ressourcen auf allen Clustern:
Benutzerdefinierte
migration
-Ressourcendefinitionen (CRDs):oc delete $(oc get crds -o name | grep 'migration.openshift.io')
$ oc delete $(oc get crds -o name | grep 'migration.openshift.io')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero
-CRDs:oc delete $(oc get crds -o name | grep 'velero')
$ oc delete $(oc get crds -o name | grep 'velero')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migrationscluster
-Rollen:oc delete $(oc get clusterroles -o name | grep 'migration.openshift.io')
$ oc delete $(oc get clusterroles -o name | grep 'migration.openshift.io')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migration-operator
-Cluster-Rolle:oc delete clusterrole migration-operator
$ oc delete clusterrole migration-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero
-Cluster-Rollen:oc delete $(oc get clusterroles -o name | grep 'velero')
$ oc delete $(oc get clusterroles -o name | grep 'velero')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migration
-Cluster-Rollenbindungen:oc delete $(oc get clusterrolebindings -o name | grep 'migration.openshift.io')
$ oc delete $(oc get clusterrolebindings -o name | grep 'migration.openshift.io')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migration-operator
-Cluster-Rollenbindungen:oc delete clusterrolebindings migration-operator
$ oc delete clusterrolebindings migration-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero
-Cluster-Rollenbindungen:oc delete $(oc get clusterrolebindings -o name | grep 'velero')
$ oc delete $(oc get clusterrolebindings -o name | grep 'velero')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kapitel 7. Installation des Migration Toolkit for Containers in einer eingeschränkten Netzwerkumgebung Link kopierenLink in die Zwischenablage kopiert!
Sie können das Migration Toolkit for Containers (MTC) auf OpenShift Container Platform 3 und 4 in einer eingeschränkten Netzwerkumgebung installieren, indem Sie die folgenden Schritte durchführen:
Erstellen Sie einen Operator-Katalog-Mirror.
Bei diesem Vorgang wird die Datei
mapping.txt
erstellt, die die Zuordnung zwischen demregistry.redhat.io-Image
und Ihrem Image für die Spiegelregistrierung enthält. Die Dateimapping.txt
ist für die Installation des Operators auf dem Quell-Cluster erforderlich.Installieren Sie den Migration Toolkit for Containers Operator auf dem Ziel-Cluster von OpenShift Container Platform 4.10 mit Hilfe des Operator Lifecycle Manager.
Standardmäßig werden die MTC-Webkonsole und der Pod
Migration Controller
auf dem Ziel-Cluster ausgeführt. Sie können das Manifest der Custom ResourceMigration Controller
so konfigurieren, dass die MTC-Webkonsole und der PodMigration Controller
auf einem Quell-Cluster oder einem Remote-Cluster ausgeführt werden.- Installieren Sie über die Befehlszeilenschnittstelle den Legacy Migration Toolkit for Containers Operator auf dem Quell-Cluster von OpenShift Container Platform 3.
- Konfigurieren Sie den Objektspeicher für die Verwendung als Replikations-Repository.
Informationen zur Deinstallation von MTC finden Sie unter Deinstallation von MTC und Löschen von Ressourcen.
7.1. Kompatibilitäts-Leitlinien Link kopierenLink in die Zwischenablage kopiert!
Sie müssen den Migration Toolkit for Containers (MTC) Operator installieren, der mit Ihrer OpenShift Container Platform-Version kompatibel ist.
Sie können MTC 1.6 nicht auf OpenShift Container Platform 4.5 oder früheren Versionen installieren, da die Versionen der Custom Resource Definition API nicht kompatibel sind.
Sie können Workloads von einem Quell-Cluster mit MTC 1.5.3 zu einem Ziel-Cluster mit MTC 1.6 migrieren, solange die benutzerdefinierte Ressource MigrationController
und die MTC-Webkonsole auf dem Ziel-Cluster ausgeführt werden.
Version der OpenShift Container Platform | MTC-Version | Migration Toolkit for Containers Operator |
---|---|---|
4.5 und früher | 1.5.3 |
Legacy Migration Toolkit for Containers Operator, manuell mit der Datei |
4.6 und später | Neueste Version 1.6.x von z-stream | Migration Toolkit for Containers Operator, installiert mit Operator Lifecycle Manager. |
7.2. Installation von Migration Toolkit for Containers Operator auf OpenShift Container Platform 4.10 Link kopierenLink in die Zwischenablage kopiert!
Sie installieren den Migration Toolkit for Containers Operator auf OpenShift Container Platform 4.10 mit Hilfe des Operator Lifecycle Managers.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein. - Sie müssen einen Operator-Katalog aus einem Spiegel-Image in einer lokalen Registrierung erstellen.
Vorgehensweise
- Klicken Sie in der Webkonsole der OpenShift Container Platform auf Operators → OperatorHub.
- Verwenden Sie das Feld Filter by keyword, um den Migration Toolkit for Containers Operator zu finden.
- Wählen Sie den Migration Toolkit for Containers Operator aus und klicken Sie auf Install.
Klicken Sie auf Install.
Auf der Seite Installed Operators wird der Migration Toolkit for Containers Operator im Projekt openshift-migration mit dem Status Succeeded angezeigt.
- Klicken Sie auf Migration Toolkit for Containers Operator.
- Suchen Sie unter Provided APIs die Kachel Migration Controller und klicken Sie auf Create Instance.
- Klicken Sie auf Create.
- Klicken Sie auf Workloads → Pods, um zu überprüfen, ob die MTC-Pods ausgeführt werden.
7.3. Installation des Legacy Migration Toolkit for Containers Operator auf OpenShift Container Platform 3 Link kopierenLink in die Zwischenablage kopiert!
Sie können den Legacy Migration Toolkit for Containers Operator manuell auf OpenShift Container Platform 3 installieren.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein. -
Sie müssen Zugriff auf
registry.redhat.io
haben. -
Sie müssen
podman
installiert haben. - Sie müssen ein Image Stream-Geheimnis erstellen und es auf jeden Knoten im Cluster kopieren.
-
Sie benötigen eine Linux-Workstation mit Netzwerkzugriff, um Dateien von
registry.redhat.io
herunterladen zu können. - Sie müssen ein Mirror-Image des Operator-Katalogs erstellen.
- Sie müssen den Migration Toolkit for Containers Operator aus dem Operator-Katalog-Mirror auf OpenShift Container Platform 4.10 installieren.
Vorgehensweise
Melden Sie sich mit Ihren Anmeldedaten für das Red Hat Customer Portal bei
registry.redhat.io
an:sudo podman login registry.redhat.io
$ sudo podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Laden Sie die Datei
operator.yml
herunter:sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/operator.yml ./
$ sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/operator.yml ./
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Laden Sie die Datei
controller.yml
herunter:sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/controller.yml ./
$ sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/controller.yml ./
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rufen Sie die Operator-Image-Zuordnung ab, indem Sie den folgenden Befehl ausführen:
grep openshift-migration-legacy-rhel8-operator ./mapping.txt | grep rhmtc
$ grep openshift-migration-legacy-rhel8-operator ./mapping.txt | grep rhmtc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Datei
mapping.txt
wurde erstellt, als Sie den Operator-Katalog-Mirror erstellt haben. Die Ausgabe zeigt die Zuordnung zwischen demregistry.redhat.io
-Image und Ihrem Image für die Spiegelregistrierung.Beispielausgabe
registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator@sha256:468a6126f73b1ee12085ca53a312d1f96ef5a2ca03442bcb63724af5e2614e8a=<registry.apps.example.com>/rhmtc/openshift-migration-legacy-rhel8-operator
registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator@sha256:468a6126f73b1ee12085ca53a312d1f96ef5a2ca03442bcb63724af5e2614e8a=<registry.apps.example.com>/rhmtc/openshift-migration-legacy-rhel8-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie die
image
-Werte für die Containeransible
undoperator
sowie denREGISTRY
-Wert in der Dateioperator.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Melden Sie sich bei Ihrem OpenShift Container Platform 3-Cluster an.
Erstellen Sie das Objekt Migration Toolkit for Containers Operator:
oc create -f operator.yml
$ oc create -f operator.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Sie können die Meldung
Error from server (AlreadyExists)
ignorieren. Sie werden durch den Migration Toolkit for Containers Operator verursacht, der Ressourcen für frühere Versionen von OpenShift Container Platform 3 erstellt, die in späteren Versionen bereitgestellt werden.
Erstellen Sie das Objekt
MigrationController
:oc create -f controller.yml
$ oc create -f controller.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Überprüfen Sie, ob die MTC-Pods ausgeführt werden:
oc get pods -n openshift-migration
$ oc get pods -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4. Konfigurieren von Proxys Link kopierenLink in die Zwischenablage kopiert!
Für OpenShift Container Platform 4.1 und frühere Versionen müssen Sie, nachdem Sie den Migration Toolkit for Containers Operator installiert haben, Proxys im Manifest der Custom Resource (CR) MigrationController
konfigurieren, da diese Versionen kein clusterweites Proxy
-Objekt unterstützen.
Für OpenShift Container Platform 4.2 bis 4.10 erbt das Migration Toolkit for Containers (MTC) die clusterweiten Proxy-Einstellungen. Sie können die Proxy-Parameter ändern, wenn Sie die clusterweiten Proxy-Einstellungen außer Kraft setzen wollen.
Sie müssen die Proxys so konfigurieren, dass sie das SPDY-Protokoll zulassen und den Header Upgrade HTTP
an den API-Server weiterleiten. Andernfalls wird die Fehlermeldung Upgrade request required
angezeigt. Die CR MigrationController
verwendet SPDY, um Befehle in Remote-Pods auszuführen. Der Header Upgrade HTTP
ist erforderlich, um eine Websocket-Verbindung mit dem API-Server zu öffnen.
Direct Volume Migration
Wenn Sie eine Direct Volume Migration (DVM) von einem Quell-Cluster hinter einem Proxy durchführen, müssen Sie einen Stunnel-Proxy konfigurieren. Stunnel erstellt einen transparenten Tunnel zwischen dem Quell- und dem Ziel-Cluster für die TCP-Verbindung, ohne die Zertifikate zu ändern.
Die DVM unterstützt nur einen Proxy. Der Quell-Cluster kann nicht auf die Route des Ziel-Clusters zugreifen, wenn sich der Ziel-Cluster ebenfalls hinter einem Proxy befindet.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
Rufen Sie das CR-Manifest
MigrationController
ab:oc get migrationcontroller <migration_controller> -n openshift-migration
$ oc get migrationcontroller <migration_controller> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie die Proxy-Parameter:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Stunnel-Proxy-URL für die Direct Volume Migration.
- 2
- Proxy-URL für die Erstellung von HTTP-Verbindungen außerhalb des Clusters. Das URL-Schema muss
http
sein. - 3
- Proxy-URL für die Erstellung von HTTPS-Verbindungen außerhalb des Clusters. Wenn dies nicht angegeben wird, wird
httpProxy
sowohl für HTTP- als auch für HTTPS-Verbindungen verwendet. - 4
- Durch Kommata getrennte Liste von Zieldomain-Namen, Domains, IP-Adressen oder anderen Netzwerk-CIDRs zum Ausschluss von Proxying.
Stellen Sie einer Domain ein
.
voran, um nur Subdomains zu finden. Zum Beispiel gibt es bei.y.com
eine Übereinstimmung mitx.y.com
, aber nicht mity.com
. Verwenden Sie*
, um den Proxy für alle Ziele zu umgehen. Wenn Sie Worker hochskalieren, die nicht in dem durch das Installationskonfigurationsfeldnetworking.machineNetwork[].cidr
definierten Netzwerk enthalten sind, müssen Sie sie zu dieser Liste hinzufügen, um Verbindungsprobleme zu vermeiden.Dieses Feld wird ignoriert, wenn weder das Feld
httpProxy
noch das FeldhttpsProxy
konfiguriert ist.-
Speichern Sie das Manifest als
migration-controller.yaml
. Wenden Sie das aktualisierte Manifest an:
oc replace -f migration-controller.yaml -n openshift-migration
$ oc replace -f migration-controller.yaml -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Weitere Informationen finden Sie unter Konfigurieren des clusterweiten Proxys.
7.5. Konfigurieren eines Replikations-Repositorys Link kopierenLink in die Zwischenablage kopiert!
Das Multicloud Object Gateway ist die einzige unterstützte Option für eine eingeschränkte Netzwerkumgebung.
MTC unterstützt die Dateisystem- und Schnappschuss-Datenkopiermethoden für die Migration von Daten aus dem Quell-Cluster in den Ziel-Cluster. Sie können eine Methode wählen, die für Ihre Umgebung geeignet ist und von Ihrem Speicheranbieter unterstützt wird.
7.5.1. Voraussetzungen Link kopierenLink in die Zwischenablage kopiert!
- Alle Cluster müssen ununterbrochenen Netzwerkzugriff zum Replikations-Repository haben.
- Wenn Sie einen Proxy-Server mit einem intern gehosteten Replikations-Repository verwenden, müssen Sie sicherstellen, dass der Proxy den Zugriff auf das Replikations-Repository erlaubt.
7.5.2. Abrufen von Anmeldedaten für Multicloud Object Gateway Link kopierenLink in die Zwischenablage kopiert!
Sie müssen die Anmeldedaten für Multicloud Object Gateway (MCG) abrufen, um eine Secret
Custom Resource (CR) für die OpenShift API for Data Protection (OADP) zu erstellen.
MCG ist eine Komponente von OpenShift Container Storage.
Voraussetzungen
- Sie müssen OpenShift Container Storage mit Hilfe der entsprechenden Bereitstellungsanleitung für OpenShift Container Storage bereitstellen.
Vorgehensweise
-
Ermitteln Sie den S3-Endpunkt, die
AWS_ACCESS_KEY_ID
und denAWS_SECRET_ACCESS_KEY
, indem Sie den Befehldescribe
für die benutzerdefinierteNooBaa
-Ressource ausführen.
7.6. Deinstallation des MTC und Löschen von Ressourcen Link kopierenLink in die Zwischenablage kopiert!
Sie können das Migration Toolkit for Containers (MTC) deinstallieren und seine Ressourcen löschen, um den Cluster zu bereinigen.
Durch das Löschen der velero
-CRDs wird Velero aus dem Cluster entfernt.
Voraussetzungen
-
Sie müssen als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
Löschen Sie die benutzerdefinierte Ressource (CR)
MigrationController
auf allen Clustern:oc delete migrationcontroller <migration_controller>
$ oc delete migrationcontroller <migration_controller>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Deinstallieren Sie den Migration Toolkit for Containers Operator auf OpenShift Container Platform 4 mit Hilfe des Operator Lifecycle Managers.
Löschen Sie mit den folgenden Befehlen die Cluster-abhängigen Ressourcen auf allen Clustern:
Benutzerdefinierte
migration
-Ressourcendefinitionen (CRDs):oc delete $(oc get crds -o name | grep 'migration.openshift.io')
$ oc delete $(oc get crds -o name | grep 'migration.openshift.io')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero
-CRDs:oc delete $(oc get crds -o name | grep 'velero')
$ oc delete $(oc get crds -o name | grep 'velero')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migrationscluster
-Rollen:oc delete $(oc get clusterroles -o name | grep 'migration.openshift.io')
$ oc delete $(oc get clusterroles -o name | grep 'migration.openshift.io')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migration-operator
-Cluster-Rolle:oc delete clusterrole migration-operator
$ oc delete clusterrole migration-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero
-Cluster-Rollen:oc delete $(oc get clusterroles -o name | grep 'velero')
$ oc delete $(oc get clusterroles -o name | grep 'velero')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migration
-Cluster-Rollenbindungen:oc delete $(oc get clusterrolebindings -o name | grep 'migration.openshift.io')
$ oc delete $(oc get clusterrolebindings -o name | grep 'migration.openshift.io')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow migration-operator
-Cluster-Rollenbindungen:oc delete clusterrolebindings migration-operator
$ oc delete clusterrolebindings migration-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero
-Cluster-Rollenbindungen:oc delete $(oc get clusterrolebindings -o name | grep 'velero')
$ oc delete $(oc get clusterrolebindings -o name | grep 'velero')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kapitel 8. Upgrade des Migration Toolkit for Containers Link kopierenLink in die Zwischenablage kopiert!
Sie können das Migration Toolkit for Containers (MTC) auf der OpenShift Container Platform 4.10 mithilfe des Operator Lifecycle Manager aktualisieren.
Sie können MTC auf OpenShift Container Platform 3 aktualisieren, indem Sie den Legacy Migration Toolkit for Containers Operator neu installieren.
Wenn Sie von MTC Version 1.3 aktualisieren, müssen Sie zusätzliche Schritte durchführen, um die benutzerdefinierte MigPlan
-Ressource (CR) zu aktualisieren.
8.1. Upgrade des Migration Toolkit for Containers auf OpenShift Container Platform 4.10 Link kopierenLink in die Zwischenablage kopiert!
Sie können das Migration Toolkit for Containers (MTC) auf OpenShift Container Platform 4.10 mithilfe des Operator Lifecycle Manager aktualisieren.
Voraussetzungen
-
Sie müssen als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
Navigieren Sie in der Konsole der OpenShift Container Platform zu Operators → Installed Operators.
Operatoren, bei denen ein Upgrade ansteht, zeigen den Status Upgrade available an.
- Klicken Sie auf Migration Toolkit for Containers Operator.
- Klicken Sie auf die Registerkarte Subscription. Alle genehmigungspflichtigen Upgrades werden neben Upgrade Status angezeigt. Es könnte zum Beispiel 1 requires approval angezeigt werden.
- Klicken Sie auf 1 requires approval und dann auf Preview Install Plan.
- Überprüfen Sie die Ressourcen, für die ein Upgrade verfügbar ist, und klicken Sie auf Approve.
- Navigieren Sie zurück zur Seite Operators → Installed Operators, um den Fortschritt des Upgrades zu überwachen. Nach Abschluss des Vorgangs ändert sich der Status in Succeeded und Up to date.
- Klicken Sie auf Migration Toolkit for Containers Operator.
- Suchen Sie unter Provided APIs die Kachel Migration Controller und klicken Sie auf Create Instance.
- Klicken Sie auf Workloads → Pods, um zu überprüfen, ob die MTC-Pods ausgeführt werden.
8.2. Upgrade des Migration Toolkit for Containers auf OpenShift Container Platform 3 Link kopierenLink in die Zwischenablage kopiert!
Sie können Migration Toolkit for Containers (MTC) auf OpenShift Container Platform 3 aktualisieren, indem Sie den Legacy Migration Toolkit for Containers Operator manuell installieren.
Voraussetzungen
-
Sie müssen als Benutzer mit
cluster-admin
-Privilegien angemeldet sein. -
Sie müssen Zugriff auf
registry.redhat.io
haben. -
Sie müssen
podman
installiert haben.
Vorgehensweise
Melden Sie sich mit Ihren Anmeldedaten für das Red Hat Customer Portal bei
registry.redhat.io
an:sudo podman login registry.redhat.io
$ sudo podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Laden Sie die Datei
operator.yml
herunter:sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/operator.yml ./
$ sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/operator.yml ./
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ersetzen Sie den Migration Toolkit for Container Operator:
oc replace --force -f operator.yml
$ oc replace --force -f operator.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Skalieren Sie die Bereitstellung von
migration-operator
auf0
, um die Bereitstellung zu beenden:oc scale -n openshift-migration --replicas=0 deployment/migration-operator
$ oc scale -n openshift-migration --replicas=0 deployment/migration-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Skalieren Sie die Bereitstellung
migration-operator
auf1
, um die Bereitstellung zu starten und die Änderungen anzuwenden:oc scale -n openshift-migration --replicas=1 deployment/migration-operator
$ oc scale -n openshift-migration --replicas=1 deployment/migration-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Überprüfen Sie, ob der
migration-operator
aktualisiert wurde:oc -o yaml -n openshift-migration get deployment/migration-operator | grep image: | awk -F ":" '{ print $NF }'
$ oc -o yaml -n openshift-migration get deployment/migration-operator | grep image: | awk -F ":" '{ print $NF }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Laden Sie die Datei
controller.yml
herunter:sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/controller.yml ./
$ sudo podman cp $(sudo podman create \ registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.5.3):/controller.yml ./
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie das Objekt
migration-controller
:oc create -f controller.yml
$ oc create -f controller.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Wenn Sie den OpenShift Container Platform 3-Cluster zuvor zur MTC-Webkonsole hinzugefügt haben, müssen Sie das Service Account-Token in der Webkonsole aktualisieren, da der Upgrade-Vorgang den Namespace
openshift-migration
löscht und wiederherstellt:Rufen Sie das Service Account-Token ab:
oc sa get-token migration-controller -n openshift-migration
$ oc sa get-token migration-controller -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Klicken Sie in der MTC-Webkonsole auf Clusters.
-
Klicken Sie auf das Optionsmenü
neben dem Cluster und wählen Sie Edit aus.
- Geben Sie das neue Service Account-Token in das Feld Service account token ein.
- Klicken Sie auf Update Cluster und dann auf Close.
Überprüfen Sie, ob die MTC-Pods ausgeführt werden:
oc get pods -n openshift-migration
$ oc get pods -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. Upgrade von MTC 1.3 auf 1.6 Link kopierenLink in die Zwischenablage kopiert!
Wenn Sie Migration Toolkit for Containers (MTC) Version 1.3.x auf 1.6 aktualisieren, müssen Sie das benutzerdefinierte MigPlan
-Ressourcenmanifest (CR) auf dem Cluster aktualisieren, auf dem der Pod MigrationController
ausgeführt wird.
Da die Parameter indirectImageMigration
und indirectVolumeMigration
in MTC 1.3 nicht existieren, ist ihr Standardwert in Version 1.4 false
, was bedeutet, dass die Direct Image Migration und Direct Volume Migration aktiviert sind. Da die direkten Migrationsvoraussetzungen nicht erfüllt sind, kann der Migrationsplan den Zustand Ready
nur erreichen, wenn diese Parameterwerte zu true
geändert werden.
Voraussetzungen
-
Sie müssen als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
-
Melden Sie sich bei dem Cluster an, in dem der Pod
MigrationController
ausgeführt wird. Rufen Sie das CR-Manifest
MigPlan
ab:oc get migplan <migplan> -o yaml -n openshift-migration
$ oc get migplan <migplan> -o yaml -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie die folgenden Parameterwerte und speichern Sie die Datei als
migplan.yaml
:... spec: indirectImageMigration: true indirectVolumeMigration: true
... spec: indirectImageMigration: true indirectVolumeMigration: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ersetzen Sie das CR-Manifest
MigPlan
, um die Änderungen zu anzuwenden:oc replace -f migplan.yaml -n openshift-migration
$ oc replace -f migplan.yaml -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rufen Sie das aktualisierte CR-Manifest
MigPlan
ab, um die Änderungen zu überprüfen:oc get migplan <migplan> -o yaml -n openshift-migration
$ oc get migplan <migplan> -o yaml -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kapitel 9. Checklisten zur Migrationsvorbereitung Link kopierenLink in die Zwischenablage kopiert!
Bevor Sie Ihre Anwendungs-Workloads mit dem Migration Toolkit for Containers (MTC) migrieren, sollten Sie die folgenden Checklisten überprüfen.
9.1. Ressourcen Link kopierenLink in die Zwischenablage kopiert!
- ❏ Wenn Ihre Anwendung ein internes Dienstnetzwerk oder eine externe Route für die Kommunikation mit Diensten verwendet, ist die entsprechende Route vorhanden.
- ❏ Wenn Ihre Anwendung Ressourcen auf Cluster-Ebene verwendet, haben Sie diese auf dem Ziel-Cluster neu erstellt.
- ❏ Sie haben Persistent Volumes (PVs), Image Streams und andere Ressourcen, die nicht migriert werden sollen, ausgeschlossen.
- ❏ Die PV-Daten wurden für den Fall gesichert, dass eine Anwendung nach der Migration ein unerwartetes Verhalten zeigt und die Daten beschädigt.
9.2. Quellen-Cluster Link kopierenLink in die Zwischenablage kopiert!
- ❏ Der Cluster erfüllt die Mindestanforderungen an die Hardware.
❏ Sie haben die richtige Version des Legacy Migration Toolkit for Containers Operator installiert:
-
operator-3.7.yml
auf OpenShift Container Platform Version 3.7. -
operator.yml
auf OpenShift Container Platform Versionen 3.9 bis 4.5.
-
- ❏ Die MTC-Version ist auf allen Clustern dieselbe.
- ❏ Alle Knoten haben eine aktive Subskription für OpenShift Container Platform.
- ❏ Sie haben alle einmalig auszuführenden Aufgaben durchgeführt.
- ❏ Sie haben alle Zustandsprüfungen für die Umgebungen durchgeführt.
❏ Sie haben mit folgendem Befehl geprüft, ob PVs mit abnormalen Konfigurationen vorhanden sind, die im Zustand Terminating feststecken:
oc get pv
$ oc get pv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ❏ Sie haben mit folgendem Befehl nach Pods gesucht, deren Status nicht Running oder Completed ist:
oc get pods --all-namespaces | egrep -v 'Running | Completed'
$ oc get pods --all-namespaces | egrep -v 'Running | Completed'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ❏ Sie haben mit folgendem Befehl nach Pods mit einer hohen Anzahl von Neustarts gesucht:
oc get pods --all-namespaces --field-selector=status.phase=Running \ -o json | jq '.items[]|select(any( .status.containerStatuses[]; \ .restartCount > 3))|.metadata.name'
$ oc get pods --all-namespaces --field-selector=status.phase=Running \ -o json | jq '.items[]|select(any( .status.containerStatuses[]; \ .restartCount > 3))|.metadata.name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Auch wenn die Pods den Zustand Running haben, kann eine hohe Anzahl von Neustarts auf zugrunde liegende Probleme hinweisen.
- ❏ Sie haben alte Builds, Bereitstellungen und Images aus jedem zu migrierenden Namespace durch Pruning entfernt.
- ❏ Die interne Registrierung verwendet einen unterstützten Storage-Typ.
- ❏ Nur für die Direct Image Migration: Die interne Registrierung wurde dem externen Netzwerkverkehr zur Verfügung gestellt.
- ❏ Sie können Images in der Registrierung lesen und schreiben.
- ❏ Der etcd-Cluster befindet sich in einem ordnungsgemäßen Zustand.
- ❏ Die durchschnittliche Antwortzeit des API-Servers auf dem Quell-Cluster beträgt weniger als 50 ms.
- ❏ Die Cluster-Zertifikate sind für die Dauer des Migrationsprozesses gültig.
❏ Sie haben mit folgendem Befehl überprüft, ob es ausstehende Signierungsanfragen für Zertifikate gibt:
oc get csr -A | grep pending -i
$ oc get csr -A | grep pending -i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ❏ Der Identitätsanbieter funktioniert.
9.3. Ziel-Cluster Link kopierenLink in die Zwischenablage kopiert!
- ❏ Sie haben Migration Toolkit for Containers Operator Version 1.5.1 installiert.
- ❏ Alle MTC-Voraussetzungen sind erfüllt.
- ❏ Der Cluster erfüllt die Mindestanforderungen an die Hardware für die jeweilige Plattform und Installationsmethode, z. B. auf Bare Metal.
❏ Der Cluster verfügt über Speicherklassen, die für die vom Quell-Cluster verwendeten Speichertypen definiert sind, z. B. Block-Volume, Dateisystem oder Objektspeicher.
AnmerkungFür NFS ist keine definierte Speicherklasse erforderlich.
- ❏ Der Cluster verfügt über die richtige Netzwerkkonfiguration und die richtigen Berechtigungen für den Zugriff auf externe Dienste, z. B. Datenbanken, Quellcode-Repositorys, Container-Image-Registrierungen und CI/CD-Tools.
- ❏ Externe Anwendungen und Dienste, die vom Cluster bereitgestellte Dienste nutzen, verfügen über die richtige Netzwerkkonfiguration und die richtigen Zugriffsberechtigungen für den Cluster.
❏ Interne Container-Image-Abhängigkeiten werden erfüllt.
Wenn eine Anwendung ein internes Image im
openshift
-Namespace verwendet, das von OpenShift Container Platform 4.10 nicht unterstützt wird, können Sie das OpenShift Container Platform 3 Image-Stream-Tag manuell mitpodman
aktualisieren.- ❏ Der Ziel-Cluster und das Replikations-Repository verfügen über ausreichend Speicherplatz.
- ❏ Der Identitätsanbieter funktioniert.
- ❏ DNS-Einträge für Ihre Anwendung sind auf dem Ziel-Cluster vorhanden.
-
❏ Legen Sie den Wert des Parameters
annotation.openshift.io/host.generated
für jede OpenShift Container Platform-Route auftrue
fest, um ihren Hostnamen für den Ziel-Cluster zu aktualisieren. Andernfalls behalten die migrierten Routen den Hostnamen des Quell-Clusters bei. - ❏ Die Zertifikate, die Ihre Anwendung verwendet, sind auf dem Ziel-Cluster vorhanden.
- ❏ Sie haben passende Firewall-Regeln auf dem Ziel-Cluster konfiguriert.
- ❏ Sie haben den Lastenverteiler auf dem Ziel-Cluster korrekt konfiguriert.
❏ Wenn Sie Objekte in einen bestehenden Namespace auf dem Ziel-Cluster migrieren, der denselben Namen wie der Namespace hat, der von der Quelle migriert wird, enthält der Ziel-Namespace keine Objekte mit demselben Namen und Typ wie die zu migrierenden Objekte.
AnmerkungErstellen Sie vor der Migration keine Namespaces für Ihre Anwendung auf dem Ziel-Cluster, da dies zu einer Änderung der Quoten führen kann.
9.4. Leistung Link kopierenLink in die Zwischenablage kopiert!
- ❏ Das Migrationsnetzwerk hat einen Mindestdurchsatz von 10 Gbit/s.
❏ Die Cluster verfügen über ausreichende Ressourcen für die Migration.
AnmerkungCluster benötigen zusätzlichen Arbeitsspeicher, CPUs und Speicher, um eine Migration zusätzlich zu den normalen Workloads durchzuführen. Der tatsächliche Ressourcenbedarf hängt von der Anzahl der Kubernetes-Ressourcen ab, die in einem einzelnen Migrationsplan migriert werden. Sie müssen Migrationen in einer nicht produktiven Umgebung testen, um den Ressourcenbedarf abschätzen zu können.
- ❏ Die Arbeitsspeicher- und CPU-Auslastung der Knoten ist auf einem angemessenen Niveau.
-
❏ Die etcd-Festplattenleistung der Cluster wurde mit
fio
überprüft.
Kapitel 10. Migrieren Ihrer Anwendungen Link kopierenLink in die Zwischenablage kopiert!
Sie können Ihre Anwendungen über die Webkonsole des Migration Toolkit for Containers (MTC) oder über die Befehlszeile migrieren.
Sie können die Stage-Migration und Cutover-Migration verwenden, um eine Anwendung zwischen Clustern zu migrieren:
- Bei der Stage-Migration werden Daten vom Quell-Cluster auf den Ziel-Cluster kopiert, ohne dass die Anwendung angehalten wird. Sie können eine Stage-Migration mehrmals durchführen, um die Dauer der Cutover-Migration zu verkürzen.
- Bei der Cutover-Migration werden die Transaktionen auf dem Quell-Cluster gestoppt und die Ressourcen auf den Ziel-Cluster verschoben.
Sie können die State-Migration verwenden, um den Zustand einer Anwendung zu migrieren:
- Bei der State-Migration werden ausgewählte Persistent Volume Claims (PVCs) und Kubernetes-Ressourcen kopiert.
- Sie können die State-Migration verwenden, um einen Namespace innerhalb desselben Clusters zu migrieren.
Die meisten Cluster-Ressourcen werden noch nicht von MTC gehandhabt. Wenn Ihre Anwendungen Cluster-Ressourcen benötigen, müssen Sie diese möglicherweise manuell auf dem Ziel-Cluster erstellen.
Während der Migration behält MTC die folgenden Namespace-Annotationen bei:
-
openshift.io/sa.scc.mcs
-
openshift.io/sa.scc.supplemental-groups
-
openshift.io/sa.scc.uid-range
Diese Annotationen bewahren den UID-Bereich und stellen sicher, dass die Container ihre Dateisystemberechtigungen auf dem Ziel-Cluster beibehalten. Es besteht das Risiko, dass die migrierten UIDs sich in einem bestehenden oder zukünftigen Namespace auf dem Ziel-Cluster duplizieren.
10.1. Voraussetzungen für die Migration Link kopierenLink in die Zwischenablage kopiert!
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Direct Image Migration
- Sie müssen sicherstellen, dass die sichere interne Registrierung des Quell-Clusters verfügbar gemacht wird.
- Sie müssen eine Route zur verfügbaren Registrierung erstellen.
Direct Volume Migration
- Wenn Ihre Cluster Proxys verwenden, müssen Sie einen Stunnel-TCP-Proxy konfigurieren.
Interne Images
Wenn Ihre Anwendung interne Images aus dem
openshift
-Namespace verwendet, müssen Sie sicherstellen, dass die erforderlichen Versionen der Images auf dem Ziel-Cluster vorhanden sind.Sie können ein Image-Stream-Tag manuell aktualisieren, um ein veraltetes OpenShift Container Platform 3-Image auf einem OpenShift Container Platform 4.10-Cluster zu verwenden.
Cluster
- Der Quell-Cluster muss auf die neueste MTC-Version von z-stream aktualisiert werden.
- Die MTC-Version muss auf allen Clustern dieselbe sein.
Netzwerk
- Die Cluster haben uneingeschränkten Netzwerkzugriff zueinander und zum Replikations-Repository.
-
Wenn Sie die Persistent Volumes mit
move
kopieren, müssen die Cluster uneingeschränkten Netzwerkzugriff auf die Remote-Volumes haben. Sie müssen die folgenden Ports auf einem OpenShift Container Platform 3-Cluster aktivieren:
-
8443
(API-Server) -
443
(Routen) -
53
(DNS)
-
Sie müssen die folgenden Ports auf einem OpenShift Container Platform 4-Cluster aktivieren:
-
6443
(API-Server) -
443
(Routen) -
53
(DNS)
-
-
Sie müssen Port
443
auf dem Replikations-Repository aktivieren, wenn Sie TLS verwenden.
Persistent Volumes (PVs)
- Die PVs müssen gültig sein.
- Die PVs müssen an Persistent Volume Claims gebunden sein.
Wenn Sie Schnappschüsse zum Kopieren der PVs verwenden, gelten die folgenden zusätzlichen Voraussetzungen:
- Der Cloud-Anbieter muss Schnappschüsse unterstützen.
- Die PVs müssen denselben Cloud-Anbieter haben.
- Die PVs müssen sich in derselben geografischen Region befinden.
- Die PVs müssen dieselbe Speicherklasse haben.
Zusätzliche Ressourcen zu Migrationsvoraussetzungen
10.2. Migration Ihrer Anwendungen mit Hilfe der MTC-Webkonsole Link kopierenLink in die Zwischenablage kopiert!
Sie können Cluster und ein Replikations-Repository über die MTC-Webkonsole konfigurieren. Dann können Sie einen Migrationsplan erstellen und ausführen.
10.2.1. Starten der MTC-Webkonsole Link kopierenLink in die Zwischenablage kopiert!
Sie können die MTC-Webkonsole (Migration Toolkit for Containers) in einem Browser starten.
Voraussetzungen
- Die MTC-Webkonsole muss über Netzwerkzugriff auf die Webkonsole der OpenShift Container Platform verfügen.
- Die MTC-Webkonsole muss über Netzwerkzugriff auf den OAuth-Autorisierungsserver verfügen.
Vorgehensweise
- Melden Sie sich bei dem OpenShift Container Platform-Cluster an, auf dem Sie MTC installiert haben.
Rufen Sie die URL der MTC-Webkonsole durch Eingabe des folgenden Befehls auf:
oc get -n openshift-migration route/migration -o go-template='https://{{ .spec.host }}'
$ oc get -n openshift-migration route/migration -o go-template='https://{{ .spec.host }}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Ausgabe sieht folgendermaßen aus:
https://migration-openshift-migration.apps.cluster.openshift.com.
Starten Sie einen Browser und navigieren Sie zur MTC-Webkonsole.
AnmerkungWenn Sie versuchen, unmittelbar nach der Installation des Migration Toolkit for Containers Operator auf die MTC-Webkonsole zuzugreifen, kann es sein, dass die Konsole nicht geladen wird, weil der Operator noch mit der Konfiguration des Clusters beschäftigt ist. Warten Sie ein paar Minuten und versuchen Sie es erneut.
- Wenn Sie selbstsignierte CA-Zertifikate verwenden, werden Sie aufgefordert, das CA-Zertifikat vom API-Server des Quell-Clusters zu akzeptieren. Die Webseite führt Sie durch den Annahmevorgang der restlichen Zertifikate.
- Melden Sie sich mit Ihrem OpenShift Container Platform-Benutzernamen und -Passwort an.
10.2.2. Hinzufügen eines Clusters zur MTC-Webkonsole Link kopierenLink in die Zwischenablage kopiert!
Sie können einen Cluster zur Webkonsole des Migration Toolkit for Containers (MTC) hinzufügen.
Voraussetzungen
Wenn Sie Azure Schnappschüsse zum Kopieren von Daten verwenden:
- Müssen Sie den Namen der Azure-Ressourcengruppe für den Cluster angeben.
- Müssen die Cluster sich in derselben Azure-Ressourcengruppe befinden.
- Müssen die Cluster sich am selben geografischen Ort befinden.
- Wenn Sie die Direct Image Migration verwenden, müssen Sie eine Route zur
Vorgehensweise
- Melden Sie sich beim Cluster an.
Rufen Sie das Service Account-Token
migration-controller
ab:oc sa get-token migration-controller -n openshift-migration
$ oc sa get-token migration-controller -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoibWlnLXRva2VuLWs4dDJyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE1YjFiYWMwLWMxYmYtMTFlOS05Y2NiLTAyOWRmODYwYjMwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptaWc6bWlnIn0.xqeeAINK7UXpdRqAtOj70qhBJPeMwmgLomV9iFxr5RoqUgKchZRG2J2rkqmPm6vr7K-cm7ibD1IBpdQJCcVDuoHYsFgV4mp9vgOfn9osSDp2TGikwNz4Az95e81xnjVUmzh-NjDsEpw71DH92iHV_xt2sTwtzftS49LpPW2LjrV0evtNBP_t_RfskdArt5VSv25eORl7zScqfe1CiMkcVbf2UqACQjo3LbkpfN26HAioO2oH0ECPiRzT0Xyh-KwFutJLS9Xgghyw-LD9kPKcE_xbbJ9Y4Rqajh7WdPYuB0Jd9DPVrslmzK-F6cgHHYoZEv0SvLQi-PO0rpDrcjOEQQ
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoibWlnLXRva2VuLWs4dDJyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE1YjFiYWMwLWMxYmYtMTFlOS05Y2NiLTAyOWRmODYwYjMwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptaWc6bWlnIn0.xqeeAINK7UXpdRqAtOj70qhBJPeMwmgLomV9iFxr5RoqUgKchZRG2J2rkqmPm6vr7K-cm7ibD1IBpdQJCcVDuoHYsFgV4mp9vgOfn9osSDp2TGikwNz4Az95e81xnjVUmzh-NjDsEpw71DH92iHV_xt2sTwtzftS49LpPW2LjrV0evtNBP_t_RfskdArt5VSv25eORl7zScqfe1CiMkcVbf2UqACQjo3LbkpfN26HAioO2oH0ECPiRzT0Xyh-KwFutJLS9Xgghyw-LD9kPKcE_xbbJ9Y4Rqajh7WdPYuB0Jd9DPVrslmzK-F6cgHHYoZEv0SvLQi-PO0rpDrcjOEQQ
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Klicken Sie in der MTC-Webkonsole auf Clusters.
- Klicken Sie auf Add Cluster.
Füllen Sie die folgenden Felder aus:
-
Cluster name: Der Clustername kann Kleinbuchstaben (
a-z
) und Zahlen (0-9
) enthalten. Er darf keine Leerzeichen oder internationalen Zeichen enthalten. -
URL: Geben Sie die URL des API-Servers an, z. B.
https://<www.example.com>:8443
. -
Service account token: Fügen Sie das Service Account-Token
migration-controller
ein. Exposed route host to image registry: Wenn Sie die Direct Image Migration verwenden, geben Sie die verfügbare Route zur Image-Registrierung des Quell-Clusters an.
Um die Route zu erstellen, führen Sie den folgenden Befehl aus:
Für OpenShift Container Platform 3:
oc create route passthrough --service=docker-registry --port=5000 -n default
$ oc create route passthrough --service=docker-registry --port=5000 -n default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Für OpenShift Container Platform 4:
oc create route passthrough --service=image-registry --port=5000 -n openshift-image-registry
$ oc create route passthrough --service=image-registry --port=5000 -n openshift-image-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Azure cluster: Sie müssen diese Option auswählen, wenn Sie Azure-Schnappschüsse zum Kopieren Ihrer Daten verwenden.
- Azure resource group: Dieses Feld wird angezeigt, wenn Azure cluster ausgewählt ist. Geben Sie die Azure-Ressourcengruppe an.
- Require SSL verification: Optional: Wählen Sie diese Option, um SSL-Verbindungen zum Cluster zu verifizieren.
- CA bundle file: Dieses Feld wird angezeigt, wenn die Option Require SSL verification erforderlich ausgewählt ist. Wenn Sie eine benutzerdefinierte Datei mit CA-Zertifikatpaket für selbstsignierte Zertifikate erstellt haben, klicken Sie auf Browse, wählen Sie die CA-Paketdatei aus und laden Sie sie hoch.
-
Cluster name: Der Clustername kann Kleinbuchstaben (
Klicken Sie auf Add Cluster.
Der Cluster wird in der Liste Clusters angezeigt.
10.2.3. Hinzufügen eines Replikations-Repositorys zur MTC-Webkonsole Link kopierenLink in die Zwischenablage kopiert!
Sie können einen Objektspeicher als Replikations-Repository zur MTC-Webkonsole (Migration Toolkit for Containers) hinzufügen.
MTC unterstützt die folgenden Speicheranbieter:
- Amazon Web Services (AWS) S3
- Multi-Cloud Object Gateway (MCG)
- Generischer S3-Objektspeicher, z. B. Minio oder Ceph S3
- Google Cloud Provider (GCP)
- Microsoft Azure Blob
Voraussetzungen
- Sie müssen den Objektspeicher als Replikations-Repository konfigurieren.
Vorgehensweise
- Klicken Sie in der MTC-Webkonsole auf Replication repositories.
- Klicken Sie auf Add repository.
Wählen Sie einen Storage provider type und füllen Sie die folgenden Felder aus:
AWS für S3-Anbieter, einschließlich AWS und MCG:
- Replication repository name: Geben Sie den Namen des Replikations-Repositorys in der MTC-Webkonsole an.
- S3 bucket name: Geben Sie den Namen des S3-Buckets an.
- S3 bucket region: Geben Sie die Region des S3-Buckets an. Erforderlich für AWS S3. Optional für einige S3-Anbieter. Informieren Sie sich in der Produktdokumentation Ihres S3-Anbieters über die erwarteten Werte.
-
S3 endpoint: Geben Sie die URL des S3-Dienstes an, nicht den Bucket, zum Beispiel
https://<s3-storage.apps.cluster.com>.
Erforderlich für einen generischen S3-Anbieter. Sie müssen das Präfixhttps://
verwenden. -
S3 provider access key: Geben Sie den
<AWS_SECRET_ACCESS_KEY>
für AWS oder den S3-Anbieter-Zugangsschlüssel für MCG und andere S3-Anbieter an. -
S3 provider secret access key: Geben Sie die
<AWS_ACCESS_KEY_ID>
für AWS oder den geheimen S3-Anbieter-Zugangsschlüssel für MCG und andere S3-Anbieter an. - Require SSL verification: Deaktivieren Sie dieses Kontrollkästchen, wenn Sie einen generischen S3-Anbieter verwenden.
- Wenn Sie ein benutzerdefiniertes CA-Zertifikatpaket für selbstsignierte Zertifikate erstellt haben, klicken Sie auf Browse und suchen Sie nach der base64-kodierten Datei.
GCP:
- Replication repository name: Geben Sie den Namen des Replikations-Repositorys in der MTC-Webkonsole an.
- GCP bucket name: Geben Sie den Namen des GCP-Buckets an.
-
GCP credential JSON blob: Geben Sie die Zeichenfolge in der Datei
credentials-velero
an.
Azure:
- Replication repository name: Geben Sie den Namen des Replikations-Repositorys in der MTC-Webkonsole an.
- Azure resource group: Geben Sie die Ressourcengruppe des Azure Blob-Speichers an.
- Azure storage account name: Geben Sie den Namen des Azure Blob-Speicherkontos an.
-
Azure credentials - INI file contents: Geben Sie die Zeichenfolge in der Datei
credentials-velero
an.
- Klicken Sie auf Add repository und warten Sie auf die Validierung der Verbindung.
Klicken Sie auf Close.
Das neue Repository wird in der Liste Replication repositories angezeigt.
10.2.4. Erstellen eines Migrationsplans in der MTC-Webkonsole Link kopierenLink in die Zwischenablage kopiert!
Sie können einen Migrationsplan in der MTC-Webkonsole (Migration Toolkit for Containers) erstellen.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein. - Sie müssen sicherstellen, dass auf allen Clustern dieselbe MTC-Version installiert ist.
- Sie müssen die Cluster und das Replikations-Repository zur MTC-Webkonsole hinzufügen.
- Wenn Sie ein Persistent Volume (PV) mit der Datenkopie-Methode move migrieren möchten, müssen Quell- und Ziel-Cluster ununterbrochenen Netzwerkzugriff auf das Remote-Volume haben.
-
Wenn Sie die Direct Image Migration verwenden möchten, müssen Sie die verfügbare Route zur Image-Registrierung des Quell-Clusters angeben. Dies kann über die MTC-Webkonsole oder durch Aktualisierung des benutzerdefinierten Ressourcenmanifests
MigCluster
erfolgen.
Vorgehensweise
- Klicken Sie in der MTC-Webkonsole auf Migration plans.
- Klicken Sie auf Add migration plan.
Geben Sie bei Plan name einen Namen ein.
Der Name des Migrationsplans darf nicht mehr als 253 klein geschriebene alphanumerische Zeichen
(a-z, 0-9
) und keine Leerzeichen oder Unterstriche(_
) enthalten.- Wählen Sie einen Source cluster, einen Target cluster und ein Repository aus.
- Klicken Sie auf Next.
- Wählen Sie die zu migrierenden Projekte aus.
- Optional: Klicken Sie auf das Bearbeitungssymbol neben einem Projekt, um den Ziel-Namespace zu ändern.
- Klicken Sie auf Next.
Wählen Sie einen Migration type für jedes PV:
- Mit der Option Copy werden die Daten aus der PV eines Quell-Clusters in das Replikations-Repository kopiert und anschließend in einem neu erstellten PV mit ähnlichen Merkmalen im Ziel-Cluster wiederhergestellt.
- Mit der Option Move wird die Bereitstellung eines Remote-Volume, z. B. NFS, auf dem Quell-Cluster aufgehoben, eine PV-Ressource auf dem Ziel-Cluster erstellt, die auf das Remote-Volume verweist, und dann das Remote-Volume auf dem Ziel-Cluster bereitgestellt. Anwendungen, die auf dem Ziel-Cluster ausgeführt werden, verwenden dasselbe Remote-Volume, das auch der Quell-Cluster verwendet hat.
- Klicken Sie auf Next.
Wählen Sie eine Copy method für jedes PV:
- Snapshot copy sichert und stellt Daten mithilfe der Schnappschuss-Funktionalität des Cloud-Anbieters wieder her. Dies ist wesentlich schneller als Filesystem copy.
Filesystem copy sichert die Dateien auf dem Quell-Cluster und stellt sie auf dem Ziel-Cluster wieder her.
Die Methode der Dateisystemkopie ist für die Direct Volume Migration erforderlich.
- Sie können die Option Verify copy wählen, um die mit Filesystem copy migrierten Daten zu verifizieren. Die Daten werden verifiziert, indem für jede Quelldatei eine Prüfsumme generiert und diese nach der Wiederherstellung überprüft wird. Die Datenverifizierung verringert die Leistung erheblich.
Wählen Sie eine Target storage class aus.
Wenn Sie Filesystem copy gewählt haben, können Sie die Ziel-Speicherklasse ändern.
- Klicken Sie auf Next.
Auf der Seite Migration options ist die Option Direct image migration ausgewählt, wenn Sie eine verfügbar Image-Registrierungsroute für den Quell-Cluster angegeben haben. Die Option Direct PV migration wird ausgewählt, wenn Sie die Daten mit Filesystem copy migrieren.
Die direkten Migrationsoptionen kopieren Images und Dateien direkt vom Quell-Cluster auf den Ziel-Cluster. Diese Option ist wesentlich schneller als das Kopieren von Images und Dateien vom Quell-Cluster in das Replikations-Repository und anschließend vom Replikations-Repository in den Ziel-Cluster.
- Klicken Sie auf Next.
Optional: Klicken Sie auf Add Hook, um dem Migrationsplan einen Hook hinzuzufügen.
Ein Hook führt benutzerdefinierten Code aus. Sie können bis zu vier Hooks zu einem einzigen Migrationsplan hinzufügen. Jeder Hook wird während eines anderen Migrationsschritts ausgeführt.
- Geben Sie den Namen des Hooks ein, der in der Webkonsole angezeigt werden soll.
- Wenn es sich bei dem Hook um ein Ansible-Playbook handelt, wählen Sie Ansible playbook und klicken Sie auf Browse, um das Playbook hochzuladen, oder fügen Sie den Inhalt des Playbooks in das Feld ein.
- Optional: Geben Sie ein Ansible-Laufzeit-Image an, wenn Sie nicht das Standard-Hook-Image verwenden.
Wenn es sich bei dem Hook nicht um ein Ansible-Playbook handelt, wählen Sie Custom container image und geben Sie den Namen und den Pfad des Images an.
Ein benutzerdefiniertes Container-Image kann Ansible-Playbooks enthalten.
- Wählen Sie Source cluster oder Target cluster.
- Geben Sie bei Service account name und Service account namespace Werte ein.
Wählen Sie den Migrationsschritt für den Hook:
- preBackup: Bevor die Anwendungs-Workload auf dem Quell-Cluster gesichert wird
- postBackup: Nachdem die Anwendungs-Workload auf dem Quell-Cluster gesichert wurde
- preRestore: Bevor die Anwendungs-Workload auf dem Ziel-Cluster wiederhergestellt wird
- postRestore: Nachdem die Anwendungs-Workload auf dem Ziel-Cluster wiederhergestellt wurde
- Klicken Sie auf Add.
Klicken Sie auf Finish.
Der Migrationsplan wird in der Liste Migration plans angezeigt.
Zusätzliche Ressourcen
10.2.5. Ausführen eines Migrationsplans in der MTC-Webkonsole Link kopierenLink in die Zwischenablage kopiert!
Sie können Anwendungen und Daten mit dem Migrationsplan migrieren, den Sie in der MTC-Webkonsole (Migration Toolkit for Containers) erstellt haben.
Während der Migration legt MTC die Rückforderungsrichtlinie für migrierte Persistent Volumes (PVs) auf dem Ziel-Cluster auf Retain
fest.
Die benutzerdefinierte Ressource Backup
enthält eine PVOriginalReclaimPolicy
-Annotation, die die ursprüngliche Rückforderungsrichtlinie angibt. Sie können die Rückforderungsrichtlinie für die migrierten PVs manuell wiederherstellen.
Voraussetzungen
Die MTC-Webkonsole muss Folgendes enthalten:
-
Quell-Cluster im Zustand
Ready
-
Ziel-Cluster im Zustand
Ready
- Replikations-Repository
- Gültiger Migrationsplan
Vorgehensweise
- Melden Sie sich bei der MTC-Webkonsole an und klicken Sie auf Migration plans.
Klicken Sie auf das Optionen-Menü
neben einem Migrationsplan und wählen Sie eine der folgenden Optionen unter Migration:
- Stage kopiert Daten aus dem Quell-Cluster in den Ziel-Cluster, ohne die Anwendung anzuhalten.
Cutover stoppt die Transaktionen auf dem Quell-Cluster und verschiebt die Ressourcen in den Ziel-Cluster.
Optional: Im Dialogfeld Cutover migration können Sie das Kontrollkästchen Stop transactions on the source cluster during migration deaktivieren.
State kopiert ausgewählter Persistent Volume Claims (PVCs) und Kubernetes-Ressourcen, die den Status einer Anwendung bilden. Sie können die State-Migration verwenden, um einen Namespace innerhalb desselben Clusters zu migrieren.
WichtigVerwenden Sie die State-Migration nicht, um einen Namespace zwischen Clustern zu migrieren. Verwenden Sie stattdessen die Stage- oder Cutover-Migration.
- Wählen Sie im Dialogfeld State migration ein oder mehrere PVCs aus und klicken Sie auf Migrate.
Wenn die Migration abgeschlossen ist, überprüfen Sie in der OpenShift Container Platform-Webkonsole, ob die Anwendung erfolgreich migriert wurde:
- Klicken Sie auf Home → Projects.
- Klicken Sie auf das migrierte Projekt, um seinen Status anzuzeigen.
- Klicken Sie im Bereich Routes auf Location, um zu verifizieren, ob die Anwendung funktioniert (falls zutreffend).
- Klicken Sie auf Workloads → Pods, um zu verifizieren, ob die Pods im migrierten Namespace ausgeführt werden.
- Klicken Sie auf Storage → Persistent Volumes, um zu überprüfen, ob die migrierten persistenten Volumes korrekt bereitgestellt wurden.
Kapitel 11. Erweiterte Migrationsoptionen Link kopierenLink in die Zwischenablage kopiert!
Sie können Ihre Migrationen automatisieren und die benutzerdefinierten Ressourcen MigPlan
und MigrationController
ändern, um umfangreiche Migrationen durchzuführen und die Leistung zu verbessern.
11.1. Terminologie Link kopierenLink in die Zwischenablage kopiert!
Begriff | Definition |
---|---|
Quellen-Cluster | Cluster, aus dem die Anwendungen migriert werden. |
Ziel-Cluster[1] | Cluster, in den die Anwendungen migriert werden. |
Replikations-Repository | Objektspeicher zum Kopieren von Images, Volumes und Kubernetes-Objekten bei indirekter Migration oder für Kubernetes-Objekte bei Direct Volume Migration oder Direct Image Migration. Das Replikations-Repository muss für alle Cluster zugänglich sein. |
Host-Cluster |
Cluster, auf dem der Pod Der Host-Cluster benötigt keine zur Verfügung gestellte Registrierungsroute für die Direct Image Migration. |
Remote-Cluster | Ein Remote-Cluster ist normalerweise der Quell-Cluster, dies ist jedoch nicht erforderlich.
Für einen Remote-Cluster ist eine benutzerdefinierte Ressource Ein Remote-Cluster erfordert eine zur Verfügung gestellte sichere Registrierungsroute für die Direct Image Migration. |
Indirekte Migration | Images, Volumes und Kubernetes-Objekte werden vom Quell-Cluster in das Replikations-Repository und anschließend vom Replikations-Repository in den Ziel-Cluster kopiert. |
Direct Volume Migration | Persistent Volumes werden direkt vom Quell-Cluster auf den Ziel-Cluster kopiert. |
Direct Image Migration | Die Bilder werden direkt vom Quell-Cluster auf den Ziel-Cluster kopiert. |
Stage-Migration | Die Daten werden auf den Ziel-Cluster kopiert, ohne dass die Anwendung angehalten wird. Die mehrfache Ausführung einer Stage-Migration verkürzt die Dauer der Cutover-Migration. |
Cutover-Migration | Die Anwendung wird auf dem Quell-Cluster gestoppt und ihre Ressourcen werden auf den Ziel-Cluster migriert. |
State-Migration | Der Anwendungszustand wird migriert, indem bestimmte Persistent Volume Claims und Kubernetes-Objekte auf den Ziel-Cluster kopiert werden. |
Rollback-Migration | Die Rollback-Migration setzt eine abgeschlossene Migration zurück. |
1 Rufen Sie den Zielcluster in der MTC-Webkonsole auf.
11.2. Migration von Anwendungen über die Befehlszeile Link kopierenLink in die Zwischenablage kopiert!
Sie können Anwendungen mit der MTC-API über die Command Line Interface (CLI) migrieren, um die Migration zu automatisieren.
11.2.1. Voraussetzungen für die Migration Link kopierenLink in die Zwischenablage kopiert!
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Direct Image Migration
- Sie müssen sicherstellen, dass die sichere interne Registrierung des Quell-Clusters verfügbar gemacht wird.
- Sie müssen eine Route zur verfügbaren Registrierung erstellen.
Direct Volume Migration
- Wenn Ihre Cluster Proxys verwenden, müssen Sie einen Stunnel-TCP-Proxy konfigurieren.
Interne Images
Wenn Ihre Anwendung interne Images aus dem
openshift
-Namespace verwendet, müssen Sie sicherstellen, dass die erforderlichen Versionen der Images auf dem Ziel-Cluster vorhanden sind.Sie können ein Image-Stream-Tag manuell aktualisieren, um ein veraltetes OpenShift Container Platform 3-Image auf einem OpenShift Container Platform 4.10-Cluster zu verwenden.
Cluster
- Der Quell-Cluster muss auf die neueste MTC-Version von z-stream aktualisiert werden.
- Die MTC-Version muss auf allen Clustern dieselbe sein.
Netzwerk
- Die Cluster haben uneingeschränkten Netzwerkzugriff zueinander und zum Replikations-Repository.
-
Wenn Sie die Persistent Volumes mit
move
kopieren, müssen die Cluster uneingeschränkten Netzwerkzugriff auf die Remote-Volumes haben. Sie müssen die folgenden Ports auf einem OpenShift Container Platform 3-Cluster aktivieren:
-
8443
(API-Server) -
443
(Routen) -
53
(DNS)
-
Sie müssen die folgenden Ports auf einem OpenShift Container Platform 4-Cluster aktivieren:
-
6443
(API-Server) -
443
(Routen) -
53
(DNS)
-
-
Sie müssen Port
443
auf dem Replikations-Repository aktivieren, wenn Sie TLS verwenden.
Persistent Volumes (PVs)
- Die PVs müssen gültig sein.
- Die PVs müssen an Persistent Volume Claims gebunden sein.
Wenn Sie Schnappschüsse zum Kopieren der PVs verwenden, gelten die folgenden zusätzlichen Voraussetzungen:
- Der Cloud-Anbieter muss Schnappschüsse unterstützen.
- Die PVs müssen denselben Cloud-Anbieter haben.
- Die PVs müssen sich in derselben geografischen Region befinden.
- Die PVs müssen dieselbe Speicherklasse haben.
11.2.2. Erstellen einer Registrierungsroute für die Direct Image Migration Link kopierenLink in die Zwischenablage kopiert!
Für die Direct Image Migration müssen Sie auf allen Remote-Clustern eine Route zur verfügbaren internen Registrierungen erstellen.
Voraussetzungen
Die interne Registrierung muss auf allen Remote-Clustern für den externen Datenverkehr zugänglich sein.
Die OpenShift Container Platform 4-Registrierung ist standardmäßig verfügbar.
Die OpenShift Container Platform 3-Registrierung muss manuell verfügbar gemacht werden.
Vorgehensweise
Um eine Route zu einer OpenShift Container Platform 3-Registrierung zu erstellen, führen Sie den folgenden Befehl aus:
oc create route passthrough --service=docker-registry -n default
$ oc create route passthrough --service=docker-registry -n default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Um eine Route zu einer OpenShift Container Platform 4-Registrierung zu erstellen, führen Sie den folgenden Befehl aus:
oc create route passthrough --service=image-registry -n openshift-image-registry
$ oc create route passthrough --service=image-registry -n openshift-image-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.3. Konfigurieren von Proxys Link kopierenLink in die Zwischenablage kopiert!
Für OpenShift Container Platform 4.1 und frühere Versionen müssen Sie, nachdem Sie den Migration Toolkit for Containers Operator installiert haben, Proxys im Manifest der Custom Resource (CR) MigrationController
konfigurieren, da diese Versionen kein clusterweites Proxy
-Objekt unterstützen.
Für OpenShift Container Platform 4.2 bis 4.10 erbt das Migration Toolkit for Containers (MTC) die clusterweiten Proxy-Einstellungen. Sie können die Proxy-Parameter ändern, wenn Sie die clusterweiten Proxy-Einstellungen außer Kraft setzen wollen.
Sie müssen die Proxys so konfigurieren, dass sie das SPDY-Protokoll zulassen und den Header Upgrade HTTP
an den API-Server weiterleiten. Andernfalls wird die Fehlermeldung Upgrade request required
angezeigt. Die CR MigrationController
verwendet SPDY, um Befehle in Remote-Pods auszuführen. Der Header Upgrade HTTP
ist erforderlich, um eine Websocket-Verbindung mit dem API-Server zu öffnen.
Direct Volume Migration
Wenn Sie eine Direct Volume Migration (DVM) von einem Quell-Cluster hinter einem Proxy durchführen, müssen Sie einen Stunnel-Proxy konfigurieren. Stunnel erstellt einen transparenten Tunnel zwischen dem Quell- und dem Ziel-Cluster für die TCP-Verbindung, ohne die Zertifikate zu ändern.
Die DVM unterstützt nur einen Proxy. Der Quell-Cluster kann nicht auf die Route des Ziel-Clusters zugreifen, wenn sich der Ziel-Cluster ebenfalls hinter einem Proxy befindet.
Voraussetzungen
-
Sie müssen auf allen Clustern als Benutzer mit
cluster-admin
-Privilegien angemeldet sein.
Vorgehensweise
Rufen Sie das CR-Manifest
MigrationController
ab:oc get migrationcontroller <migration_controller> -n openshift-migration
$ oc get migrationcontroller <migration_controller> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie die Proxy-Parameter:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Stunnel-Proxy-URL für die Direct Volume Migration.
- 2
- Proxy-URL für die Erstellung von HTTP-Verbindungen außerhalb des Clusters. Das URL-Schema muss
http
sein. - 3
- Proxy-URL für die Erstellung von HTTPS-Verbindungen außerhalb des Clusters. Wenn dies nicht angegeben wird, wird
httpProxy
sowohl für HTTP- als auch für HTTPS-Verbindungen verwendet. - 4
- Durch Kommata getrennte Liste von Zieldomain-Namen, Domains, IP-Adressen oder anderen Netzwerk-CIDRs zum Ausschluss von Proxying.
Stellen Sie einer Domain ein
.
voran, um nur Subdomains zu finden. Zum Beispiel gibt es bei.y.com
eine Übereinstimmung mitx.y.com
, aber nicht mity.com
. Verwenden Sie*
, um den Proxy für alle Ziele zu umgehen. Wenn Sie Worker hochskalieren, die nicht in dem durch das Installationskonfigurationsfeldnetworking.machineNetwork[].cidr
definierten Netzwerk enthalten sind, müssen Sie sie zu dieser Liste hinzufügen, um Verbindungsprobleme zu vermeiden.Dieses Feld wird ignoriert, wenn weder das Feld
httpProxy
noch das FeldhttpsProxy
konfiguriert ist.-
Speichern Sie das Manifest als
migration-controller.yaml
. Wenden Sie das aktualisierte Manifest an:
oc replace -f migration-controller.yaml -n openshift-migration
$ oc replace -f migration-controller.yaml -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.4. Migration einer Anwendung mit Hilfe der MTC-API Link kopierenLink in die Zwischenablage kopiert!
Sie können eine Anwendung über die Befehlszeile migrieren, indem Sie die MTC-API (Migration Toolkit for Containers) verwenden.
Vorgehensweise
Erstellen Sie ein
MigCluster
-CR-Manifest für den Host-Cluster:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie ein
Secret
-Objektmanifest für jeden Remote-Cluster:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie das base64-kodierte SA-Token (Service Account)
migration-controller
des Remote-Clusters an. Sie erhalten das Token, indem Sie den folgenden Befehl ausführen:
oc sa get-token migration-controller -n openshift-migration | base64 -w 0
$ oc sa get-token migration-controller -n openshift-migration | base64 -w 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie für jeden Remote-Cluster ein
MigCluster
-CR-Manifest:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie die CR
Cluster
des Remote-Clusters an. - 2
- Optional: Geben Sie für die Direct Image Migration die verfügbare Registrierungsroute an.
- 3
- Bei
false
ist die SSL-Verifizierung aktiviert. CA-Zertifikate sind nicht erforderlich und werden nicht überprüft, wenntrue
. - 4
- Geben Sie das Objekt
Secret
des Remote-Clusters an. - 5
- Geben Sie die URL des Remote-Clusters an.
Verifizieren Sie, dass sich alle Cluster im Status
Ready
befinden:oc describe cluster <cluster>
$ oc describe cluster <cluster>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie ein
Secret
-Objektmanifest für das Replikations-Repository:Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS-Anmeldedaten sind standardmäßig base64-kodiert. Bei anderen Speicheranbietern müssen Sie Ihre Anmeldedaten verschlüsseln, indem Sie den folgenden Befehl mit jedem Schlüssel ausführen:
echo -n "<key>" | base64 -w 0
$ echo -n "<key>" | base64 -w 0
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie die Schlüssel-ID oder den geheimen Schlüssel an. Beide Schlüssel müssen base64-kodiert sein.
Erstellen Sie ein
MigStorage
-CR-Manifest für das Replikations-Repository:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie den Bucket-Namen an.
- 2
- Geben Sie die CR
Secrets
des Objektspeichers an. Sie müssen sicherstellen, dass die in der CRSecrets
des Objektspeichers gespeicherten Anmeldedaten korrekt sind. - 3
- Geben Sie den Speicheranbieter an.
- 4
- Optional: Wenn Sie Daten mit Hilfe von Schnappschüssen kopieren, geben Sie die CR
Secrets
des Objektspeichers an. Sie müssen sicherstellen, dass die in der CRSecrets
des Objektspeichers gespeicherten Anmeldedaten korrekt sind. - 5
- Optional: Wenn Sie Daten mit Hilfe von Schnappschüssen kopieren, geben Sie den Speicheranbieter an.
Verifizieren Sie, dass die CR
MigStorage
den StatusReady
hat:oc describe migstorage <migstorage>
$ oc describe migstorage <migstorage>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie ein
MigPlan
-CR-Manifest:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Direct Image Migration ist aktiviert, wenn
false
. - 2
- Direct Volume Migration ist aktiviert, wenn
false
. - 3
- Geben Sie den Namen der CR-Instanz
MigStorage
an. - 4
- Geben Sie einen oder mehrere Quell-Namespaces an. Standardmäßig hat der Ziel-Namespace denselben Namen.
- 5
- Geben Sie einen Ziel-Namespace an, wenn er sich vom Quell-Namespace unterscheidet.
- 6
- Geben Sie den Namen der Instanz
MigCluster
des Quell-Clusters an.
Vergewissern Sie sich, dass die Instanz
MigPlan
sich im StatusReady
befindet:oc describe migplan <migplan> -n openshift-migration
$ oc describe migplan <migplan> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie ein
MigMigration
-CR-Manifest, um die in der InstanzMigPlan
definierte Migration zu starten:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie den Namen der CR
MigPlan
an. - 2
- Die Pods auf dem Quell-Cluster werden vor der Migration gestoppt, wenn
true
. - 3
- Wenn
true
, wird eine Stage-Migration durchgeführt, bei der die meisten Daten kopiert werden, ohne die Anwendung anzuhalten. - 4
- Eine abgeschlossene Migration wird rückgängig gemacht, wenn
true
.
Überprüfen Sie die Migration, indem Sie den Fortschritt der CR
MigMigration
beobachten:oc watch migmigration <migmigration> -n openshift-migration
$ oc watch migmigration <migmigration> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Ausgabe sieht wie folgt aus:
Beispielausgabe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.5. State-Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können wiederholbare, reine State-Migrationen durchführen, indem Sie Migration Toolkit for Container (MTC) verwenden, um Persistent Volume Claims (PVCs) zu migrieren, die den Zustand einer Anwendung bilden. Sie migrieren bestimmte PVCs, indem Sie andere PVCs aus dem Migrationsplan ausschließen. PV-Daten (Persistent Volume) werden auf den Ziel-Cluster kopiert. Die PV-Referenzen werden nicht verschoben. Die Anwendungspods werden weiterhin auf dem Quell-Cluster ausgeführt. Sie können die PVCs zuordnen, um sicherzustellen, dass die Quell- und Ziel-PVCs synchronisiert sind.
Sie können eine einmalige Migration von Kubernetes-Objekten durchführen, die den Status einer Anwendung bilden.
Wenn Sie über eine CI/CD-Pipeline verfügen, können Sie zustandslose Komponenten migrieren, indem Sie sie auf dem Ziel-Cluster bereitstellen. Dann können Sie zustandsbehaftete Komponenten mit Hilfe von MTC migrieren.
Sie können eine State-Migration zwischen Clustern oder innerhalb desselben Clusters durchführen.
Bei der State-Migration werden nur die Komponenten migriert, die den Status einer Anwendung bilden. Wenn Sie einen ganzen Namespace migrieren möchten, verwenden Sie die Stage- oder Cutover-Migration.
Zusätzliche Ressourcen
- Siehe Ausschließen von PVCs von der Migration, um PVCs für die Statusmigration auszuwählen.
- Siehe Zuordnen von PVCs, um Quell-PV-Daten zu bereitgestellten PVCs auf dem Ziel-Cluster zu migrieren.
- Siehe Migrieren von Kubernetes-Objekten, um die Kubernetes-Objekte zu migrieren, die den Status einer Anwendung bilden.
11.3. Hooks für die Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können einem einzelnen Migrationsplan bis zu vier Hooks für die Migration hinzufügen, wobei jeder Hook in einer anderen Phase der Migration ausgeführt wird. Hooks für die Migration übernehmen Aufgaben wie die Anpassung der Anwendungsruhezeit, die manuelle Migration nicht unterstützter Datentypen und die Aktualisierung von Anwendungen nach der Migration.
Ein Hook für die Migration wird auf einem Quell- oder Ziel-Cluster bei einem der folgenden Migrationsschritte ausgeführt:
-
PreBackup
: Bevor die Ressourcen auf dem Quell-Cluster gesichert werden. -
PostBackup
: Nachdem die Ressourcen auf dem Quell-Cluster gesichert wurden. -
PreRestore
: Bevor die Ressourcen auf dem Ziel-Cluster wiederhergestellt werden. -
PostRestore
: Nachdem die Ressourcen auf dem Ziel-Cluster wiederhergestellt wurden.
Sie können einen Hook erstellen, indem Sie ein Ansible-Playbook erstellen, das mit dem standardmäßigen Ansible-Image oder mit einem benutzerdefinierten Hook-Container ausgeführt wird.
Ansible-Playbook
Das Ansible-Playbook wird in einen Hook-Container als Config-Map eingebunden. Der Hook-Container wird als Auftrag ausgeführt und verwendet den Cluster, den Service Account und den Namespace, die in der Custom Resource MigPlan
angegeben sind. Der Auftrag wird so lange ausgeführt, bis er die Standardgrenze von 6 Wiederholungen erreicht oder erfolgreich abgeschlossen wird. Dies gilt auch dann, wenn der ursprüngliche Pod gestoppt oder beendet wird.
Das standardmäßige Ansible-Laufzeit-Image ist registry.redhat.io/rhmtc/openshift-migration-hook-runner-rhel7:1.6
. Dieses Image basiert auf dem Ansible-Runner-Image und enthält python-openshift
für Ansible-Kubernetes-Ressourcen und eine aktualisierte oc
-Binärdatei.
Kundenspezifischer Hook-Container
Sie können einen eigenen Hook-Container anstelle des standardmäßigen Ansible-Image verwenden.
11.3.1. Schreiben eines Ansible-Playbooks für einen Hook für die Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können ein Ansible-Playbook schreiben, das als Hook für die Migration dient. Der Hook wird einem Migrationsplan über die MTC-Webkonsole oder durch Angabe von Werten für die spec.hooks
-Parameter im Manifest der Custom Resource (CR) MigPlan
hinzugefügt.
Das Ansible-Playbook wird als Config-Map in einen Hook-Container eingebunden. Der Hook-Container wird als Auftrag ausgeführt und verwendet den Cluster, den Service Account und den Namespace, die in der CR MigPlan
angegeben sind. Der Hook-Container verwendet ein bestimmtes Service Account-Token, sodass die Aufgaben keine Authentifizierung erfordern, bevor sie im Cluster ausgeführt werden.
11.3.1.1. Ansible-Module Link kopierenLink in die Zwischenablage kopiert!
Sie können das Ansible-Modul shell
verwenden, um oc
-Befehle auszuführen.
Beispiel für ein shell
-Modul
- hosts: localhost gather_facts: false tasks: - name: get pod name shell: oc get po --all-namespaces
- hosts: localhost
gather_facts: false
tasks:
- name: get pod name
shell: oc get po --all-namespaces
Sie können kubernetes.core
-Module wie z. B. k8s_info
verwenden, um mit Kubernetes-Ressourcen zu interagieren.
Beispiel für ein k8s_facts
-Modul
Sie können das Modul fail
verwenden, um einen Exit-Status ungleich 0 in Fällen zu erzeugen, in denen dieser Status normalerweise erzeugt werden würde. Dies würde die Erkennung eines erfolgreichen oder fehlerhaften Hook sicherstellen. Hooks werden als Aufträge ausgeführt und der Erfolg oder Misserfolg eines Hook basiert auf dem Exit-Status des Auftragscontainers.
Beispiel für ein fail
-Modul
11.3.1.2. Umgebungsvariablen Link kopierenLink in die Zwischenablage kopiert!
Der CR-Name MigPlan
und die Namespaces für die Migration werden als Umgebungsvariablen an den Hook-Container übergeben. Der Zugriff auf diese Variablen erfolgt über das Plugin lookup
.
Beispiel für Umgebungsvariablen
11.4. Optionen für den Migrationsplan Link kopierenLink in die Zwischenablage kopiert!
Sie können Komponenten in der Custom Resource (CR) MigPlan
ausschließen, bearbeiten und zuordnen.
11.4.1. Ausschließen von Ressourcen Link kopierenLink in die Zwischenablage kopiert!
Sie können Ressourcen, z. B. Image-Streams, Persistent Volumes (PVs) oder Abonnements, aus einem Migrationsplan des Migration Toolkit for Containers (MTC) ausschließen, um die Ressourcenlast für die Migration zu reduzieren oder um Images oder PVs mit einem anderen Tool zu migrieren.
Standardmäßig schließt das MTC Servicekatalog- und OLM-Ressourcen (Operator Lifecycle Manager) von der Migration aus. Diese Ressourcen sind Teil der Servicekatalog-API- und der OLM-API-Gruppe, die beide derzeit nicht für die Migration unterstützt werden.
Vorgehensweise
Bearbeiten Sie das Manifest der Custom Resource
MigrationController
:oc edit migrationcontroller <migration_controller> -n openshift-migration
$ oc edit migrationcontroller <migration_controller> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie den Abschnitt
spec
, indem Sie einen Parameter hinzufügen, um bestimmte Ressourcen auszuschließen, oder indem Sie eine Ressource zum Parameterexcluded_resources
hinzufügen, wenn sie keinen eigenen Ausschlussparameter hat:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Fügen Sie
disable_image_migration: true
hinzu, um Image Streams von der Migration auszuschließen. Bearbeiten Sie den Parameterexcluded_resources
nicht.imagestreams
wird zuexcluded_resources
hinzugefügt, wenn der PodMigrationController
neu startet. - 2
- Fügen Sie
disable_pv_migration: true
hinzu, um PVs aus dem Migrationsplan auszuschließen. Bearbeiten Sie den Parameterexcluded_resources
nicht.persistentvolumes
undpersistentvolumeclaims
werden zuexcluded_resources
hinzugefügt, wenn der PodMigrationController
neu startet. Die Deaktivierung der PV-Migration deaktiviert auch die PV-Erkennung bei der Erstellung des Migrationsplans. - 3
- Sie können OpenShift Container Platform-Ressourcen zur Liste
excluded_resources
hinzufügen. Löschen Sie die standardmäßig ausgeschlossenen Ressourcen nicht. Diese Ressourcen sind schwer zu migrieren und müssen ausgeschlossen werden.
-
Warten Sie zwei Minuten, bis der Pod
MigrationController
neu gestartet ist, damit die Änderungen übernommen werden. Überprüfen Sie, ob die Ressource ausgeschlossen wurde:
oc get deployment -n openshift-migration migration-controller -o yaml | grep EXCLUDED_RESOURCES -A1
$ oc get deployment -n openshift-migration migration-controller -o yaml | grep EXCLUDED_RESOURCES -A1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Ausgabe enthält die ausgeschlossenen Ressourcen:
Beispielausgabe
- name: EXCLUDED_RESOURCES value: imagetags,templateinstances,clusterserviceversions,packagemanifests,subscriptions,servicebrokers,servicebindings,serviceclasses,serviceinstances,serviceplans,imagestreams,persistentvolumes,persistentvolumeclaims
- name: EXCLUDED_RESOURCES value: imagetags,templateinstances,clusterserviceversions,packagemanifests,subscriptions,servicebrokers,servicebindings,serviceclasses,serviceinstances,serviceplans,imagestreams,persistentvolumes,persistentvolumeclaims
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.2. Zuordnen von Namespaces Link kopierenLink in die Zwischenablage kopiert!
Wenn Sie Namespaces in der Custom Resource (CR) MigPlan
zuordnen, müssen Sie sicherstellen, dass die Namespaces weder auf dem Quell- noch auf dem Ziel-Cluster dupliziert werden, da die UID- und GID-Bereiche der Namespaces während der Migration kopiert werden.
Zwei Quell-Namespaces, die demselben Ziel-Namespace zugeordnet sind
spec: namespaces: - namespace_2 - namespace_1:namespace_2
spec:
namespaces:
- namespace_2
- namespace_1:namespace_2
Wenn Sie möchten, dass der Quell-Namespace einem gleichnamigen Namespace zugeordnet wird, müssen Sie kein Mapping erstellen. Standardmäßig haben ein Quell- und ein Ziel-Namespace denselben Namen.
Falsche Namespace-Zuordnung
spec: namespaces: - namespace_1:namespace_1
spec:
namespaces:
- namespace_1:namespace_1
Korrekte Namespace-Referenz
spec: namespaces: - namespace_1
spec:
namespaces:
- namespace_1
11.4.3. Ausschließen von Persistent Volume Claims Link kopierenLink in die Zwischenablage kopiert!
Sie wählen Persistent Volume Claims (PVCs) für die Statusmigration aus, indem Sie die PVCs ausschließen, die Sie nicht migrieren möchten. Sie schließen PVCs aus, indem Sie den Parameter spec.persistentVolumes.pvc.selection.action
der Custom Resource (CR) MigPlan
festlegen, nachdem die Persistent Volumes (PVs) erkannt worden sind.
Voraussetzungen
-
CR
MigPlan
befindet sich im StatusReady
.
Vorgehensweise
Fügen Sie den Parameter
spec.persistentVolumes.pvc.selection.action
zur CRMigPlan
hinzu und legen Sie ihn aufskip
fest:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.4. Zuordnen von Persistent Volume Claims Link kopierenLink in die Zwischenablage kopiert!
Sie können PV-Daten (Persistent Volume) aus dem Quell-Cluster in Persistent Volume Claims (PVCs) migrieren, die bereits im Ziel-Cluster in der CR MigPlan
bereitgestellt wurden, indem Sie die PVCs zuordnen. Dieses Mapping stellt sicher, dass die Ziel-PVCs der migrierten Anwendungen mit den Quell-PVCs synchronisiert werden.
Sie ordnen PVCs zu, indem Sie den Parameter spec.persistentVolumes.pvc.name
in der Custom Resource (CR) MigPlan
aktualisieren, nachdem die PVs erkannt wurden.
Voraussetzungen
-
CR
MigPlan
befindet sich im StatusReady
.
Vorgehensweise
Aktualisieren Sie den Parameter
spec.persistentVolumes.pvc.name
in der CRMigPlan
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie den PVC auf dem Quell-Cluster und den PVC auf dem Ziel-Cluster an. Wenn der Ziel-PVC nicht existiert, wird er erstellt. Sie können dieses Mapping verwenden, um den PVC-Namen während der Migration zu ändern.
11.4.5. Bearbeiten von Attributen von Persistent Volumes Link kopierenLink in die Zwischenablage kopiert!
Nachdem Sie die Custom Resource (CR) MigPlan
erstellt haben, erkennt die CR MigrationController
die Persistent Volumes (PVs). Der Block spec.persistentVolumes
und der Block status.destStorageClasses
werden der CR MigPlan
hinzugefügt.
Sie können die Werte im Block spec.persistentVolumes.selection
bearbeiten. Wenn Sie Werte außerhalb des Blocks spec.persistentVolumes.selection
ändern, werden die Werte überschrieben, wenn die CR MigPlan
mit der CR MigrationController
abgestimmt wird.
Der Standardwert für den Parameter spec.persistentVolumes.selection.storageClass
wird durch die folgende Logik bestimmt:
-
Wenn das PV des Quell-Clusters Gluster oder NFS ist, ist der Standard entweder
cephfs
füraccessMode: ReadWriteMany
odercephrbd
füraccessMode: ReadWriteOnce
. -
Wenn es sich bei dem PV weder um Gluster noch um NFS handelt oder wenn
cephfs
odercephrbd
nicht verfügbar ist, wird standardmäßig eine Speicherklasse für denselben Anbieter verwendet. - Wenn keine Speicherklasse für denselben Anbieter verfügbar ist, wird als Standard die Standard-Speicherklasse des Ziel-Clusters verwendet.
Sie können den Wert von storageClass
in den Wert eines beliebigen name
-Parameters im Block status.destStorageClasses
der CR MigPlan
ändern.
Wenn der Wert für storageClass
leer ist, hat das PV nach der Migration keine Speicherklasse. Diese Option eignet sich beispielsweise, wenn Sie das PV auf ein NFS-Volume auf dem Ziel-Cluster verschieben möchten.
Voraussetzungen
-
CR
MigPlan
befindet sich im StatusReady
.
Vorgehensweise
Bearbeiten Sie die Werte von
spec.persistentVolumes.selection
in der CRMigPlan
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Erlaubte Werte sind
move
,copy
undskip
. Wenn nur eine Aktion unterstützt wird, ist der Standardwert die unterstützte Aktion. Wenn mehrere Aktionen unterstützt werden, ist der Standardwertcopy
. - 2
- Erlaubte Werte sind
snapshot
undfilesystem
. Der Standardwert istfilesystem
. - 3
- Der Parameter
verify
wird angezeigt, wenn Sie in der MTC-Webkonsole die Verifizierungsoption für Dateisystemkopien auswählen. Sie können ihn auffalse
festlegen. - 4
- Sie können den Standardwert in den Wert eines beliebigen
name
-Parameters im Blockstatus.destStorageClasses
der CRMigPlan
ändern. Wenn kein Wert angegeben wird, hat der PV nach der Migration keine Speicherklasse. - 5
- Erlaubte Werte sind
ReadWriteOnce
undReadWriteMany
. Wird dieser Wert nicht angegeben, gilt als Standard der Zugriffsmodus des PVC des Quell-Clusters. Sie können den Zugriffsmodus nur in der CRMigPlan
bearbeiten. Sie können ihn nicht über die MTC-Webkonsole bearbeiten.
Zusätzliche Ressourcen
-
Einzelheiten zu den Aktionen
move
undcopy
finden Sie unter MTC-Workflow. -
Weitere Informationen über die Aktion
skip
finden Sie unter Ausschließen von PVCs von der Migration. - Einzelheiten zu den Dateisystem- und Schnappschuss-Kopiermethoden finden Sie unter Über Daten-Kopiermethoden.
11.4.6. Migrieren von Kubernetes-Objekten Link kopierenLink in die Zwischenablage kopiert!
Sie können eine einmalige Migration von Kubernetes-Objekten durchführen, die den Status einer Anwendung bilden.
Nach der Migration wird der Parameter closed
der CR MigPlan
auf true
festgelegt. Sie können keine weitere MigMigration
-CR für diese MigPlan
-CR erstellen.
Sie fügen Kubernetes-Objekte zur CR MigPlan
hinzu, indem Sie eine der folgenden Optionen verwenden:
-
Hinzufügen der Kubernetes-Objekte zum Abschnitt
includedResources
-
Verwenden des Parameters
labelSelector
zum Verweisen auf Kubernetes-Objekte mit Bezeichnung -
Hinzufügen von Kubernetes-Objekten zum Abschnitt
includedResources
und anschließendes Filtern mit dem ParameterlabelSelector
, z. B. RessourcenSecret
undConfigMap
mit der Bezeichnungapp: frontend
11.5. Optionen für Migration Controller Link kopierenLink in die Zwischenablage kopiert!
Sie können in der Custom Resource (CR) MigrationController
Grenzen für Migrationspläne bearbeiten, die Größenänderung von Persistent Volumes aktivieren oder zwischengespeicherte Kubernetes-Clients für große Migrationen und verbesserte Leistung aktivieren.
11.5.1. Anheben der Grenzen für große Migrationen Link kopierenLink in die Zwischenablage kopiert!
Mit dem Migration Toolkit for Containers (MTC) können Sie die Grenzen für Migrationsobjekte und Container-Ressourcen für große Migrationen anheben.
Sie müssen diese Änderungen testen, bevor Sie eine Migration in einer Produktionsumgebung durchführen.
Vorgehensweise
Bearbeiten Sie das Manifest der Custom Resource (CR)
MigrationController
:oc edit migrationcontroller -n openshift-migration
$ oc edit migrationcontroller -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aktualisieren Sie die folgenden Parameter:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Gibt die Anzahl der CPUs an, die der CR
MigrationController
zur Verfügung stehen. - 2
- Gibt an, wie viel Speicherplatz der CR
MigrationController
zur Verfügung steht. - 3
- Gibt die Anzahl der für Anforderungen der CR
MigrationController
verfügbaren CPU-Einheiten an.100m
entsprechen 0,1 CPU-Einheiten (100 * 1e-3). - 4
- Gibt an, wie viel Speicherplatz für Anforderungen der CR
MigrationController
zur Verfügung steht. - 5
- Gibt die Anzahl der Persistent Volumes an, die migriert werden können.
- 6
- Gibt die Anzahl der Pods an, die migriert werden können.
- 7
- Gibt die Anzahl der Namespaces an, die migriert werden können.
Erstellen Sie einen Migrationsplan, der die aktualisierten Parameter verwendet, um die Änderungen zu verifizieren.
Wenn Ihr Migrationsplan die Grenzen der CR
MigrationController
überschreitet, zeigt die MTC-Konsole eine Warnmeldung an, wenn Sie den Migrationsplan speichern.
11.5.2. Aktivieren der Größenänderung eines Persistent Volume für Direct Volume Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können die Größenänderung von Persistent Volumes (PV) für Direct Volume Migration aktivieren, um zu vermeiden, dass der Festplatten-Speicherplatz auf dem Ziel-Cluster knapp wird.
Wenn die Festplattennutzung eines PV ein konfiguriertes Niveau erreicht, vergleicht die Custom Resource (CR) MigrationController
die angeforderte Speicherkapazität eines Persistent Volume Claim (PVC) mit dessen tatsächlich bereitgestellter Kapazität. Anschließend wird der benötigte Speicherplatz auf dem Ziel-Cluster berechnet.
Der Parameter pv_resizing_threshold
legt fest, wann die PV-Größenänderung verwendet wird. Der Standardwert ist 3%
. Das bedeutet, dass eine Größenänderung des PV erfolgt, wenn die Festplattennutzung eines PV mehr als 97%
beträgt. Sie können diesen Schwellenwert erhöhen, damit die PV-Größenänderung bei einer geringeren Festplattennutzung erfolgt.
Die PVC-Kapazität wird nach den folgenden Kriterien berechnet:
-
Wenn die angeforderte Speicherkapazität
(spec.resources.requests.storage
) des PVC nicht mit seiner tatsächlich bereitgestellten Kapazität(status.capacity.storage
) übereinstimmt, wird der größere Wert verwendet. - Wenn ein PV über einen PVC bereitgestellt und dann später geändert wird, sodass seine PV- und PVC-Kapazitäten nicht mehr übereinstimmen, wird der größere Wert verwendet.
Voraussetzungen
-
Die PVCs müssen mit einem oder mehreren ausgeführten Pods verbunden sein, damit die CR
MigrationController
Befehle ausführen kann.
Vorgehensweise
- Melden Sie sich beim Host-Cluster an.
Aktivieren Sie die Größenänderung des PV, indem Sie die CR
MigrationController
patchen:oc patch migrationcontroller migration-controller -p '{"spec":{"enable_dvm_pv_resizing":true}}' \ --type='merge' -n openshift-migration
$ oc patch migrationcontroller migration-controller -p '{"spec":{"enable_dvm_pv_resizing":true}}' \
1 --type='merge' -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Legen Sie den Wert auf
false
fest, um die Größenänderung des PV zu deaktivieren.
Optional: Aktualisieren Sie den Parameter
pv_resizing_threshold
, um den Schwellenwert zu erhöhen:oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \ --type='merge' -n openshift-migration
$ oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \
1 --type='merge' -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Der Standardwert ist
3
.
Wenn der Schwellenwert überschritten wird, wird die folgende Statusmeldung im Status der CR
MigPlan
angezeigt:Copy to Clipboard Copied! Toggle word wrap Toggle overflow AnmerkungBei AWS gp2-Speicher wird diese Meldung nur angezeigt, wenn
pv_resizing_threshold
42 % oder mehr beträgt, da gp2 die Volume-Nutzung und -Größe auf diese Weise berechnet. (BZ#1973148)
11.5.3. Aktivieren von zwischengespeicherten Kubernetes-Clients Link kopierenLink in die Zwischenablage kopiert!
Sie können zwischengespeicherte Kubernetes-Clients in der Custom Ressource (CR) MigrationController
aktivieren, um die Leistung während der Migration zu verbessern. Der größte Leistungsvorteil zeigt sich bei der Migration zwischen Clustern in verschiedenen Regionen oder bei erheblicher Netzwerklatenz.
Delegierte Aufgaben, z. B. Rsync-Backup für Direct Volume Migration oder Velero-Backup und -Restore, zeigen jedoch keine verbesserte Leistung bei zwischengespeicherten Clients.
Zwischenspeicherte Clients benötigen zusätzlichen Arbeitsspeicher, da die CR MigrationController
alle API-Ressourcen zwischenspeichert, die für die Interaktion mit MigCluster
-CRs erforderlich sind. Anfragen, die normalerweise an den API-Server gesendet werden, werden stattdessen an den Cache geleitet. Der Cache überwacht den API-Server auf Updates.
Sie können die Arbeitsspeicher-Grenzen und Anforderungen der CR MigrationController
anheben, wenn OOMKilled
-Fehler auftreten, nachdem Sie zwischengespeicherte Clients aktiviert haben.
Vorgehensweise
Aktivieren Sie zwischengespeicherte Clients, indem Sie den folgenden Befehl ausführen:
oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_enable_cache", "value": true}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_enable_cache", "value": true}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: Erhöhen Sie die Arbeitsspeicher-Grenzen der CR
MigrationController
, indem Sie den folgenden Befehl ausführen:oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: Erhöhen Sie die Arbeitsspeicher-Anforderungen der CR
MigrationController
, indem Sie den folgenden Befehl ausführen:oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kapitel 12. Problembehandlung Link kopierenLink in die Zwischenablage kopiert!
In diesem Abschnitt werden Ressourcen zur Problembehandlung für das Migration Toolkit for Containers (MTC) beschrieben.
Bekannte Probleme finden Sie in den MTC-Versionshinweisen.
12.1. MTC-Workflow Link kopierenLink in die Zwischenablage kopiert!
Sie können Kubernetes-Ressourcen, Persistent Volume-Daten und interne Container-Images auf OpenShift Container Platform 4.10 migrieren, indem Sie die MTC-Webkonsole (Migration Toolkit for Containers) oder die Kubernetes-API verwenden.
MTC migriert die folgenden Ressourcen:
- Ein in einem Migrationsplan angegebener Namespace.
Namespace-gebundene Ressourcen: Wenn der MTC einen Namespace migriert, migriert er alle mit diesem Namespace verbundenen Objekte und Ressourcen, wie z. B. Dienste oder Pods. Wenn außerdem eine Ressource, die im Namespace, aber nicht auf Cluster-Ebene existiert, von einer Ressource abhängt, die auf Cluster-Ebene existiert, migriert das MTC beide Ressourcen.
Ein Security Context Constraint (SCC) ist beispielsweise eine Ressource, die auf Cluster-Ebene existiert, und ein Service Account (SA) ist eine Ressource, die auf Namespace-Ebene existiert. Wenn ein SA in einem Namespace existiert, den das MTC migriert, findet der MTC automatisch alle SCCs, die mit dem SA verknüpft sind, und migriert auch diese SCCs. In ähnlicher Weise migriert der MTC Persistent Volume Claims, die mit den Persistent Volumes des Namespace verknüpft sind.
AnmerkungCluster-gebundene Ressourcen müssen je nach Ressource möglicherweise manuell migriert werden.
- Custom Resources (CRs) und Custom Resource Definitions (CRDs): MTC migriert automatisch CRs und CRDs auf Namespace-Ebene.
Die Migration einer Anwendung mit der MTC-Webkonsole umfasst die folgenden Schritte:
Installieren Sie den Migration Toolkit for Containers Operator auf allen Clustern.
Sie können den Migration Toolkit for Containers Operator in einer eingeschränkten Umgebung mit begrenztem oder keinem Internetzugang installieren. Die Quell- und Ziel-Cluster müssen über einen Netzwerkzugang zueinander und zu einer Spiegelregistrierung verfügen.
Konfigurieren Sie das Replikations-Repository, einen temporären Objektspeicher, den MTC für die Datenmigration verwendet.
Quell- und Ziel-Cluster müssen während der Migration Netzwerkzugriff auf das Replikations-Repository haben. Wenn Sie einen Proxyserver verwenden, müssen Sie ihn so konfigurieren, dass der Netzwerkverkehr zwischen dem Replikations-Repository und den Clustern zugelassen wird.
- Fügen Sie den Quell-Cluster zur MTC-Webkonsole hinzu.
- Fügen Sie das Replikations-Repository zur MTC-Webkonsole hinzu.
Erstellen Sie einen Migrationsplan mit einer der folgenden Datenmigrationsoptionen:
Copy: MTC kopiert die Daten aus dem Quell-Cluster in das Replikations-Repository und aus dem Replikations-Repository in den Ziel-Cluster.
AnmerkungBei der Direct Image Migration oder der Direct Volume Migration werden die Images oder Volumes direkt vom Quell-Cluster auf den Ziel-Cluster kopiert.
Move: MTC gebt die Bereitstellung eines Remote-Volume auf, z. B. NFS auf dem Quell-Cluster, erstellt eine PV-Ressource auf dem Ziel-Cluster, die auf das Remote-Volume zeigt, und stellt dann das Remote-Volume auf dem Ziel-Cluster bereit. Anwendungen, die auf dem Ziel-Cluster ausgeführt werden, verwenden dasselbe Remote-Volume, das auch der Quell-Cluster verwendet hat. Das Remote-Volume muss für den Quell- und den Ziel-Cluster zugänglich sein.
AnmerkungObwohl das Replikations-Repository in diesem Diagramm nicht angezeigt wird, ist es für die Migration erforderlich.
Führen Sie den Migrationsplan mit einer der folgenden Optionen aus:
Stage kopiert Daten auf den Ziel-Cluster, ohne die Anwendung anzuhalten.
Eine Stage-Migration kann mehrfach durchgeführt werden, sodass die meisten Daten vor der Migration auf das Ziel kopiert werden. Die Durchführung einer oder mehrerer Stage-Migrationen verkürzt die Dauer der Cutover-Migration.
Cutover stoppt die Anwendung auf dem Quell-Cluster und verschiebt die Ressourcen auf den Ziel-Cluster.
Optional: Sie können das Kontrollkästchen Halt transactions on the source cluster during migration deaktivieren.
Informationen zu den Custom Resources von MTC
Das Migration Toolkit for Containers (MTC) erstellt die folgenden Custom Resources (CRs):
MigCluster (Konfiguration, MTC-Cluster): Cluster-Definition
MigStorage (Konfiguration, MTC-Cluster): Speicherdefinition
MigPlan (Konfiguration, MTC-Cluster): Migrationsplan
Die CR MigPlan
beschreibt die Quell- und Ziel-Cluster, das Replikations-Repository und die zu migrierenden Namespaces. Sie ist mit 0, 1 oder vielen MigMigration
-CRs verbunden.
Beim Löschen einer MigPlan
-CR werden die damit zusammenhängenden MigMigration
-CRs gelöscht.
BackupStorageLocation (Konfiguration, MTC-Cluster): Speicherort der
Velero
-Backup-Objekte
VolumeSnapshotLocation (Konfiguration, MTC-Cluster): Speicherort der
Velero
-Volume-Schnappschüsse
MigMigration (Aktion, MTC-Cluster): Migration, die jedes Mal erstellt wird, wenn Sie Daten bereitstellen oder migrieren. Jede
MigMigration
-CR hängt mit einer MigPlan
-CR zusammen.
Backup (Aktion, Quell-Cluster): Wenn Sie einen Migrationsplan ausführen, erstellt die CR
MigMigration
zwei Velero
-Backup-CRs auf jedem Quell-Cluster:
- Backup-CR 1 für Kubernetes-Objekte
- Backup-CR 2 für PV-Daten
Restore (Aktion, Ziel-Cluster): Wenn Sie einen Migrationsplan ausführen, erstellt die CR
MigMigration
zwei Velero
-Restore-CRs auf dem Ziel-Cluster:
- CR 1 (mit Backup-CR 2) für PV-Daten wiederherstellen
- CR 2 (mit Backup-CR 1) für Kubernetes-Objekte wiederherstellen
12.2. MTC – Manifeste für Custom Resource Link kopierenLink in die Zwischenablage kopiert!
Migration Toolkit for Containers (MTC) verwendet die folgenden Manifeste der Custom Resource (CR) für die Migration von Anwendungen.
12.2.1. DirectImageMigration Link kopierenLink in die Zwischenablage kopiert!
Die CR DirectImageMigration
kopiert Images direkt vom Quell-Cluster auf den Ziel-Cluster.
12.2.2. DirectImageStreamMigration Link kopierenLink in die Zwischenablage kopiert!
Die CR DirectImageStreamMigration
kopiert Image Stream-Referenzen direkt vom Quell-Cluster zum Ziel-Cluster.
12.2.3. DirectVolumeMigration Link kopierenLink in die Zwischenablage kopiert!
Die CR DirectVolumeMigration
kopiert Persistent Volumes (PVs) direkt vom Quell-Cluster auf den Ziel-Cluster.
- 1
- Legen Sie diesen Wert auf
true
fest, um Namespaces für die PVs auf dem Ziel-Cluster zu erstellen. - 2
- Legen Sie diesen Wert auf
true
fest, umDirectVolumeMigrationProgress
-CRs nach der Migration zu löschen. Der Standardwert istfalse
, damitDirectVolumeMigrationProgress
-CRs zur Fehlerbehebung beibehalten werden. - 3
- Aktualisieren Sie den Clusternamen, wenn der Ziel-Cluster nicht der Host-Cluster ist.
- 4
- Geben Sie einen oder mehrere PVCs an, die migriert werden sollen.
12.2.4. DirectVolumeMigrationProgress Link kopierenLink in die Zwischenablage kopiert!
Die CR DirectVolumeMigrationProgress
zeigt den Fortschritt der CR DirectVolumeMigration
an.
12.2.5. MigAnalytic Link kopierenLink in die Zwischenablage kopiert!
Die CR MigAnalytic
erfasst die Anzahl der Images, Kubernetes-Ressourcen und die Kapazität des Persistent Volume (PV) von einer zugehörigen MigPlan
-CR.
Sie können die gesammelten Daten konfigurieren.
- 1
- Optional: Gibt die Anzahl der Images zurück.
- 2
- Optional: Gibt die Nummer, Art und API-Version der Kubernetes-Ressourcen zurück.
- 3
- Optional: Gibt die PV-Kapazität zurück.
- 4
- Gibt eine Liste von Image-Namen zurück. Der Standardwert ist
false
, damit die Ausgabe nicht zu lang ist. - 5
- Optional: Geben Sie die maximale Anzahl der Image-Namen an, die zurückgegeben werden sollen, wenn
listImages
=true
ist.
12.2.6. MigCluster Link kopierenLink in die Zwischenablage kopiert!
Die CR MigCluster
definiert einen Host-, einen lokalen oder einen Remote-Cluster.
- 1
- Aktualisieren Sie den Clusternamen, falls der Pod
migration-controller
nicht auf diesem Cluster ausgeführt wird. - 2
- Der Pod
migration-controller
wird auf diesem Cluster ausgeführt, wenn der Werttrue
ist. - 3
- Nur bei Microsoft Azure: Geben Sie die Ressourcengruppe an.
- 4
- Optional: Wenn Sie ein Zertifikatpaket für selbstsignierte CA-Zertifikate erstellt haben und der Parameter
insecure
den Wertfalse
hat, geben Sie das base64-kodierte Zertifikatpaket an. - 5
- Legen Sie diesen Wert auf
true
fest, um die SSL-Verifizierung zu deaktivieren. - 6
- Legen Sie diesen Wert auf
true
fest, um den Cluster zu validieren. - 7
- Legen Sie diesen Wert auf
true
fest, um dieRestic
-Pods auf dem Quell-Cluster neu zu starten, nachdem dieStage
-Pods erstellt wurden. - 8
- Nur für Remote-Cluster und Direct Image Migration: Geben Sie den zugänglichen sicheren Registrierungspfad an.
- 9
- Nur für Remote-Cluster: Geben Sie die URL an.
- 10
- Nur für Remote-Cluster: Geben Sie den Namen des Objekts
Secret
an.
12.2.7. MigHook Link kopierenLink in die Zwischenablage kopiert!
Die CR MigHook
definiert einen Hook für die Migration, der benutzerdefinierten Code in einer angegebenen Phase der Migration ausführt. Sie können bis zu vier Hooks für die Migration erstellen. Jeder Hook wird während einer anderen Phase der Migration ausgeführt.
Sie können den Hook-Namen, die Laufzeit, ein benutzerdefiniertes Image und den Cluster, in dem der Hook ausgeführt wird, konfigurieren.
Die Migrationsphasen und Namespaces der Hook werden in der CR MigPlan
konfiguriert.
- 1
- Optional: An den Wert dieses Parameters wird ein eindeutiger Hash angehängt, damit jeder Hook für die Migration einen eindeutigen Namen hat. Sie müssen den Wert des Parameters
name
nicht angeben. - 2
- Geben Sie den Namen des Hook für die Migration an, falls Sie den Wert des Parameters
generateName
nicht angeben. - 3
- Optional: Geben Sie die maximale Anzahl von Sekunden an, die ein Hook ausgeführt werden soll. Der Standardwert ist
1800
. - 4
- Der Hook ist ein benutzerdefiniertes Image, wenn der Wert auf
true
festgelegt wird. Das benutzerdefinierte Image kann Ansible enthalten oder in einer anderen Programmiersprache geschrieben sein. - 5
- Geben Sie das benutzerdefinierte Image an. Zum Beispiel:
quay.io/konveyor/hook-runner:latest
. Erforderlich, wenncustom
=true
ist. - 6
- Base64-kodiertes Ansible-Playbook. Erforderlich, wenn
custom
=false
ist. - 7
- Geben Sie den Cluster an, in dem der Hook ausgeführt werden soll. Gültige Werte sind
source
oderdestination
.
12.2.8. MigMigration Link kopierenLink in die Zwischenablage kopiert!
Die CR MigMigration
führt eine CR MigPlan
aus.
Sie können eine Migmigration
-CR konfigurieren, um eine Stage- oder schrittweise Migration durchzuführen, eine laufende Migration abzubrechen oder eine abgeschlossene Migration zurückzusetzen.
- 1
- Legen Sie Sie diesen Wert auf
true
fest, um eine laufende Migration abzubrechen. - 2
- Legen Sie diesen Wert auf
true
fest, um eine abgeschlossene Migration zurückzusetzen. - 3
- Legen Sie diesen Wert auf
true
fest, um eine Stage-Migration durchzuführen. Die Daten werden schrittweise kopiert und die Pods auf dem Quell-Cluster nicht angehalten. - 4
- Legen Sie diesen Wert auf
true
fest, um die Anwendung während der Migration anzuhalten. Die Pods auf dem Quell-Cluster werden nach der PhaseBackup
auf0
skaliert. - 5
- Legen Sie diesen Wert auf
true
fest, um die während der Migration angewendeten Bezeichnungen und Annotationen beizubehalten. - 6
- Legen Sie diesen Wert auf
true
fest, um den Status der migrierten Pods auf dem Ziel-Cluster zu überprüfen und die Namen der Pods zurückzugeben, die sich nicht im StatusRunning
befinden.
12.2.9. MigPlan Link kopierenLink in die Zwischenablage kopiert!
Die CR MigPlan
definiert die Parameter eines Migrationsplans.
Sie können Ziel-Namespaces, Hook-Phasen und direkte oder indirekte Migrationen konfigurieren.
Standardmäßig hat ein Ziel-Namespace denselben Namen wie der Quell-Namespace. Wenn Sie einen abweichenden Ziel-Namespace konfigurieren, müssen Sie sicherstellen, dass die Namespaces weder auf dem Quell- noch auf dem Ziel-Cluster dupliziert werden, da die UID- und GID-Bereiche während der Migration kopiert werden.
- 1
- Die Migration ist abgeschlossen, wenn der Wert
true
ist. Sie können keine weitereMigMigration
-CR für dieseMigPlan
-CR erstellen. - 2
- Optional: Sie können bis zu vier Hooks für die Migration angeben. Jeder Hook muss während einer anderen Migrationsphase ausgeführt werden.
- 3
- Optional: Geben Sie den Namespace an, in dem der Hook ausgeführt werden soll.
- 4
- Optional: Geben Sie die Migrationsphase an, während der ein Hook ausgeführt wird. Ein Hook kann einer Phase zugewiesen werden. Gültige Werte sind
PreBackup
,PostBackup
,PreRestore
undPostRestore
. - 5
- Optional: Geben Sie den Namen der CR
MigHook
an. - 6
- Optional: Geben Sie den Namespace der CR
MigHook
an. - 7
- Optional: Geben Sie einen Service Account mit
cluster-admin
-Privilegien an. - 8
- Wenn
true
, ist die Direct Image Migration deaktiviert. Images werden vom Quell-Cluster in das Replikations-Repository und vom Replikations-Repository in den Ziel-Cluster kopiert. - 9
- Direct Volume Migration ist deaktiviert, wenn
true
. PVs werden vom Quell-Cluster in das Replikations-Repository und vom Replikations-Repository in den Ziel-Cluster kopiert. - 10
- Geben Sie einen oder mehrere Quell-Namespaces an. Wenn Sie nur den Quell-Namespace angeben, ist der Ziel-Namespace derselbe.
- 11
- Geben Sie den Ziel-Namespace an, wenn er sich vom Quell-Namespace unterscheidet.
- 12
- Die CR
MigPlan
wird validiert, wenn sietrue
ist.
12.2.10. MigStorage Link kopierenLink in die Zwischenablage kopiert!
Die CR MigStorage
beschreibt den Objektspeicher für das Replikations-Repository.
Amazon Web Services (AWS), Microsoft Azure, Google Cloud Storage, Multi-Cloud Object Gateway und allgemeiner S3-kompatibler Cloud-Speicher werden unterstützt.
AWS und die Schnappschuss-Kopiermethode haben zusätzliche Parameter.
- 1
- Geben Sie den Speicheranbieter an.
- 2
- Nur bei der Schnappschuss-Kopiermethode: Geben Sie den Speicheranbieter an.
- 3
- Nur bei AWS: Geben Sie den Bucket-Namen an.
- 4
- Nur bei AWS: Geben Sie die Bucket-Region an, z. B.
us-east-1
. - 5
- Geben Sie den Namen des Objekts
Secret
an, das Sie für den Speicher erstellt haben. - 6
- Nur für AWS: Wenn Sie den AWS Key Management Service verwenden, geben Sie die eindeutige Kennung des Schlüssels an.
- 7
- Nur für AWS: Wenn Sie öffentlichen Zugriff auf den AWS-Bucket gewährt haben, geben Sie die Bucket-URL an.
- 8
- Nur AWS: Geben Sie die AWS-Signaturversion für die Authentifizierung von Anfragen an den Bucket an, z. B.
4
. - 9
- Nur für die Schnappschuss-Kopiermethode: Geben Sie die geografische Region des Clusters an.
- 10
- Nur für die Schnappschuss-Kopiermethode: Geben Sie den Namen des Objekts
Secret
an, das Sie für den Speicher erstellt haben. - 11
- Legen Sie diesen Wert auf
true
fest, um den Cluster zu validieren.
12.3. Protokolle und Debugging-Tools Link kopierenLink in die Zwischenablage kopiert!
In diesem Abschnitt werden Protokolle und Debugging-Tools beschrieben, die Sie zur Problembehandlung verwenden können.
12.3.1. Anzeigen der Ressourcen des Migrationsplans Link kopierenLink in die Zwischenablage kopiert!
Über die MTC-Webkonsole und die Command Line Interface (CLI) können Sie die Ressourcen des Migrationsplans anzeigen, um eine laufende Migration zu überwachen oder Probleme bei einer fehlgeschlagenen Migration zu beheben.
Vorgehensweise
- Klicken Sie in der MTC-Webkonsole auf Migration Plans.
- Klicken Sie auf Migrations (Zahl) neben einem Migrationsplan, um die Seite Migrations anzuzeigen.
- Klicken Sie auf eine Migration, um Migration details anzuzeigen.
Erweitern Sie Migration resources, um die Migrationsressourcen und ihren Status in einer Strukturansicht anzuzeigen.
AnmerkungUm die Probleme einer fehlgeschlagenen Migration zu beheben, beginnen Sie mit einer allgemeinen Ressource, bei der ein Fehler aufgetreten ist, und arbeiten sich dann in der Ressourcenstruktur zu den untergeordneten Ressourcen vor.
Klicken Sie auf das Optionsmenü
neben einer Ressource und wählen Sie eine der folgenden Optionen:
Der Befehl Copy
oc describe
kopiert den Befehl in Ihre Zwischenablage.Melden Sie sich bei dem betreffenden Cluster an und führen Sie den Befehl aus.
Die Bedingungen und Ereignisse der Ressource werden im YAML-Format angezeigt.
Der Befehl Copy
oc logs
kopiert den Befehl in Ihre Zwischenablage.Melden Sie sich bei dem betreffenden Cluster an und führen Sie den Befehl aus.
Wenn die Ressource das Filtern von Protokollen unterstützt, wird ein gefiltertes Protokoll angezeigt.
View JSON zeigt die Ressourcendaten im JSON-Format in einem Webbrowser an.
Die Daten sind identisch mit der Ausgabe des Befehls
oc get <resource>
.
12.3.2. Anzeige eines Protokolls für einen Migrationsplan Link kopierenLink in die Zwischenablage kopiert!
Sie können ein aggregiertes Protokoll für einen Migrationsplan anzeigen. Sie können die MTC-Webkonsole verwenden, um einen Befehl in die Zwischenablage zu kopieren und dann den Befehl über die Command Line Interface (CLI) auszuführen.
Der Befehl zeigt die gefilterten Protokolle der folgenden Pods an:
-
Migration Controller
-
Velero
-
Restic
-
Rsync
-
Stunnel
-
Registry
Vorgehensweise
- Klicken Sie in der MTC-Webkonsole auf Migration Plans.
- Klicken Sie auf Migrations (Zahl) neben einem Migrationsplan.
- Klicken Sie auf View logs.
-
Klicken Sie auf das Kopiersymbol, um den Befehl
oc logs
in Ihre Zwischenablage zu kopieren. Melden Sie sich bei dem betreffenden Cluster an und geben Sie den Befehl über die CLI ein.
Das aggregierte Protokoll für den Migrationsplan wird angezeigt.
12.3.3. Verwendung des Lesers für Migrationsprotokolle Link kopierenLink in die Zwischenablage kopiert!
Sie können den Leser für Migrationsprotokolle verwenden, um eine gefilterte Ansicht aller Migrationsprotokolle anzuzeigen.
Vorgehensweise
Rufen Sie den Pod
mig-log-reader
ab:oc -n openshift-migration get pods | grep log
$ oc -n openshift-migration get pods | grep log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Geben Sie den folgenden Befehl ein, um ein einzelnes Migrationsprotokoll anzuzeigen:
oc -n openshift-migration logs -f <mig-log-reader-pod> -c color
$ oc -n openshift-migration logs -f <mig-log-reader-pod> -c color
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Die Option
-c plain
zeigt das Protokoll ohne Farben an.
12.3.4. Zugriff auf Leistungsmetriken Link kopierenLink in die Zwischenablage kopiert!
Die Custom Resource (CR) MigrationController
zeichnet Metriken auf und speichert sie im Überwachungsspeicher des Clusters. Sie können die Metriken mit der Prometheus Query Language (PromQL) abfragen, um Probleme mit der Migrationsleistung zu diagnostizieren. Alle Metriken werden zurückgesetzt, wenn der Pod „Migration Controller“ neu gestartet wird.
Sie können über die Webkonsole der OpenShift Container Platform auf die Leistungsmetriken zugreifen und Abfragen durchführen.
Vorgehensweise
- Klicken Sie in der Webkonsole der OpenShift Container Platform auf Observe → Metrics.
Geben Sie eine PromQL-Abfrage ein, wählen Sie ein anzuzeigendes Zeitfenster und klicken Sie auf Run Queries.
Wenn Ihr Webbrowser nicht alle Ergebnisse anzeigt, verwenden Sie die Prometheus-Konsole.
12.3.4.1. Bereitgestellte Metriken Link kopierenLink in die Zwischenablage kopiert!
Die Custom Ressource (CR) MigrationController
liefert Metriken für die Anzahl der MigMigration
-CRs und die dazugehörigen API-Anfragen.
12.3.4.1.1. cam_app_workload_migrations Link kopierenLink in die Zwischenablage kopiert!
Diese Metrik ist die Anzahl der MigMigration
-CRs im Laufe der Zeit. Sie kann zusammen mit den Metriken mtc_client_request_count
und mtc_client_request_elapsed
angezeigt werden, um Informationen zu API-Anfragen mit Änderungen des Migrationsstatus abzugleichen. Diese Metrik ist in der Telemetrie enthalten.
Abfragbarer Bezeichnungsname | Beispielwerte für Bezeichnungen | Beschreibung der Bezeichnung |
---|---|---|
status |
|
Status der CR |
type | stage, final |
Typ der CR |
12.3.4.1.2. mtc_client_request_count Link kopierenLink in die Zwischenablage kopiert!
Bei dieser Metrik handelt es sich um eine kumulative Anzahl von Kubernetes-API-Anfragen, die von MigrationController
ausgehen. Sie ist nicht in der Telemetrie enthalten.
Abfragbarer Bezeichnungsname | Beispielwerte für Bezeichnungen | Beschreibung der Bezeichnung |
---|---|---|
cluster |
| Cluster, an den die Anfrage gestellt wurde |
component |
| Sub-Controller-API, die die Anfrage gestellt hat |
function |
| Funktion, von der aus die Anfrage gestellt wurde |
kind |
| Kubernetes-Art, für die die Anfrage gestellt wurde |
12.3.4.1.3. mtc_client_request_elapsed Link kopierenLink in die Zwischenablage kopiert!
Bei dieser Metrik handelt es sich um eine kumulative Latenz in Millisekunden von Kubernetes-API-Anfragen, die von MigrationController
ausgehen. Sie ist nicht in der Telemetrie enthalten.
Abfragbarer Bezeichnungsname | Beispielwerte für Bezeichnungen | Beschreibung der Bezeichnung |
---|---|---|
cluster |
| Cluster, an den die Anfrage gestellt wurde |
component |
| Sub-Controller-API, die die Anfrage gestellt hat |
function |
| Funktion, von der aus die Anfrage gestellt wurde |
kind |
| Kubernetes-Ressource, für die die Anfrage gestellt wurde |
12.3.4.1.4. Nützliche Abfragen Link kopierenLink in die Zwischenablage kopiert!
In der Tabelle sind einige hilfreiche Abfragen aufgeführt, die für die Leistungsüberwachung verwendet werden können.
Abfrage | Beschreibung |
---|---|
| Anzahl der gestellten API-Anfragen, sortiert nach Anfragetyp |
| Gesamtzahl der ausgehenden API-Anfragen |
| Latenz für API-Anfragen, sortiert nach Anfragetyp |
| Gesamtlatenz der API-Anfragen |
| Durchschnittliche Latenz der API-Anfragen |
| Durchschnittliche Latenz der API-Anfragen, sortiert nach Anfragetyp |
| Anzahl der ausgeführten Migrationen, multipliziert mit 100 zur besseren Übersicht neben der Anzahl der Anfragen |
12.3.5. Verwendung des Tools „must-gather“ Link kopierenLink in die Zwischenablage kopiert!
Sie können Protokolle, Metriken und Informationen über benutzerdefinierte MTC-Ressourcen mit dem Tool must-gather
sammeln.
Die must-gather
-Daten müssen allen Kundenfällen beigefügt werden.
Sie können Daten für einen Zeitraum von einer Stunde oder von 24 Stunden sammeln und die Daten mit der Prometheus-Konsole anzeigen.
Voraussetzungen
-
Sie müssen am OpenShift Container Platform-Cluster als Benutzer mit der Rolle
cluster-admin
angemeldet sein. -
Sie müssen die OpenShift CLI (
oc
) installiert haben.
Vorgehensweise
-
Navigieren Sie zu dem Verzeichnis, in dem Sie die
must-gather
-Daten speichern möchten. Führen Sie den Befehl
oc adm must-gather
für eine der folgenden Datensammlungsoptionen aus:So sammeln Sie die Daten der letzten Stunde:
oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.6
$ oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Daten werden als
must-gather/must-gather.tar.gz
gespeichert. Sie können diese Datei in einen Support-Fall im Red Hat Customer Portal hochladen.So sammeln Sie die Daten der letzten 24 Stunden:
oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.6 \ -- /usr/bin/gather_metrics_dump
$ oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.6 \ -- /usr/bin/gather_metrics_dump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dieser Vorgang kann viel Zeit in Anspruch nehmen. Die Daten werden als
must-gather/metrics/prom_data.tar.gz
gespeichert.
Anzeigen von Metrikdaten mit der Prometheus-Konsole
Sie können die Metrikdaten über die Prometheus-Konsole anzeigen.
Vorgehensweise
Dekomprimieren Sie die Datei
prom_data.tar.gz
:tar -xvzf must-gather/metrics/prom_data.tar.gz
$ tar -xvzf must-gather/metrics/prom_data.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Erstellen Sie eine lokale Prometheus-Instanz:
make prometheus-run
$ make prometheus-run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Der Befehl gibt die Prometheus-URL aus.
Ausgabe
Started Prometheus on http://localhost:9090
Started Prometheus on http://localhost:9090
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Starten Sie einen Webbrowser und navigieren Sie zu der URL, um die Daten mithilfe der Prometheus-Webkonsole anzuzeigen.
Nachdem Sie die Daten angesehen haben, löschen Sie die Prometheus-Instanz und die Daten:
make prometheus-cleanup
$ make prometheus-cleanup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3.6. Debuggen von Velero-Ressourcen mit dem CLI-Tool von Velero Link kopierenLink in die Zwischenablage kopiert!
Mit dem CLI-Tool von Velero können Sie die Custom Resources (CRs) backup
und restore
debuggen sowie Protokolle abrufen.
Das CLI-Tool von Velero liefert detailliertere Informationen als das von OpenShift.
Syntax
Verwenden Sie den Befehl oc exec
, um einen Velero-CLI-Befehl auszuführen:
oc exec $(oc get pods -n openshift-migration -o name | grep velero) \ -- ./velero <backup_restore_cr> <command> <cr_name>
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) \
-- ./velero <backup_restore_cr> <command> <cr_name>
Beispiel
oc exec $(oc get pods -n openshift-migration -o name | grep velero) \ -- ./velero backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) \
-- ./velero backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Sie können velero-<pod> -n openshift-migration
anstelle von $(oc get pods -n openshift-migration -o name | grep velero)
angeben.
Beispiel
oc exec velero-<pod> -n openshift-migration -- ./velero backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ oc exec velero-<pod> -n openshift-migration -- ./velero backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Option „help“
Verwenden Sie die Option velero --help
, um alle Velero-CLI-Befehle aufzulisten:
oc exec $(oc get pods -n openshift-migration -o name | grep velero) -- ./velero --help
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) -- ./velero --help
Befehl „describe“
Verwenden Sie den Befehl velero describe
, um eine Zusammenfassung der Warnungen und Fehler im Zusammenhang mit einer Backup
- oder Restore
-CR abzurufen:
oc exec $(oc get pods -n openshift-migration -o name | grep velero) \ -- ./velero <backup_restore_cr> describe <cr_name>
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) \
-- ./velero <backup_restore_cr> describe <cr_name>
Beispiel
oc exec $(oc get pods -n openshift-migration -o name | grep velero) \ -- ./velero backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) \
-- ./velero backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Befehl „logs“
Verwenden Sie den Befehl velero logs
, um die Protokolle einer Backup
- oder Restore
-CR abzurufen:
oc exec $(oc get pods -n openshift-migration -o name | grep velero) \ -- ./velero <backup_restore_cr> logs <cr_name>
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) \
-- ./velero <backup_restore_cr> logs <cr_name>
Beispiel
oc exec $(oc get pods -n openshift-migration -o name | grep velero) \ -- ./velero restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) \
-- ./velero restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
12.3.7. Debuggen einer teilweisen fehlgeschlagenen Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können eine Warnmeldung über eine teilweise fehlgeschlagene Migration debuggen, indem Sie die Velero-CLI verwenden, um die Protokolle der Custom Resource (CR) restore
zu untersuchen.
Ein Teilfehler tritt auf, wenn bei Velero ein Problem auftritt, das nicht zum Scheitern einer Migration führt. Wenn beispielsweise eine Custom Resource Definition (CRD) fehlt oder eine Diskrepanz zwischen den CRD-Versionen auf dem Quell- und dem Ziel-Cluster besteht, wird die Migration zwar abgeschlossen, aber die CR wird nicht auf dem Ziel-Cluster erstellt.
Velero protokolliert das Problem als Teilfehler und verarbeitet dann die restlichen Objekte in der CR Backup
.
Vorgehensweise
Prüfen Sie den Status einer
MigMigration
-CR:oc get migmigration <migmigration> -o yaml
$ oc get migmigration <migmigration> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Überprüfen Sie den Status der CR
Restore
mit dem Velero-Befehldescribe
:$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) -n openshift-migration -- ./velero restore describe <restore>
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) -n openshift-migration -- ./velero restore describe <restore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Überprüfen Sie die Protokolle der CR
Restore
mit dem Velero-Befehllogs
:$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) -n openshift-migration -- ./velero restore logs <restore>
$ oc exec $(oc get pods -n openshift-migration -o name | grep velero) -n openshift-migration -- ./velero restore logs <restore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
time="2021-01-26T20:48:37Z" level=info msg="Attempting to restore migration-example: migration-example" logSource="pkg/restore/restore.go:1107" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf time="2021-01-26T20:48:37Z" level=info msg="error restoring migration-example: the server could not find the requested resource" logSource="pkg/restore/restore.go:1170" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
time="2021-01-26T20:48:37Z" level=info msg="Attempting to restore migration-example: migration-example" logSource="pkg/restore/restore.go:1107" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf time="2021-01-26T20:48:37Z" level=info msg="error restoring migration-example: the server could not find the requested resource" logSource="pkg/restore/restore.go:1170" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Protokoll-Fehlermeldung der CR
Restore
,the server could not find the requested resource
, gibt die Ursache für die teilweise fehlgeschlagene Migration an.
12.3.8. Verwendung benutzerdefinierter MTC-Ressourcen für die Problembehandlung Link kopierenLink in die Zwischenablage kopiert!
Sie können die folgenden Custom Resources (CRs) des Migration Toolkit for Containers (MTC) überprüfen, um Probleme bei einer fehlgeschlagenen Migration zu beheben:
-
MigCluster
-
MigStorage
-
MigPlan
BackupStorageLocation
Die CR
BackupStorageLocation
enthält die Bezeichnungmigrationcontroller
zur Identifizierung der MTC-Instanz, die die CR erstellt hat:labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VolumeSnapshotLocation
Die CR
VolumeSnapshotLocation
enthält die Bezeichnungmigrationcontroller
zur Identifizierung der MTC-Instanz, die die CR erstellt hat:labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
MigMigration
Backup
MTC ändert die Rückforderungsrichtlinie für migrierte Persistent Volumes (PVs) auf dem Ziel-Cluster in
Retain
. Die CRBackup
enthält die Annotationopenshift.io/orig-reclaim-policy
, die die ursprüngliche Rückforderungsrichtlinie angibt. Sie können die Rückforderungsrichtlinie für die migrierten PVs manuell wiederherstellen.-
Restore
Vorgehensweise
Liste der
MigMigration
-CRs im Namespaceopenshift-migration
:oc get migmigration -n openshift-migration
$ oc get migmigration -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
NAME AGE 88435fe0-c9f8-11e9-85e6-5d593ce65e10 6m42s
NAME AGE 88435fe0-c9f8-11e9-85e6-5d593ce65e10 6m42s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Überprüfen Sie die CR
MigMigration
:oc describe migmigration 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
$ oc describe migmigration 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Ausgabe ist sieht so ähnlich wie die folgenden Beispiele aus.
Beispielausgabe für MigMigration
Beispielausgabe für Backup-CR 2 Velero
, die die PV-Daten beschreibt
Beispielausgabe für Restore-CR 2 Velero
, die die Kubernetes-Ressourcen beschreibt
12.4. Häufige Probleme und Schwierigkeiten Link kopierenLink in die Zwischenablage kopiert!
In diesem Abschnitt werden häufige Probleme und Schwierigkeiten beschrieben, die während der Migration auftreten können.
12.4.1. Aktualisieren veralteter interner Images Link kopierenLink in die Zwischenablage kopiert!
Wenn Ihre Anwendung Images aus dem Namespace openshift
verwendet, müssen die erforderlichen Versionen der Images auf dem Ziel-Cluster vorhanden sein.
Wenn ein Image von OpenShift Container Platform 3 in OpenShift Container Platform 4.10 veraltet ist, können Sie das Image Stream-Tag manuell aktualisieren, indem Sie podman
verwenden.
Voraussetzungen
-
Sie müssen
podman
installiert haben. -
Sie müssen als Benutzer mit
cluster-admin
-Privilegien angemeldet sein. -
Wenn Sie unsichere Registrierungen verwenden, fügen Sie die Werte Ihres Registrierungshosts in den Abschnitt
[registries.insecure]
von/etc/container/registries.conf
ein, um sicherzustellen, dasspodman
keinen TLS-Verifizierungsfehler erhält. - Die internen Registrierungen müssen auf den Quell- und Ziel-Clustern zugänglich gemacht werden.
Vorgehensweise
Stellen Sie sicher, dass die internen Registrierungen auf den Clustern von OpenShift Container Platform 3 und 4 zugänglich sind.
Die interne Registrierung ist auf OpenShift Container Platform 4 standardmäßig zugänglich.
-
Wenn Sie unsichere Registrierungen verwenden, fügen Sie die Werte Ihres Registrierungshosts in den Abschnitt
[registries.insecure]
von/etc/container/registries.conf
ein, um sicherzustellen, dasspodman
keinen TLS-Verifizierungsfehler erhält. Melden Sie sich bei der OpenShift Container Platform 3-Registrierung an:
podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false <registry_url>:<port>
$ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false <registry_url>:<port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Melden Sie sich bei der OpenShift Container Platform 4-Registrierung an:
podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false <registry_url>:<port>
$ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false <registry_url>:<port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rufen Sie das OpenShift Container Platform 3-Image ab:
podman pull <registry_url>:<port>/openshift/<image>
$ podman pull <registry_url>:<port>/openshift/<image>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Taggen Sie das OpenShift Container Platform 3-Image für die OpenShift Container Platform 4-Registrierung:
podman tag <registry_url>:<port>/openshift/<image> \ <registry_url>:<port>/openshift/<image>
$ podman tag <registry_url>:<port>/openshift/<image> \
1 <registry_url>:<port>/openshift/<image>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow Übertragen Sie das Image in die OpenShift Container Platform 4-Registrierung:
podman push <registry_url>:<port>/openshift/<image>
$ podman push <registry_url>:<port>/openshift/<image>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie den OpenShift Container Platform 4-Cluster an.
Überprüfen Sie, ob das Image einen gültigen Image Stream hat:
oc get imagestream -n openshift | grep <image>
$ oc get imagestream -n openshift | grep <image>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Beispielausgabe
NAME IMAGE REPOSITORY TAGS UPDATED my_image image-registry.openshift-image-registry.svc:5000/openshift/my_image latest 32 seconds ago
NAME IMAGE REPOSITORY TAGS UPDATED my_image image-registry.openshift-image-registry.svc:5000/openshift/my_image latest 32 seconds ago
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.2. Direct Volume Migration wird nicht abgeschlossen Link kopierenLink in die Zwischenablage kopiert!
Wenn die Direct Volume Migration nicht abgeschlossen wird, hat der Ziel-Cluster möglicherweise nicht dieselben node-selector
-Annotationen wie der Quell-Cluster.
Migration Toolkit for Containers (MTC) migriert Namespaces mit allen Annotationen, um Sicherheitskontextbeschränkungen und Planungsanforderungen zu erhalten. Bei der Direct Volume Migration erstellt MTC Rsync-Transfer-Pods auf dem Ziel-Cluster in den Namespaces, die vom Quell-Cluster migriert wurden. Wenn ein Ziel-Cluster-Namespace nicht dieselben Annotationen wie der Quell-Cluster-Namespace hat, können die Rsync-Transfer-Pods nicht geplant werden. Die Rsync-Pods bleiben im Status Pending
.
Sie können dieses Problem mit dem folgenden Verfahren ermitteln und beheben.
Vorgehensweise
Überprüfen Sie den Status der CR
MigMigration
:oc describe migmigration <pod> -n openshift-migration
$ oc describe migmigration <pod> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Ausgabe enthält die folgende Statusmeldung:
Beispielausgabe
Some or all transfer pods are not running for more than 10 mins on destination cluster
Some or all transfer pods are not running for more than 10 mins on destination cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rufen Sie auf dem Quell-Cluster die Details eines migrierten Namespace ab:
oc get namespace <namespace> -o yaml
$ oc get namespace <namespace> -o yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie den migrierten Namespace an.
Bearbeiten Sie auf dem Ziel-Cluster den migrierten Namespace:
oc edit namespace <namespace>
$ oc edit namespace <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Fügen Sie die fehlenden
openshift.io/node-selector
-Annotationen zum migrierten Namespace hinzu, wie im folgenden Beispiel:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Führen Sie den Migrationsplan erneut aus.
12.4.3. Fehlermeldungen und Lösungen Link kopierenLink in die Zwischenablage kopiert!
In diesem Abschnitt werden häufige Fehlermeldungen beschrieben, die im Zusammenhang mit dem Migration Toolkit for Containers (MTC) auftreten können, und es wird erläutert, wie Sie die zugrunde liegenden Ursachen beheben können.
12.4.3.1. Beim ersten Zugriff auf die MTC-Konsole wird „CA certificate error“ angezeigt Link kopierenLink in die Zwischenablage kopiert!
Wenn beim ersten Versuch, auf die MTC-Konsole zuzugreifen, CA certificate error
angezeigt wird, ist die wahrscheinliche Ursache die Verwendung von selbstsignierten CA-Zertifikaten in einem der Cluster.
Um dieses Problem zu beheben, navigieren Sie zu der in der Fehlermeldung angezeigten URL oauth-authorization-server
und akzeptieren Sie das Zertifikat. Um dieses Problem dauerhaft zu beheben, fügen Sie das Zertifikat den vertrauenswürdigen Zertifikaten Ihres Webbrowsers hinzu.
Wenn nach dem Akzeptieren des Zertifikats die Meldung Unauthorized
angezeigt wird, navigieren Sie zur MTC-Konsole und aktualisieren Sie die Webseite.
12.4.3.2. OAuth-Zeitüberschreitungsfehler in der MTC-Konsole Link kopierenLink in die Zwischenablage kopiert!
Wenn nach dem Akzeptieren eines selbstsignierten Zertifikats in der MTC-Konsole die Meldung connection has timed out
angezeigt wird, kann dies folgende Ursachen haben:
- Unterbrochener Netzwerkzugriff auf den OAuth-Server
- Unterbrochener Netzwerkzugriff auf die Konsole der OpenShift Container Platform
-
Proxy-Konfiguration, die den Zugriff auf die URL
oauth-authorization-server
blockiert. Unter Kein Zugriff auf die MTC-Konsole wegen einem OAuth-Zeitüberschreitungsfehler finden Sie Details.
So ermitteln Sie die Ursache der Zeitüberschreitung:
- Überprüfen Sie die Webseite der MTC-Konsole mit dem Webinspektor Ihres Browsers.
-
Überprüfen Sie das Protokoll des Pod
Migration UI
auf Fehler.
12.4.3.3. Fehlermeldung: „Certificate signed by unknown authority error“ Link kopierenLink in die Zwischenablage kopiert!
Wenn Sie ein selbstsigniertes Zertifikat zum Sichern eines Clusters oder eines Replikations-Repositorys für das Migration Toolkit for Containers (MTC) verwenden, schlägt die Zertifikatsüberprüfung möglicherweise mit der folgenden Fehlermeldung fehl: Certificate signed by unknown authority
.
Sie können eine benutzerdefinierte CA-Paketdatei mit Zertifikat erstellen und sie in der MTC-Webkonsole hochladen, wenn Sie einen Cluster oder ein Replikations-Repository hinzufügen.
Vorgehensweise
Laden Sie ein CA-Zertifikat von einem Remote-Endpunkt herunter und speichern Sie es als CA-Paketdatei:
echo -n | openssl s_client -connect <host_FQDN>:<port> \ | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <ca_bundle.cert>
$ echo -n | openssl s_client -connect <host_FQDN>:<port> \
| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <ca_bundle.cert>
12.4.3.4. Backup Storage Location-Fehler im Protokoll des Pod „Velero“ Link kopierenLink in die Zwischenablage kopiert!
Wenn die Custom Resource Velero
Backup
einen Verweis auf eine Backup Storage Location (BSL) enthält, die nicht existiert, zeigt das Protokoll des Pod Velero
möglicherweise die folgenden Fehlermeldungen an:
oc logs <MigrationUI_Pod> -n openshift-migration
$ oc logs <MigrationUI_Pod> -n openshift-migration
Sie können diese Fehlermeldungen ignorieren. Eine fehlende BSL kann nicht dazu führen, dass eine Migration fehlschlägt.
12.4.3.5. Zeitüberschreitungsfehler beim Backup des Pod-Volume im Protokoll des Pod „Velero“ Link kopierenLink in die Zwischenablage kopiert!
Wenn eine Migration fehlschlägt, weil Restic eine Zeitüberschreitung verursacht, wird der folgende Fehler im Protokoll des Pod Velero
angezeigt.
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete" error.file="/go/src/github.com/heptio/velero/pkg/restic/backupper.go:165" error.function="github.com/heptio/velero/pkg/restic.(*backupper).BackupPodVolumes" group=v1
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete" error.file="/go/src/github.com/heptio/velero/pkg/restic/backupper.go:165" error.function="github.com/heptio/velero/pkg/restic.(*backupper).BackupPodVolumes" group=v1
Der Standardwert für restic_timeout
ist eine Stunde. Bei umfangreichen Migrationen können Sie diesen Parameter erhöhen, wobei zu beachten ist, dass ein höherer Wert die Rückgabe von Fehlermeldungen verzögern kann.
Vorgehensweise
- Navigieren Sie in der OpenShift Container Platform-Webkonsole zu Operators → Installed Operators.
- Klicken Sie auf Migration Toolkit for Containers Operator.
- Klicken Sie auf der Registerkarte MigrationController auf migration-controller.
Aktualisieren Sie auf der Registerkarte YAML den folgenden Parameterwert:
spec: restic_timeout: 1h
spec: restic_timeout: 1h
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Gültige Einheiten sind
h
(Stunden),m
(Minuten) unds
(Sekunden) – zum Beispiel3h30m15s
.
- Klicken Sie auf Save.
12.4.3.6. Restic-Verifizierungsfehler in der Custom Resource „MigMigration“ Link kopierenLink in die Zwischenablage kopiert!
Wenn die Datenverifizierung bei der Migration eines Persistent Volume mit der Dateisystem-Datenkopiermethode fehlschlägt, wird der folgende Fehler in der CR MigMigration
angezeigt.
Beispielausgabe
Ein Datenverifizierungsfehler führt nicht zum Fehlschlagen des Migrationsvorgangs.
Sie können die CR Restore
überprüfen, um die Ursache des Datenverifizierungsfehlers zu ermitteln.
Vorgehensweise
- Melden Sie sich beim Ziel-Cluster an.
Zeigen Sie die CR
Restore
an:oc describe <registry-example-migration-rvwcm> -n openshift-migration
$ oc describe <registry-example-migration-rvwcm> -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Ausgabe identifiziert das Persistent Volume mit
PodVolumeRestore
-Fehlern.Beispielausgabe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Zeigen Sie die CR
PodVolumeRestore
an:oc describe <migration-example-rvwcm-98t49>
$ oc describe <migration-example-rvwcm-98t49>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Ausgabe identifiziert den Pod
Restic
, der die Fehler protokolliert hat.Beispielausgabe
completionTimestamp: 2020-05-01T20:49:12Z errors: 1 resticErrors: 1 ... resticPod: <restic-nr2v5>
completionTimestamp: 2020-05-01T20:49:12Z errors: 1 resticErrors: 1 ... resticPod: <restic-nr2v5>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Sehen Sie sich das Protokoll des Pod
Restic
an, um die Fehler zu lokalisieren:oc logs -f <restic-nr2v5>
$ oc logs -f <restic-nr2v5>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.3.7. Restic-Berechtigungsfehler bei der Migration von einem NFS-Speicher mit aktiviertem „root_squash“ Link kopierenLink in die Zwischenablage kopiert!
Wenn Sie Daten von einem NFS-Speicher migrieren und root_squash
aktiviert ist, wird Restic
zu nfsnobody
zugeordnet und hat keine Berechtigung, die Migration durchzuführen. Der folgende Fehler wird im Protokoll des Pod Restic
angezeigt.
Beispielausgabe
backup=openshift-migration/<backup_id> controller=pod-volume-backup error="fork/exec /usr/bin/restic: permission denied" error.file="/go/src/github.com/vmware-tanzu/velero/pkg/controller/pod_volume_backup_controller.go:280" error.function="github.com/vmware-tanzu/velero/pkg/controller.(*podVolumeBackupController).processBackup" logSource="pkg/controller/pod_volume_backup_controller.go:280" name=<backup_id> namespace=openshift-migration
backup=openshift-migration/<backup_id> controller=pod-volume-backup error="fork/exec /usr/bin/restic: permission denied" error.file="/go/src/github.com/vmware-tanzu/velero/pkg/controller/pod_volume_backup_controller.go:280" error.function="github.com/vmware-tanzu/velero/pkg/controller.(*podVolumeBackupController).processBackup" logSource="pkg/controller/pod_volume_backup_controller.go:280" name=<backup_id> namespace=openshift-migration
Sie können dieses Problem beheben, indem Sie eine ergänzende Gruppe für Restic erstellen und die Gruppen-ID zum Manifest der CR MigrationController
hinzufügen.
Vorgehensweise
- Erstellen Sie eine ergänzende Gruppe für Restic auf dem NFS-Speicher.
-
Legen Sie das Bit
setgid
in den NFS-Verzeichnissen fest, sodass das Gruppeneigentum vererbt wird. Fügen Sie auf den Quell- und Ziel-Clustern den Parameter
restic_supplemental_groups
zum Manifest der CRMigrationController
hinzu:spec: restic_supplemental_groups: <group_id>
spec: restic_supplemental_groups: <group_id>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie die ergänzende Gruppen-ID an.
-
Warten Sie den Neustart der
Restic
-Pods ab, damit die Änderungen übernommen werden.
12.4.4. Bekannte Probleme Link kopierenLink in die Zwischenablage kopiert!
Diese Version hat die folgenden bekannten Probleme:
Während der Migration behält das Migration Toolkit for Containers (MTC) die folgenden Namespace-Annotationen bei:
-
openshift.io/sa.scc.mcs
-
openshift.io/sa.scc.supplemental-groups
openshift.io/sa.scc.uid-range
Diese Annotationen bewahren den UID-Bereich und stellen sicher, dass die Container ihre Dateisystemberechtigungen auf dem Ziel-Cluster beibehalten. Es besteht das Risiko, dass die migrierten UIDs sich in einem bestehenden oder zukünftigen Namespace auf dem Ziel-Cluster duplizieren. (BZ#1748440)
-
- Die meisten Cluster-Ressourcen werden noch nicht von MTC gehandhabt. Wenn Ihre Anwendungen Cluster-Ressourcen benötigen, müssen Sie diese möglicherweise manuell auf dem Ziel-Cluster erstellen.
- Wenn eine Migration fehlschlägt, behält der Migrationsplan die benutzerdefinierten PV-Einstellungen für stillgelegte Pods nicht bei. Sie müssen die Migration manuell zurücksetzen, den Migrationsplan löschen und einen neuen Migrationsplan mit Ihren PV-Einstellungen erstellen. (BZ#1784899)
-
Wenn eine große Migration fehlschlägt, weil Restic eine Zeitüberschreitung verursacht, können Sie den Wert des Parameters
restic_timeout
(Standard:1h
) im Manifest der Custom Resource (CR)MigrationController
erhöhen. - Wenn Sie die Datenverifizierungsoption für PVs wählen, die mit der Dateisystem-Kopiermethode migriert werden, ist die Leistung deutlich langsamer.
Wenn Sie Daten von einem NFS-Speicher migrieren und
root_squash
aktiviert ist, wirdRestic
zunfsnobody
zugeordnet. Die Migration schlägt fehl und im Pod-ProtokollRestic
wird ein Berechtigungsfehler angezeigt. (BZ#1873641)Sie können dieses Problem beheben, indem Sie dem Manifest der CR
MigrationController
zusätzliche Gruppen fürRestic
hinzufügen:spec: ... restic_supplemental_groups: - 5555 - 6666
spec: ... restic_supplemental_groups: - 5555 - 6666
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Wenn Sie eine Direct Volume Migration mit Knoten durchführen, die sich in unterschiedlichen Verfügbarkeitszonen oder Verfügbarkeitsgruppen befinden, kann die Migration fehlschlagen, weil die migrierten Pods nicht auf den PVC zugreifen können. (BZ#1947487)
12.5. Zurücksetzen einer Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können eine Migration über die MTC-Webkonsole oder die CLI zurücksetzen.
Sie können eine Migration auch manuell zurücksetzen.
12.5.1. Zurücksetzen einer Migration über die MTC-Webkonsole Link kopierenLink in die Zwischenablage kopiert!
Sie können eine Migration mithilfe der MTC-Webkonsole (Migration Toolkit for Containers) zurücksetzen.
Die folgenden Ressourcen verbleiben in den migrierten Namespaces, um nach einer fehlgeschlagenen Direct Volume Migration (DVM) ein Debugging durchführen zu können:
- Config-Zuordnungen (Quell- und Ziel-Cluster)
-
Secret
-Objekte (Quell- und Ziel-Cluster) -
Rsync
-CRs (Quell-Cluster)
Diese Ressourcen haben keine Auswirkungen auf das Rollback. Sie können sie manuell löschen.
Wenn Sie später denselben Migrationsplan erfolgreich ausführen, werden die Ressourcen der fehlgeschlagenen Migration automatisch gelöscht.
Wenn Ihre Anwendung während einer fehlgeschlagenen Migration angehalten wurde, müssen Sie die Migration zurücksetzen, um eine Datenbeschädigung im Persistent Volume zu verhindern.
Ein Rollback ist nicht erforderlich, wenn die Anwendung während der Migration nicht angehalten wurde, da die ursprüngliche Anwendung noch auf dem Quell-Cluster ausgeführt wird.
Vorgehensweise
- Klicken Sie in der MTC-Webkonsole auf Migration plans.
-
Klicken Sie auf das Optionsmenü
neben einem Migrationsplan und wählen Sie unter Migration die Option Rollback.
Klicken Sie auf Rollback und warten Sie, bis das Rollback abgeschlossen ist.
In den Details des Migrationsplans wird Rollback succeeded angezeigt.
Überprüfen Sie in der OpenShift Container Platform-Webkonsole des Quell-Clusters, ob das Rollback erfolgreich war:
- Klicken Sie auf Home → Projects.
- Klicken Sie auf das migrierte Projekt, um seinen Status anzuzeigen.
- Klicken Sie im Bereich Routes auf Location, um zu verifizieren, ob die Anwendung funktioniert (falls zutreffend).
- Klicken Sie auf Workloads → Pods, um zu verifizieren, ob die Pods im migrierten Namespace ausgeführt werden.
- Klicken Sie auf Storage → Persistent volumes, um zu überprüfen, ob das migrierte Persistent Volume korrekt bereitgestellt wurde.
12.5.2. Zurücksetzen einer Migration über die Command Line Interface Link kopierenLink in die Zwischenablage kopiert!
Sie können eine Migration zurücksetzen, indem Sie eine MigMigration
-Custom Resource (CR) über die Command Line Interface erstellen.
Die folgenden Ressourcen verbleiben in den migrierten Namespaces, um nach einer fehlgeschlagenen Direct Volume Migration (DVM) ein Debugging durchführen zu können:
- Config-Zuordnungen (Quell- und Ziel-Cluster)
-
Secret
-Objekte (Quell- und Ziel-Cluster) -
Rsync
-CRs (Quell-Cluster)
Diese Ressourcen haben keine Auswirkungen auf das Rollback. Sie können sie manuell löschen.
Wenn Sie später denselben Migrationsplan erfolgreich ausführen, werden die Ressourcen der fehlgeschlagenen Migration automatisch gelöscht.
Wenn Ihre Anwendung während einer fehlgeschlagenen Migration angehalten wurde, müssen Sie die Migration zurücksetzen, um eine Datenbeschädigung im Persistent Volume zu verhindern.
Ein Rollback ist nicht erforderlich, wenn die Anwendung während der Migration nicht angehalten wurde, da die ursprüngliche Anwendung noch auf dem Quell-Cluster ausgeführt wird.
Vorgehensweise
Erstellen Sie eine
MigMigration
-CR anhand des folgenden Beispiels:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Geben Sie den Namen der zugehörigen
MigPlan
-CR an.
- Überprüfen Sie in der MTC-Webkonsole, ob die migrierten Projektressourcen aus dem Ziel-Cluster entfernt wurden.
- Überprüfen Sie, ob die migrierten Projektressourcen im Quell-Cluster vorhanden sind und ob die Anwendung ausgeführt wird.
12.5.3. Manuelles Zurücksetzen einer Migration Link kopierenLink in die Zwischenablage kopiert!
Sie können eine fehlgeschlagene Migration manuell zurücksetzen, indem Sie die stage
-Pods löschen und die Stilllegung der Anwendung aufheben.
Wenn Sie denselben Migrationsplan erfolgreich ausführen, werden die Ressourcen der fehlgeschlagenen Migration automatisch gelöscht.
Die folgenden Ressourcen verbleiben nach einer fehlgeschlagenen Direct Volume Migration (DVM) in den migrierten Namespaces:
- Config-Zuordnungen (Quell- und Ziel-Cluster)
-
Secret
-Objekte (Quell- und Ziel-Cluster) -
Rsync
-CRs (Quell-Cluster)
Diese Ressourcen haben keine Auswirkungen auf das Rollback. Sie können sie manuell löschen.
Vorgehensweise
Löschen Sie die
stage
-Pods auf allen Clustern:oc delete $(oc get pods -l migration.openshift.io/is-stage-pod -n <namespace>)
$ oc delete $(oc get pods -l migration.openshift.io/is-stage-pod -n <namespace>)
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- In der CR
MigPlan
angegebene Namespaces.
Heben Sie die Stilllegung der Anwendung auf dem Quell-Cluster auf, indem Sie die Replikate auf ihre Anzahl vor der Migration skalieren:
oc scale deployment <deployment> --replicas=<premigration_replicas>
$ oc scale deployment <deployment> --replicas=<premigration_replicas>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Die Annotation
migration.openshift.io/preQuiesceReplicas
in der CRDeployment
zeigt die Anzahl der Replikate vor der Migration an:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Überprüfen Sie, ob die Anwendungspods auf dem Quell-Cluster ausgeführt werden:
oc get pod -n <namespace>
$ oc get pod -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow