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.
Servizio Azure Kubernetes (AKS) esegue aggiornamenti in sequenza per ridurre al minimo le interruzioni ai carichi di lavoro in esecuzione.
Per la maggior parte dei carichi di lavoro di produzione, AKS Automatic è la scelta predefinita consigliata, ove applicabile. AKS Automatic include configurazioni predefinite idonee per l'ambiente di produzione per le operazioni di aggiornamento, ad esempio aggiornamenti automatici delle versioni di Kubernetes, aggiornamenti automatici delle immagini del sistema operativo (OS), operazioni gestite dei nodi di sistema e meccanismi di protezione integrati che riducono l'intervento manuale. Per altre informazioni, vedere Introduzione ad AKS Automatic.
Questo articolo illustra i meccanismi di aggiornamento del servizio Azure Kubernetes ed evidenzia la differenza tra il servizio Azure Kubernetes Automatic e AKS Standard.
Prerequisiti
- Informazioni sulle procedure consigliate per l'aggiornamento di Kubernetes
- Familiarità con Pod Disruption Budgets (PDB)
Modello di aggiornamento: AKS Automatic e AKS Standard
Le modalità del cluster AKS Automatic e AKS Standard usano gli stessi concetti fondamentali per l'aggiornamento di Kubernetes, ma differiscono in base alle impostazioni predefinite e alla proprietà operativa.
| Problema di aggiornamento | AKS Automatico | Servizio Azure Kubernetes Standard |
|---|---|---|
| Posizionamento di produzione | Impostazione predefinita consigliata per la maggior parte dei carichi di lavoro di produzione, se applicabile | Modello flessibile con una configurazione più manuale per impostazione predefinita |
| Aggiornamenti delle versioni secondarie di Kubernetes | Canale di aggiornamento automatico preconfigurato | Manuale per impostazione predefinita, canale automatico facoltativo |
| Aggiornamenti delle immagini del sistema operativo del nodo | Canale immagine del sistema operativo del nodo automatico preconfigurato | Manuale per impostazione predefinita, canale automatico facoltativo |
| Operazioni del pool di nodi di sistema | Gestito da AKS | Gestito dal cliente |
| Finestre di manutenzione pianificata | Disponibile per impostazione predefinita | Configurazione facoltativa |
| Controlli di interruzione del carico di lavoro | Di proprietà del cliente, inclusi strategia di replica, comportamento di disponibilità e criteri relativi alle interruzioni | Di proprietà del cliente, inclusi strategia di replica, comportamento di disponibilità e criteri relativi alle interruzioni |
Note
AKS Automatic semplifica le operazioni della piattaforma, ma rimane valido il modello di responsabilità condivisa. La progettazione della disponibilità a livello di carico di lavoro e il comportamento del criterio di espulsione restano responsabilità del cliente.
Comportamento dell'aggiornamento progressivo in AKS
AKS aggiorna i pool di nodi usando una modalità progressiva che mantiene la capacità durante la sostituzione o la reimpostazione dell'immagine dei nodi. Questo comportamento è lo stesso in tutte le modalità del cluster AKS.
In linea generale, AKS:
- Aggiunge capacità di aumento temporaneo in base alle impostazioni di aggiornamento.
- Isola e svuota i nodi per spostare i carichi di lavoro.
- Ricrea l'immagine o sostituisce i nodi nella versione di destinazione.
- Rimuove la capacità di picco temporanea dopo il completamento.
Esempio di aggiornamento in sequenza
Questo esempio illustra l'aggiornamento di un cluster a due nodi da Kubernetes 1.30 a 1.31 con maxSurge impostato su 1.
Passaggio 1: Configurazione iniziale
Il cluster inizia con due nodi che eseguono la versione 1.30, ognuno dei quali ospita i pod dell'applicazione.
- Nodo 1: Pod A, Pod B
- Nodo 2: Pod C, Pod D
- Nodo surge: vuoto (ad eccezione di DaemonSet e nuovi pod)
Passaggio 2: Isolare e poi svuotare il primo nodo
AKS blocca il nodo 1 per impedire la pianificazione di nuovi pod, quindi draina i pod esistenti.
- Pod A → rimosso e sostituito nel nodo Surge
- Pod B → rimosso e sostituito nel nodo 2
Passaggio 3: Aggiornare il primo nodo
Il nodo 1 viene ricreato con Kubernetes versione 1.31 mentre i pods continuano a funzionare sugli altri nodi.
- Nodo 1: aggiornato alla versione 1.31
- Nodo 2: Pod B, Pod C, Pod D
- Nodo Surge: Pod A
Passaggio 4: Isolare e drenare il secondo nodo
AKS ripete il processo per Nodo 2, i pod vengono rimossi e lo schedulatore li ridistribuisce ai nodi disponibili più idonei.
- Pod C, B → rimosso e sostituito nel nodo 1
- Pod D → rimosso e sostituito nel nodo Surge
- Nodo 2: Isolato e reinstallato alla versione 1.31
Passaggio 5: Rimuovere il nodo di picco
Dopo l'aggiornamento di tutti i nodi permanenti, il nodo Surge viene bloccato, svuotato ed eliminato.
- Pod A → rimosso e sostituito nel nodo 1
- Pod D → rimosso e sostituito nel nodo 2
- Nodo surge: eliminato
Stato finale
Tutti i nodi eseguono ora Kubernetes versione 1.31 con pod schedulati nel cluster.
- Nodo 1 (v1.31): Pod A, Pod C
- Nodo 2 (v1.31): Pod B, Pod D
Comportamento restrittivo del Pod Disruption Budget (PDB)
Se un PDB restrittivo blocca l'eliminazione, lo svuotamento dei nodi può essere ritardato o impedito. AKS può usare il comportamento del nodo non svuotabile Cordon per continuare ad aggiornare altri nodi idonei, a seconda del comportamento configurato. I nodi bloccati potrebbero rimanere in una versione precedente fino a quando non viene risolta la condizione di blocco.
Esempio di PDB restrittivo
Questo esempio mostra l'aggiornamento di un cluster a due nodi da Kubernetes 1.30 a 1.31 con maxSurge impostato su 2 e un PDB che blocca l'operazione di svuotamento del primo nodo.
Passaggio 1: Configurazione iniziale con PDB restrittivo
Il cluster inizia con due nodi che eseguono la versione 1.30, con un PDB che protegge pod A dalla rimozione.
- Nodo 1: Pod A (protetto da PDB), Pod B
- Nodo 2: Pod C, Pod D
- Nodi aggiuntivi: 2 nodi appena creati
- PDB: impedisce l'evacuazione del Pod A
Passaggio 2: Tentare di svuotare il primo nodo (bloccato)
AKS isola il nodo 1, ma non riesce a drenare il pod A a causa dei vincoli del PDB.
- Nodo 1: isolato e contrassegnato come in quarantena (pod A bloccato)
- Pod B → Espulso e sostituito sul Nodo Surge 1, mentre il Nodo Surge 2 non viene utilizzato temporaneamente
- Stato: Aggiornamento del nodo 1 bloccato
Passaggio 3: Procedere al secondo nodo
Con il nodo 1 messo in quarantena, AKS continua ad aggiornare il nodo 2.
- Nodo 1: rimane in quarantena (v1.30)
- Nodo 2: isolato e svuotato correttamente
- Pod C → rimosso e sostituito su Surge Node 2
- Pod D → rimosso e sostituito nel nodo Surge 2
Passaggio 4: Aggiornare il secondo nodo
Il nodo 2 è stato reimpostato correttamente alla versione 1.31 di Kubernetes.
- Nodo 1: ancora in quarantena (v1.30) con Pod A
- Nodo 2: aggiornato alla versione 1.31
- Nodo Surge 1: Pod B
- Surge Nodo 2: Pod C, Pod D
Passaggio 5: un nodo Surge diventa il sostituto permanente mentre un altro nodo viene rimosso
Poiché il nodo 1 rimane in quarantena, il nodo surge 1 diventa il sostituto permanente che esegue la versione 1.31 e il nodo surge 2 viene eliminato.
- Nodo 1: In quarantena (v1.30) - richiede l'intervento manuale
- Pod C, Pod D → espulsi dal nodo Surge 2 e sostituiti su Node 2
- Surge Node 1 (v1.31): Pod B (now permanent)
- Nodo di picco 2 (v1.31): eliminato
Stato finale
L'aggiornamento viene completato con un nodo in quarantena che richiede l'intervento manuale.
- Nodo 1: messo in quarantena (v1.30) con pod A - Il cliente deve risolvere manualmente (vedere Risolvere i nodi non restrittivi)
- Nodo 2 (v1.31): in esecuzione normalmente
- Precedente nodo Surge (v1.31): Ora sostituito permanentemente
Importante
Il nodo in quarantena (nodo 1) rimane la responsabilità del cliente di gestire. È necessario:
- Modificare il PDB per consentire la rimozione del pod A.
- Eliminare manualmente il pod A.
- Eliminare e ricreare il nodo dopo aver corretto la condizione di blocco.
Considerazioni principali per gli aggiornamenti bloccati da PDB
-
Comportamento del nodo non restrittivo: impostare su
Cordonper il pool di nodi per abilitare questo comportamento di quarantena. - Responsabilità del cliente: i nodi in quarantena richiedono l'intervento manuale per la risoluzione.
- Capacità del cluster: il nodo di picco diventa permanente e potenzialmente influisce sulla pianificazione della capacità del cluster.
- Monitoraggio: tenere traccia dei nodi in quarantena tramite Monitoraggio di Azure o kubectl per garantire una risoluzione tempestiva.
Suggerimento
Per evitare completamente lo scenario di quarantena, è possibile usare la gestione PDB automatica per aumentare automaticamente le repliche di distribuzione in modo che i vincoli PDB vengano soddisfatti prima dell'inizio dello svuotamento. Ciò consente alla rimozione di procedere senza blocchi, eliminando la necessità di una gestione manuale della quarantena.
Blue-Green aggiornamenti del pool di nodi (controllo manuale)
Blue-Green gli aggiornamenti offrono un approccio di aggiornamento più controllato creando manualmente un set completo di nuovi pool di nodi prima della migrazione dei carichi di lavoro. Questo approccio manuale consente di controllare completamente il processo di aggiornamento e la tempistica.
Per altre informazioni, vedi Aggiornamenti Blue-Green del pool di nodi in AKS.
Quando usare gli aggiornamenti Blue-Green
Gli aggiornamenti manuali Blue-Green dei pool di nodi sono una strategia avanzata per esigenze specifiche, come punti di controllo espliciti della migrazione, controlli di validazione personalizzati o transizioni strettamente controllate.
Usare Blue-Green manuale quando è necessario:
- Fasi di migrazione controllate dall'operatore.
- Criteri di convalida e accettazione personalizzati prima del commit.
- Coreografia di rollback esplicita legata ai runbook interni.
Per la maggior parte dei carichi di lavoro di produzione, laddove applicabile, il comportamento predefinito degli aggiornamenti di AKS Automatic rappresenta il punto di partenza preferibile, mentre il Blue-Green manuale è in genere riservato a casi eccezionali.
Concetti chiave
- Pool di nodi blu: il pool di nodi esistente che esegue la versione corrente di Kubernetes.
- Pool di nodi verdi: nuovo pool di nodi creato eseguendo la versione di Kubernetes di destinazione.
- Controllo manuale: è possibile gestire tutti gli aspetti del processo di migrazione.
- Punti di controllo della convalida: decidi quando procedere, mettere in pausa o eseguire il rollback.
Vantaggi degli aggiornamenti di Blue-Green
- Controllo completo: si decide esattamente quando si verifica ogni passaggio.
- Convalida personalizzata: implementare criteri di convalida e tempi personalizzati.
- Migrazione graduale: spostare i carichi di lavoro al ritmo preferito.
- Ripristino semplice: i nodi originali rimangono disponibili finché non li elimini.
Considerazioni principali per gli aggiornamenti di Blue-Green
- Lavoro manuale: richiede la gestione attiva durante tutto il processo.
- Requisiti di quota: richiede 2 volte la capacità del nodo durante l'aggiornamento.
- Pianificazione: documentare i criteri di convalida e le procedure di rollback.
Esempio di processo di aggiornamento manuale Blue-Green
Questo esempio illustra l'aggiornamento manuale di un cluster a due nodi da Kubernetes 1.30 a 1.31 usando la distribuzione Blue-Green.
Passaggio 1: Creare un pool di nodi verdi
Per iniziare, creare manualmente un nuovo pool di nodi con la versione di Kubernetes di destinazione insieme al pool di nodi esistente.
- Pool di nodi blu (v1.30): Pod A, Pod B, Pod C, Pod D (esistenti)
- Pool di nodi verdi (v1.31): vuoto (creato manualmente dall'utente)
-
Azione:
az aks nodepool addcon la nuova versione di Kubernetes
Passaggio 2: Isolare manualmente i nodi blu
Bloccare i nodi blu per impedire la pianificazione di nuovi pod mantenendo i pod esistenti in esecuzione.
-
La tua azione:
kubectl cordonin ogni nodo blu - Nodi blu: Bloccati, nessun nuovo pod pianificato
- Nodi verdi: pronti per ricevere i carichi di lavoro
Passaggio 3: Svuotare manualmente i nodi blu (ritmo controllato)
È possibile controllare il ritmo della migrazione svuotando manualmente i nodi uno alla volta o in batch.
-
Azione:
kubectl drainnei nodi blu selezionati - Migrazione dei pod: i pod vengono automaticamente riprogrammati sui nodi verdi
- Convalida: verificare i carichi di lavoro nei nodi verdi prima di procedere
Passaggio 4: Convalidare e decidere
Dopo la migrazione dei carichi di lavoro, convalidare le prestazioni dell'applicazione nei nodi verdi.
Durante questa fase, è possibile:
- Monitoraggio: controllare le metriche e i log dell'applicazione
- Test: eseguire test di convalida nel pool di nodi verdi
- Decidere: eseguire il commit a verde o eseguire il rollback a blu
Passaggio 5: eseguire il commit o il rollback
In base alla convalida, è possibile completare manualmente l'aggiornamento o il rollback.
Opzione A - Conferma (operazione completata con successo):
-
Azione: Eliminare il pool di nodi blu usando
az aks nodepool delete - Risultato: il pool di nodi verdi diventa primario
Opzione B - Eseguire il rollback (rilevati problemi):
-
Azione richiesta: rimuovere il cordon dai nodi blu usando
kubectl uncordon, svuotare i nodi verdi usandokubectl drain, ed eliminare il pool di nodi verdi usandoaz aks nodepool delete - Risultato: i carichi di lavoro tornano ai nodi Blu
Considerazioni sulla produzione per la pianificazione dell'aggiornamento
-
Configurazione di picco (
maxSurge): controlla il numero di nodi di picco creati durante gli aggiornamenti. I valori più elevati velocizzano gli aggiornamenti, ma utilizzano più risorse. - Budget di interruzione per i pod (PDB): configurare i PDB per garantire la disponibilità delle applicazioni durante il processo di aggiornamento.
- Aggiornamenti del pool di nodi: ogni pool di nodi si aggiorna in modo indipendente. Pianificare di conseguenza la strategia di aggiornamento.
- Capacità e quota: convalidare i requisiti di capacità temporanea e stabile prima delle finestre di aggiornamento.
- Monitoraggio e avvisi: configurare il monitoraggio e gli avvisi prima dell'avvio dell'aggiornamento.
In AKS Automatic, diverse opzioni di aggiornamento a livello di piattaforma sono preconfigurate per l'uso in produzione. In AKS Standard, i team in genere effettuano queste scelte in modo esplicito.