Upgraden eines indirekt verbundenen Azure Arc-fähigen Datencontrollers mithilfe von Kubernetes-Tools
In diesem Artikel erfahren Sie, wie Sie einen indirekt verbundenen Datencontroller mit Azure Arc-Unterstützung mithilfe von Kubernetes-Tools upgraden.
Während des Upgrades eines Datencontrollers kann ein Upgrade für Teile der Datensteuerungsebene, z. B. benutzerdefinierte Ressourcendefinitionen (Custom Resource Definitions, CRDs) und Container durchgeführt werden. Ein Upgrade des Datencontrollers hat keine Downtime für die Datendienste (SQL Managed Instance oder PostgreSQL-Server) zur Folge.
In diesem Artikel wird eine YAML-Datei angewendet, um folgende Schritte auszuführen:
- Erstellen des Dienstkontos zum Ausführen des Upgrades
- Upgraden des Bootstrappers
- Upgraden des Datencontrollers
Hinweis
Einige der Datendienstebenen und -modi sind allgemein verfügbar, einige befinden sich in der Vorschau. Wenn Sie allgemein verfügbare Dienste und Vorschaudienste auf demselben Datencontroller installieren, können Sie kein direktes Upgrade ausführen. Für ein Upgrade löschen Sie alle nicht allgemein verfügbaren (GA) Datenbankinstanzen. Die Liste der allgemein verfügbaren Dienste und Vorschaudienste finden Sie in den Versionshinweisen.
Voraussetzungen
Bevor Sie mit dem Upgrade des Datencontrollers beginnen können, müssen folgende Voraussetzungen erfüllt werden:
- Herstellen einer Verbindung mit einem Kubernetes-Cluster und Durchführen der Authentifizierung
- Auswählen eines vorhandenen Kubernetes-Kontexts
Sie benötigen einen indirekt verbundenen Datencontroller mit imageTag: v1.0.0_2021-07-30
(oder höher).
Installieren von Tools
Um den Datencontroller mithilfe von Kubernetes-Tools upgraden zu können, müssen die Kubernetes-Tools installiert sein.
In den Beispielen in diesem Artikel wird kubectl
verwendet, aber es können auch ähnliche Ansätze mit anderen Kubernetes-Tools verfolgt werden, z. B. mit dem Kubernetes-Dashboard, oc
oder Helm, wenn Sie mit diesen Tools und Kubernetes-YAML/JSON-Dateien vertraut sind.
Installieren des kubectl-Tools
Anzeigen verfügbarer Images und Auswahl einer Version
Pullen Sie die Liste der verfügbaren Images für den Datencontroller mit dem folgenden Befehl:
az arcdata dc list-upgrades --k8s-namespace <namespace>
Der obige Befehl gibt eine Ausgabe wie im folgenden Beispiel zurück:
Found 2 valid versions. The current datacontroller version is <current-version>.
<available-version>
...
Upgraden des Datencontrollers
In diesem Abschnitt wird gezeigt, wie Sie einen indirekt verbundenen Datencontroller aktualisieren.
Hinweis
Einige der Datendienstebenen und -modi sind allgemein verfügbar, einige befinden sich in der Vorschau. Wenn Sie allgemein verfügbare Dienste und Vorschaudienste auf demselben Datencontroller installieren, können Sie kein direktes Upgrade ausführen. Für ein Upgrade löschen Sie alle nicht allgemein verfügbaren (GA) Datenbankinstanzen. Die Liste der allgemein verfügbaren Dienste und Vorschaudienste finden Sie in den Versionshinweisen.
Informationen zu unterstützten Upgradepfaden finden Sie unter Durchführen eines Upgrades für Azure Arc-fähige Datendienste.
Upgraden
Sie müssen eine Verbindung mit einem Kubernetes-Cluster herstellen und sich authentifizieren sowie einen vorhandenen Kubernetes-Kontext auswählen, bevor Sie mit dem Upgrade des Datencontrollers beginnen.
Erstellen des Dienstkontos zum Ausführen des Upgrades
Wichtig
Dieser Schritt erfordert Kubernetes-Berechtigungen zum Erstellen des Dienstkontos, der Rollenbindung, der Clusterrolle, der Clusterrollenbindung und aller RBAC-Berechtigungen, die dem Dienstkonto erteilt werden.
Speichern Sie eine Kopie von arcdata-deployer.yaml, und ersetzen Sie den Platzhalter {{NAMESPACE}}
in der Datei durch den Namespace des Datencontrollers. Beispiel: arc
. Führen Sie den folgenden Befehl aus, um das Bereitstellungsdienstkonto mit der bearbeiteten Datei zu erstellen:
kubectl apply --namespace arc -f arcdata-deployer.yaml
Upgraden des Bootstrappers
Der folgende Befehl erstellt einen Auftrag zum Aktualisieren des Bootstrappers und zugehöriger Kubernetes-Objekte.
Wichtig
Die YAML-Datei im folgenden Befehl verwendet standardmäßig „mcr.microsoft.com/arcdata“. Speichern Sie eine Kopie der YAML-Datei, und aktualisieren Sie sie bei Bedarf, um eine andere Registrierung/ein anderes Repository zu verwenden.
kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/bootstrapper-upgrade-job.yaml
Upgrade des Datencontrollers
Im folgenden Befehl wird das Imagetag gepatcht, um den Datencontroller zu aktualisieren.
kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/data-controller-upgrade.yaml
Überwachen des Upgradestatus
Sie können den Fortschritt des Upgrades mithilfe von kubectl überwachen.
kubectl
kubectl get datacontrollers --namespace <namespace> -w
kubectl get monitors --namespace <namespace> -w
Das Upgrade ist ein zweiteiliger Prozess. Zuerst erfolgt das Upgrade des Controllers, dann das Upgrade des Überwachungsstapels. Verwenden Sie während des Upgrades kubectl get monitors -n <namespace> -w
, um den Status anzuzeigen. Ausgabe:
NAME STATUS AGE
monitorstack Updating 36m
monitorstack Updating 36m
monitorstack Updating 39m
monitorstack Updating 39m
monitorstack Updating 41m
monitorstack Ready 41m
Problembehandlung
Wenn die gewünschte Version auf eine bestimmte Version festgelegt ist, versucht der Bootstrapperauftrag solange ein Upgrade darauf durchzuführen, bis er erfolgreich ist. Wenn das Upgrade erfolgreich ist, wird die Eigenschaft RunningVersion
der Spezifikation auf die neue Version aktualisiert. Bei Upgrades können Fehler auftreten, wenn z. B. das Imagetag falsch ist, keine Verbindung mit der Registrierung oder dem Repository hergestellt werden kann, den Containern nicht genügend CPU oder Arbeitsspeicher zugewiesen ist oder der Speicherplatz nicht ausreicht.
Führen Sie den folgenden Befehl aus, um festzustellen, ob einer der Pods den Status
Error
anzeigt oder eine hohe Anzahl von Neustarts aufweist:kubectl get pods --namespace <namespace>
Um sich Ereignisse anzusehen, um zu sehen, ob ein Fehler vorliegt, führen Sie Folgendes aus
kubectl describe pod <pod name> --namespace <namespace>
Führen Sie zum Abrufen einer Liste der Container in den Pods aus
kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
Um die Protokolle für einen Container zu erhalten, führen Sie Folgendes aus
kubectl logs <pod name> <container name> --namespace <namespace>
Um häufige Fehler zu sehen und zu erfahren, wie Sie diese beheben können, gehen Sie zu Ressourcen zur Problembehandlung.