Condividi tramite


Aggiornare un controller dei dati abilitato per Azure Arc connesso indirettamente tramite gli strumenti Kubernetes

Questo articolo spiega come aggiornare un controller dei dati abilitato per Azure Arc connesso indirettamente tramite gli strumenti Kubernetes.

Durante un aggiornamento di un controller dei dati, è possibile aggiornare parti del piano di controllo dei dati, ad esempio le definizioni di risorse personalizzate e i contenitori. Un aggiornamento del controller dei dati non causerà tempi di inattività per i servizi dati (Istanza gestita di SQL o server PostgreSQL).

In questo articolo si applicherà un file .yaml per:

  1. Creare l'account del servizio per l'aggiornamento in esecuzione.
  2. Aggiornare il caricatore di bootstrap.
  3. Aggiornare il controller dei dati.

Nota

Alcuni dei livelli e delle modalità dei servizi dati sono disponibili a livello generale e alcuni in anteprima. Se si installano servizi con disponibilità generale e in anteprima nello stesso controller dei dati, non è possibile eseguire l'aggiornamento sul posto. Per eseguire l'aggiornamento, eliminare tutte le istanze di database non con disponibilità generale. È possibile trovare l'elenco dei servizi con disponibilità generale e in anteprima nelle note sulla versione.

Prerequisiti

Prima di iniziare l'aggiornamento del controller dei dati, è necessario:

  • Connessione e autenticazione con un cluster Kubernetes
  • Contesto Kubernetes esistente selezionato

È necessario un controller dei dati connesso indirettamente con imageTag: v1.0.0_2021-07-30 o versione successiva.

Installare gli strumenti

Per aggiornare il controller dei dati tramite gli strumenti Kubernetes, è necessario che gli strumenti Kubernetes siano installati.

Gli esempi riportati in questo articolo useranno kubectl, tuttavia è possibile usare approcci simili con altri strumenti Kubernetes, ad esempio il dashboard di Kubernetes, oc o Helm, se si ha familiarità con questi strumenti e con i file yaml/json di Kubernetes.

Installare lo strumento kubectl

Visualizzare le immagini disponibili e scegliere una versione

Eseguire il pull dell'elenco delle immagini disponibili per il controller dei dati con il comando seguente:

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

Il comando precedente restituisce un output simile all'esempio seguente:

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

Aggiornare il controller dei dati

Questa sezione spiega come aggiornare un controller dei dati connesso indirettamente.

Nota

Alcuni dei livelli e delle modalità dei servizi dati sono disponibili a livello generale e alcuni in anteprima. Se si installano servizi con disponibilità generale e in anteprima nello stesso controller dei dati, non è possibile eseguire l'aggiornamento sul posto. Per eseguire l'aggiornamento, eliminare tutte le istanze di database non con disponibilità generale. È possibile trovare l'elenco dei servizi con disponibilità generale e in anteprima nelle note sulla versione.

Per i percorsi di aggiornamento supportati, vedere Aggiornare i servizi dati abilitati per Azure Arc.

Aggiorna

È necessario connettersi ed eseguire l'autenticazione a un cluster Kubernetes e disporre di un contesto Kubernetes esistente selezionato prima di iniziare l'aggiornamento del controller dei dati.

Creare l'account del servizio per l'aggiornamento in esecuzione

Importante

Sono necessarie autorizzazioni Kubernetes per la creazione dell'account del servizio, l'associazione dei ruoli, il ruolo del cluster, l'associazione dei ruoli del cluster e tutte le autorizzazioni di controllo degli accessi in base al ruolo concesse all'account del servizio.

Salvare una copia di arcdata-deployer.yaml e sostituire il segnaposto {{NAMESPACE}} nel file con lo spazio dei nomi del controller dei dati, ad esempio arc. Eseguire il comando seguente per creare l'account del servizio deployer con il file modificato.

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

Aggiornare il caricatore di bootstrap

Il comando seguente crea un processo per aggiornare il caricatore di bootstrap e gli oggetti Kubernetes correlati.

Importante

Per impostazione predefinita, il file yaml nel comando seguente viene impostato su mcr.microsoft.com/arcdata. Salvare una copia del file yaml e aggiornarla in che venga usato un registro o repository diverso, se necessario.

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

Aggiornare il controller dei dati

Il comando seguente applica patch al tag immagine per aggiornare il controller dei dati.

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

Monitorare lo stato dell'aggiornamento

È possibile monitorare lo stato di avanzamento dell'aggiornamento con lo strumento kubectl.

kubectl

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

L'aggiornamento è un processo articolato in due parti. Il controller viene aggiornato per primo e quindi viene aggiornato lo stack di monitoraggio. Durante l'aggiornamento, usare kubectl get monitors -n <namespace> -w per visualizzare lo stato. L'output sarà:

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

Risoluzione dei problemi

Quando la versione desiderata è impostata su una versione specifica, il processo del caricatore di bootstrap tenterà di eseguire l'aggiornamento a tale versione fino a quando l'operazione non ha esito positivo. Se l'aggiornamento ha esito positivo, la proprietà RunningVersion della specifica viene aggiornata in base alla nuova versione. Gli aggiornamenti potrebbero non riuscire in scenari in cui i tag immagine non sono corretti, risulta impossibile connettersi al registro o al repository, la CPU o la memoria allocata ai contenitori non è sufficiente oppure le risorse di archiviazione sono insufficienti.

  1. Eseguire il comando seguente per verificare se uno dei pod è associato allo stato Error o ha un numero elevato di riavvii:

    kubectl get pods --namespace <namespace>
    
  2. Per esaminare gli eventi e verificare l'eventuale presenza di un errore, eseguire:

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. Per ottenere l'elenco dei contenitori nei pod, eseguire:

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. Per ottenere i log per un contenitore, eseguire:

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

Per visualizzare gli errori comuni e come risolverli, consultare Risorse per la risoluzione dei problemi.