Delen via


Een indirect verbonden gegevenscontroller met Azure Arc upgraden met behulp van Kubernetes-hulpprogramma's

In dit artikel wordt uitgelegd hoe u een indirect verbonden gegevenscontroller met Azure Arc kunt upgraden met Kubernetes-hulpprogramma's.

Tijdens een upgrade van een gegevenscontroller kunnen delen van het gegevensbeheervlak, zoals Aangepaste resourcedefinities (CRD's) en containers, worden bijgewerkt. Een upgrade van de gegevenscontroller veroorzaakt geen downtime voor de gegevensservices (SQL Managed Instance of PostgreSQL-server).

In dit artikel past u een YAML-bestand toe op:

  1. Maak het serviceaccount voor het uitvoeren van een upgrade.
  2. Voer een upgrade uit voor de bootstrapper.
  3. Voer een upgrade uit van de gegevenscontroller.

Notitie

Sommige gegevensserviceslagen en -modi zijn algemeen beschikbaar en sommige zijn in preview. Als u GA- en preview-services op dezelfde gegevenscontroller installeert, kunt u geen upgrade uitvoeren. Als u een upgrade wilt uitvoeren, verwijdert u alle niet-GA-database-exemplaren. U vindt de lijst met algemeen beschikbare en preview-services in de releaseopmerkingen.

Vereisten

Voordat u begint met de upgrade van de gegevenscontroller, hebt u het volgende nodig:

  • Verbinding maken en verifiëren met een Kubernetes-cluster
  • Een bestaande Kubernetes-context geselecteerd

U hebt een indirect verbonden gegevenscontroller met de imageTag: v1.0.0_2021-07-30 of meer nodig.

Hulpprogramma's installeren

Als u de gegevenscontroller wilt upgraden met behulp van Kubernetes-hulpprogramma's, moet u de Kubernetes-hulpprogramma's hebben geïnstalleerd.

De voorbeelden in dit artikel gebruiken kubectl, maar vergelijkbare benaderingen kunnen worden gebruikt met andere Kubernetes-hulpprogramma's, zoals het Kubernetes-dashboard, ocof helm als u bekend bent met deze hulpprogramma's en Kubernetes yaml/json.

Het kubectl-hulpprogramma installeren

Beschikbare installatiekopieën weergeven en een versie kiezen

Haal de lijst met beschikbare installatiekopieën voor de gegevenscontroller op met de volgende opdracht:

az arcdata dc list-upgrades --k8s-namespace <namespace>

Met de bovenstaande opdracht wordt uitvoer geretourneerd zoals in het volgende voorbeeld:

Found 2 valid versions.  The current datacontroller version is <current-version>.
<available-version>
...

Gegevenscontroller upgraden

In deze sectie wordt beschreven hoe u een indirect verbonden gegevenscontroller kunt upgraden.

Notitie

Sommige gegevensserviceslagen en -modi zijn algemeen beschikbaar en sommige zijn in preview. Als u GA- en preview-services op dezelfde gegevenscontroller installeert, kunt u geen upgrade uitvoeren. Als u een upgrade wilt uitvoeren, verwijdert u alle niet-GA-database-exemplaren. U vindt de lijst met algemeen beschikbare en preview-services in de releaseopmerkingen.

Zie Gegevensservices met Azure Arc upgraden voor ondersteunde upgradepaden.

Upgraden

U moet verbinding maken en verifiëren bij een Kubernetes-cluster en een bestaande Kubernetes-context hebben geselecteerd voordat u de upgrade van de gegevenscontroller start.

Het serviceaccount maken voor het uitvoeren van een upgrade

Belangrijk

Vereist Kubernetes-machtigingen voor het maken van een serviceaccount, rolbinding, clusterrol, clusterrolbinding en alle RBAC-machtigingen die aan het serviceaccount worden verleend.

Sla een kopie van arcdata-deployer.yaml op en vervang de tijdelijke aanduiding {{NAMESPACE}} in het bestand door de naamruimte van de gegevenscontroller, bijvoorbeeld: arc. Voer de volgende opdracht uit om het serviceaccount voor de deployer te maken met het bewerkte bestand.

kubectl apply --namespace arc -f arcdata-deployer.yaml

De bootstrapper upgraden

Met de volgende opdracht maakt u een taak voor het upgraden van de bootstrapper en gerelateerde Kubernetes-objecten.

Belangrijk

Het yaml-bestand in de volgende opdracht wordt standaard mcr.microsoft.com/arcdata. Sla indien nodig een kopie van het yaml-bestand op en werk het bij naar een ander register/opslagplaats.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/bootstrapper-upgrade-job.yaml

De gegevenscontroller upgraden

Met de volgende opdracht wordt de installatiekopieëntag gepatcht om de gegevenscontroller te upgraden.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/data-controller-upgrade.yaml

De upgradestatus bewaken

U kunt de voortgang van de upgrade bewaken met kubectl.

kubectl

kubectl get datacontrollers --namespace <namespace> -w
kubectl get monitors --namespace <namespace> -w

De upgrade is een tweedelige procedure. Eerst wordt de controller bijgewerkt en vervolgens wordt de bewakingsstack bijgewerkt. Gebruik tijdens de upgrade kubectl get monitors -n <namespace> -w om de status weer te geven. De uitvoer is:

NAME           STATUS     AGE
monitorstack   Updating   36m
monitorstack   Updating   36m
monitorstack   Updating   39m
monitorstack   Updating   39m
monitorstack   Updating   41m
monitorstack   Ready      41m

Probleemoplossing

Wanneer de gewenste versie is ingesteld op een specifieke versie, probeert de bootstrapper-taak een upgrade uit te voeren naar die versie totdat deze slaagt. Als de upgrade is geslaagd, wordt de RunningVersion eigenschap van de specificatie bijgewerkt naar de nieuwe versie. Upgrades kunnen mislukken voor scenario's zoals een onjuiste installatiekopieëntag, kan geen verbinding maken met register of opslagplaats, onvoldoende CPU of geheugen toegewezen aan de containers of onvoldoende opslag.

  1. Voer de onderstaande opdracht uit om te zien of een van de pods een Error status heeft of een groot aantal herstarts heeft:

    kubectl get pods --namespace <namespace>
    
  2. Als u gebeurtenissen wilt bekijken om te zien of er een fout is, voert u de opdracht uit

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. Als u een lijst met de containers in de pods wilt ophalen, voert u de opdracht uit

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. Voer de opdracht uit om de logboeken voor een container op te halen

    kubectl logs <pod name> <container name> --namespace <namespace>
    

Als u veelvoorkomende fouten wilt bekijken en problemen wilt oplossen, gaat u naar Bronnen voor probleemoplossing.