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:
- Creare l'account del servizio per l'aggiornamento in esecuzione.
- Aggiornare il caricatore di bootstrap.
- 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.
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>
Per esaminare gli eventi e verificare l'eventuale presenza di un errore, eseguire:
kubectl describe pod <pod name> --namespace <namespace>
Per ottenere l'elenco dei contenitori nei pod, eseguire:
kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
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.