Freigeben über


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:

  1. Erstellen des Dienstkontos zum Ausführen des Upgrades
  2. Upgraden des Bootstrappers
  3. 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.

  1. 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>
    
  2. Um sich Ereignisse anzusehen, um zu sehen, ob ein Fehler vorliegt, führen Sie Folgendes aus

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. 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}*'
    
  4. 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.