Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra le diverse opzioni di aggiornamento per i cluster del servizio Azure Kubernetes. Per eseguire un aggiornamento della versione Kubernetes di base, vedere Aggiornare un cluster del servizio Azure Kubernetes.
Per i cluster del servizio Azure Kubernetes che usano più pool di nodi o nodi di Windows Server, vedere Aggiornare un pool di nodi nel servizio Azure Kubernetes. Per aggiornare un pool di nodi specifico senza eseguire un aggiornamento del cluster Kubernetes, vedere Aggiornare un pool di nodi specifico.
Eseguire aggiornamenti manuali
È possibile eseguire aggiornamenti manuali per controllare quando il cluster viene aggiornato a una nuova versione di Kubernetes. Gli aggiornamenti manuali sono utili quando si vuole testare una nuova versione di Kubernetes prima di aggiornare il cluster di produzione. È possibile usare gli aggiornamenti manuali anche per aggiornare il cluster a una versione specifica di Kubernetes che non è la versione più recente disponibile.
Per eseguire gli aggiornamenti manuali, vedere gli articoli seguenti:
- Aggiornare un cluster AKS
- Aggiornare l'immagine del nodo
- Personalizzare l'aggiornamento del picco di nodi
- Elaborare gli aggiornamenti del sistema operativo del nodo
- Aggiornare più cluster AKS tramite Azure Kubernetes Fleet Manager
Configurare gli aggiornamenti automatici
È possibile configurare gli aggiornamenti automatici per aggiornare automaticamente il cluster alla versione più recente disponibile di Kubernetes. Gli aggiornamenti automatici sono utili quando ci si vuole assicurare che il cluster esegua sempre la versione più recente di Kubernetes. È possibile usare gli aggiornamenti automatici anche per assicurarsi che il cluster esegua sempre una versione di Kubernetes supportata.
Per configurare gli aggiornamenti automatici, vedere gli articoli seguenti:
- Aggiornare automaticamente un cluster di AKS
- Usa Manutenzione Pianificata per programmare e controllare gli aggiornamenti del tuo cluster AKS
- Interrompere automaticamente gli aggiornamenti del cluster AKS in caso di modifiche che interrompono la compatibilità dell'API (Anteprima)
- Aggiornare automaticamente le immagini del sistema operativo dei nodi del cluster AKS
- Applicare automaticamente gli aggiornamenti della sicurezza ai nodi del servizio Azure Kubernetes usando GitHub Actions
Considerazioni speciali per i pool di nodi che si estendono su più zone di disponibilità
Il servizio Azure Kubernetes usa il bilanciamento delle zone con massimo sforzo nei gruppi di nodi. Durante un picco di aggiornamento, le zone relative ai nodi di picco nei set di scalabilità di macchine virtuali sono inizialmente sconosciute, il che può temporaneamente causare una configurazione sbilanciata delle zone durante l'aggiornamento. Tuttavia, il servizio Azure Kubernetes elimina i nodi di picco al termine dell'aggiornamento e mantiene il bilanciamento delle zone originale. Se si vuole mantenere bilanciate le zone durante gli aggiornamenti, è possibile aumentare il picco di un numero multiplo di tre nodie i set di scalabilità di macchine virtuali bilanceranno i nodi nelle zone di disponibilità con il bilanciamento delle zone con massimo sforzo. Con il bilanciamento delle zone con massimo sforzo, il set di scalabilità tenta di aumentare e ridurre il numero di macchine virtuali mantenendo il bilanciamento. Tuttavia, se per qualche motivo questo non è possibile (ad esempio, se una zona è fuori servizio, il set di scalabilità non può creare una nuova macchina virtuale in tale zona), il set di scalabilità consente lo squilibrio temporaneo per effettuare correttamente lo scaling verso l'alto o verso il basso.
Le richieste di volumi persistenti (PVC) supportate da dischi di archiviazione con ridondanza locale (LRS) di Azure sono vincolate a una determinata zona e potrebbero non riuscire a ripristinarsi immediatamente se il nodo di sovraccarico non corrisponde alla zona del PVC. Se le zone non corrispondono, possono verificarsi tempi di inattività nell'applicazione quando l'operazione di aggiornamento continua a svuotare i nodi, ma i PV sono vincolati a una zona. Per gestire questo caso e mantenere la disponibilità elevata, configurare un budget per l'interruzione dei pod nell'applicazione per consentire a Kubernetes di rispettare i requisiti di disponibilità durante l'operazione di svuotamento.
Ottimizzare il comportamento dei nodi non restrittivi (anteprima)
È possibile configurare il comportamento del processo di aggiornamento per i guasti di drenaggio. Il comportamento di aggiornamento predefinito è Schedule
, costituito da un errore di drenaggio del nodo che causa il fallimento dell'operazione di aggiornamento, lasciando i nodi non drenati in uno stato pianificabile. In alternativa, è possibile selezionare il Cordon
comportamento, che ignora i nodi che non riescono a svuotare inserendoli in uno stato in quarantena, li etichetta kubernetes.azure.com/upgrade-status:Quarantined
e procede con l'aggiornamento dei nodi rimanenti. Questo comportamento garantisce che tutti i nodi vengano aggiornati o messi in quarantena. Questo approccio consente di risolvere gli errori di svuotamento e gestire normalmente i nodi in quarantena.
Impostare il nuovo comportamento di blocco
Per impostare il nuovo comportamento di blocco, è necessario usare aks-preview
l'estensione 9.0.0b3 o versione successiva.
Installare o aggiornare l'estensione
aks-preview
usando il comando [az extension add
][az-extension-add] o [az extension update
][az-extension-update]:# Install the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension to the latest version az extension update --name aks-preview
Aggiorna il comportamento del nodo non drenabile nel pool di nodi a
Cordon
usando il comando [az aks nodepool update
][az-aks-nodepool-update].az aks nodepool update --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --resource-group $RESOURCE_GROUP --max-surge 1 --undrainable-node-behavior Cordon
L'output di esempio seguente mostra il comportamento del nodo non restrittivo aggiornato:
"upgradeSettings": { "drainTimeoutInMinutes": null, "maxSurge": "1", "nodeSoakDurationInMinutes": null, "undrainableNodeBehavior": "Cordon" }
Verificare l'etichetta nei nodi bloccati quando si verifica un errore di svuotamento del nodo durante l'aggiornamento usando il comando
kubectl get
.kubectl get nodes --show-labels=true
I nodi bloccati non sono pianificati per i pod e contrassegnati con l'etichetta
"kubernetes.azure.com/upgrade-status: Quarantined"
. Il numero massimo di nodi che possono essere lasciati bloccati non può essere maggiore delMax-Surge
valore.
Risolvere i nodi che non possono essere drenati
Risolvere prima di tutto il problema sottostante che causa lo svuotamento. Nell'esempio seguente viene rimosso il PDB responsabile:
kubectl delete pdb nginx-pdb poddisruptionbudget.policy "nginx-pdb" deleted.
Se si è certi che il problema è stato risolto, è possibile rimuovere l'etichetta
"kubernetes.azure.com/upgrade-status: Quarantined"
posizionata su nodi non restrittivi usando ilkubectl label
comando .kubectl label nodes <node-name> <label-key>-
Tutte le operazioni
PUT
successive tenteranno di riconciliare prima l'oggettoFailed Provisioning Status
nel clusterSuccess
. I nodi in quarantena non verranno considerati per eventuali inserimenti o successive riconciliazioni. È necessario rimuovere in modo esplicito le etichette come indicato in precedenza per i nodi bloccati da considerare.È anche possibile eliminare il nodo bloccato usando il comando [
az aks nodepool delete-machines
][az-aks-nodepool-delete-machines]. Questo comando è utile se si intende ridurre il footprint del pool di nodi rimuovendo i nodi lasciati indietro nelle versioni precedenti.az aks nodepool delete-machines --cluster-name $CLUSTER_NAME --machine-names aks-$NODE_POOL_NAME-test123-vmss000000 --name $NODE_POOL_NAME --resource-group $RESOURCE_GROUP
Dopo aver completato questo passaggio, è possibile riconciliare lo stato del cluster eseguendo qualsiasi operazione di aggiornamento senza i campi facoltativi come descritto qui. In alternativa, è possibile ridimensionare il pool di nodi allo stesso numero di nodi del numero di nodi aggiornati. Questa azione garantisce che il pool di nodi ottenga le dimensioni originali desiderate. AKS prioritizza la rimozione dei nodi bloccati. Questo comando ripristina anche lo stato del provisioning del cluster su
Succeeded
. Nell'esempio specificato è2
il numero totale di nodi aggiornati.# Update the cluster to restore the provisioning status az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME # Scale the node pool to restore the original size az aks nodepool scale --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --node-count 2
Ottimizzare gli aggiornamenti per migliorare le prestazioni e ridurre al minimo le interruzioni
La combinazione di Finestra di manutenzione pianificata, Picco massimo, Budget per l'interruzione dei pod, Timeout di svuotamento dei nodie Tempo di attesa dei nodi può aumentare significativamente la probabilità che gli aggiornamenti dei nodi vengano completati correttamente entro la fine della finestra di manutenzione, riducendo al minimo le interruzioni.
- Finestra di manutenzione pianificata consente ai team del servizio di pianificare l'aggiornamento automatico durante una finestra predefinita, in genere un periodo di traffico ridotto, per ridurre al minimo l'impatto sul carico di lavoro. È consigliabile una finestra della durata di almeno quattro ore.
- Max Surge nel pool di nodi consente di richiedere una quota aggiuntiva durante il processo di aggiornamento e limita il numero di nodi selezionati per l'aggiornamento simultaneamente. Un picco massimo superiore comporta un processo di aggiornamento più rapido. Non è consigliabile impostare il picco massimo su 100%, in quanto tutti i nodi vengono aggiornati contemporaneamente, causando interruzioni nell'esecuzione delle applicazioni. Per i pool di nodi di produzione, è consigliabile una quota di picco massimo di 33%.
- Max Unavailable (anteprima) nel pool di nodi consente l'esecuzione degli aggiornamenti tramite il blocco dei nodi esistenti e lo svuotamento senza aggiungere nodi di picco. Un massimo massimo superiore non disponibile comporta un aggiornamento più rapido, ma causa anche un maggior numero di interruzioni del carico di lavoro per il pool di nodi. Questa funzionalità è consigliata per i clienti che riscontrano vincoli di capacità a causa della mancanza di capacità aggiuntiva di SKU nell'area o nei problemi di quota.
- Budget per l'interruzione dei pod è impostato per le applicazioni di servizio e limita il numero di pod che possono essere disattivati durante interruzioni volontarie, ad esempio gli aggiornamenti dei nodi controllati dal servizio Azure Kubernetes. Può essere configurato come repliche
minAvailable
, che indica il numero minimo di pod dell'applicazione che devono essere attivi o replichemaxUnavailable
, che indica il numero massimo di pod dell'applicazione che possono essere terminati, garantendo la disponibilità elevata per l'applicazione. Fare riferimento alle indicazioni fornite per configurare Budget per l'interruzione dei pod (PDB). I valori PDB devono essere convalidati per determinare le impostazioni che funzionano meglio per il servizio specifico. - Timeout di svuotamento dei nodi nel pool di nodi consente di configurare la durata di attesa per la rimozione dei pod e la terminazione normale per ogni nodo durante un aggiornamento. Questa opzione è utile quando si gestiscono carichi di lavoro a esecuzione prolungata. Quando viene specificato il timeout di svuotamento dei nodi (in minuti), il servizio Azure Kubernetes rispetta l'attesa nei budget di interruzione dei pod. Se non specificato, il timeout predefinito è 30 minuti.
- Tempo di attesa dei nodi consente di scaglionare gli aggiornamenti dei nodi in modo controllato e può ridurre al minimo i tempi di inattività delle applicazioni durante un aggiornamento. È possibile specificare un tempo di attesa, preferibilmente il più vicino possibile a 0 minuti, per verificare la disponibilità dell'applicazione tra gli aggiornamenti dei nodi. Se non è specificato, il valore predefinito è 0 minuti. Tempo di attesa dei nodi funziona insieme alle proprietà Picco massimo e Timeout di svuotamento dei nodi disponibili nel pool di nodi per restituire risultati corretti in termini di velocità di aggiornamento e disponibilità dell'applicazione.
Impostazioni di aggiornamento | Risorse disponibili per l'aumento | Comportamento previsto |
---|---|---|
maxSurge = 5 maxUnavailable = 0 |
5 nodi disponibili per l'aumento | Verranno aumentati 5 nodi per aggiornare il pool di nodi. |
maxSurge = 5 maxUnavailable = 0 |
0-4 nodi disponibili per l'aumento | L'operazione di aggiornamento non riesce a causa della mancata presenza di nodi sufficienti per soddisfare maxSurge . |
maxSurge = 0 maxUnavailable = 5 |
N/D poiché non sono necessari nodi di picco | L'operazione usa 5 nodi dal pool di nodi esistente senza creare nuovi nodi per aggiornare il pool di nodi. |
Le convalide usate nel processo di aggiornamento oggi
Quando si avvia un'operazione di aggiornamento tramite API, interfaccia della riga di comando di Azure o portale di Azure, il servizio Azure Kubernetes esegue una serie di convalide di pre-aggiornamento prima di avviare l'aggiornamento. Queste convalide assicurano che il cluster sia in uno stato integro e possa essere aggiornato correttamente.
- Modifiche che causano un'interruzione dell'API: identifica se sono presenti API deprecate in uso che possono influire sui carichi di lavoro.
- Versione dell'aggiornamento di Kubernetes: assicura che la versione di destinazione sia valida(ad esempio, nessun passaggio maggiore di tre versioni secondarie, nessun downgrade e compatibilità con il piano di controllo).
- Convalida della configurazione PDB non corretta: verifica la presenza di budget di interruzione dei pod (PDB) non configurati correttamente, ad esempio
maxUnavailable = 0
che non consentono l'interruzione dei nodi. - Quota: conferma che è disponibile una quota sufficiente per i nodi in espansione necessari durante il processo di aggiornamento.
- Subnet: verifica se sono presenti indirizzi IP allocabili sufficienti per l'aggiornamento o se sono necessarie modifiche alle dimensioni della subnet.
- Certificati/entità servizio: rileva certificati scaduti o entità servizio che potrebbero influire sul processo di aggiornamento.
Questi controlli consentono di ridurre al minimo gli errori di aggiornamento e fornire agli utenti visibilità anticipata sui potenziali problemi che devono essere risolti prima di procedere.
Passaggi successivi
Questo articolo illustra le diverse opzioni di aggiornamento per i cluster del servizio Azure Kubernetes. Per una descrizione dettagliata delle procedure consigliate per l'aggiornamento e altre considerazioni, vedere Linee guida per l'aggiornamento e le patch del servizio Azure Kubernetes.
Azure Kubernetes Service