Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Aggiornamento del cluster esistente alla nuova versione di Kubernetes
Quando è disponibile una nuova versione di Kubernetes in Amazon EKS, è possibile aggiornare il cluster Amazon EKS alla versione più recente.
Importante
Una volta aggiornato un cluster, non è possibile effettuare il downgrade a una versione precedente. Prima di eseguire l’aggiornamento a una nuova versione di Kubernetes, consigliamo di esaminare le informazioni contenute in Comprensione del ciclo di vita della versione di Kubernetes su EKS e nei passaggi di aggiornamento in questo argomento.
Le nuove versioni di Kubernetes hanno introdotto modifiche significative. Pertanto ti consigliamo di verificare il comportamento delle applicazioni rispetto alla nuova versione di Kubernetes prima di eseguire l'aggiornamento sui cluster di produzione. È possibile eseguire questa operazione mediante la creazione di un flusso di lavoro di integrazione continua per testare il comportamento totale dell'applicazione prima di passare a una nuova versione di Kubernetes.
Il processo di aggiornamento consiste nell'avvio, da parte di Amazon EKS, di nuovi nodi del server API con la versione aggiornata di Kubernetes per sostituire quelli esistenti. Amazon EKS esegue i controlli dell’integrità dell’infrastruttura standard e dello stato di preparazione per il traffico di rete su questi nuovi nodi per verificare che funzionino come previsto. Tuttavia, una volta avviato l’aggiornamento del cluster, non è possibile metterlo in pausa o interromperlo. Se uno di questi controlli non va a buon fine, Amazon EKS ripristina l'implementazione dell'infrastruttura e il cluster rimane nella versione precedente di Kubernetes. Le applicazioni in esecuzione non sono interessate e il cluster non è mai lasciato in uno stato non deterministico o irrecuperabile. Amazon EKS esegue regolarmente il backup di tutti i cluster gestiti e, se necessario, dispone di meccanismi per il recupero dei cluster. Stiamo valutando e migliorando costantemente i nostri processi di gestione dell’infrastruttura di Kubernetes.
Per aggiornare il cluster, Amazon EKS richiede fino a cinque indirizzi IP disponibili dalle sottoreti specificate al momento della creazione del cluster. Amazon EKS crea nuove interfacce di rete elastiche (interfacce di rete) per il cluster in una delle sottoreti specificate, che può essere diversa rispetto a quella in cui si trovano le interfacce di rete esistenti. Assicurati quindi che le regole del gruppo di sicurezza consentano la comunicazione necessaria con il cluster per una delle sottoreti specificate al momento della creazione del cluster. Se nessuna delle sottoreti che hai specificato durante la creazione del cluster non esiste, se non hai abbastanza indirizzi IP disponibili o se non disponi di regole del gruppo di sicurezza per la comunicazione con il cluster, l’aggiornamento potrebbe non riuscire.
Per garantire che l’endpoint del server API per il tuo cluster sia sempre accessibile, Amazon EKS fornisce un’elevata disponibilità del piano di controllo Kubernetes ed esegue aggiornamenti continui delle istanze del server API durante le operazioni di aggiornamento. Per tenere conto della modifica degli indirizzi IP delle istanze del server API che supportano l’endpoint del server API Kubernetes, devi assicurarti che i client del tuo server API gestiscano le riconnessioni in modo efficace. Le versioni recenti di kubectl e le librerie
Nota
Per ulteriori informazioni sui componenti di un aggiornamento del cluster, consulta Best practice per gli aggiornamenti dei cluster nella Guida alle best practice EKS. Questa risorsa consente di pianificare un aggiornamento e comprendere la strategia di aggiornamento di un cluster.
Considerazioni per la modalità automatica di Amazon EKS
-
La funzionalità di elaborazione della modalità automatica di Amazon EKS controlla la versione di Kubernetes dei nodi. Dopo aver aggiornato il piano di controllo, modalità automatica EKS inizierà ad aggiornare in modo incrementale i nodi gestiti. Modalità automatica EKS rispetta i budget relativi alle interruzioni dei pod.
-
Non è necessario aggiornare manualmente le funzionalità di modalità automatica di Amazon EKS, incluse le funzionalità di scalabilità automatica di calcolo, archiviazione a blocchi e bilanciamento del carico.
Riepilogo
Il riepilogo approfondito del processo di aggiornamento del cluster Amazon EKS è il seguente:
-
Assicurati che il cluster sia in uno stato che supporti un aggiornamento. Ciò include il controllo delle API Kubernetes usate dalle risorse distribuite nel cluster, per garantire che il cluster sia privo di problemi di salute. È necessario utilizzare gli approfondimenti sull’aggiornamento di Amazon EKS per valutare la preparazione all’aggiornamento del cluster.
-
Aggiorna il piano di controllo alla versione secondaria successiva (ad esempio, da 1.32 a 1.33).
-
Aggiorna i nodi nel piano dati in modo che corrispondano a quelli del piano di controllo.
-
Aggiorna tutte le applicazioni aggiuntive eseguite sul cluster (ad esempio,
cluster-autoscaler). -
Esegui l’aggiornamento dei componenti aggiuntivi forniti da Amazon EKS, come quelli inclusi per impostazione predefinita:
-
Aggiorna tutti i client che comunicano con il cluster (ad esempio,
kubectl).
Passaggio 1: preparazione per l’aggiornamento
Confrontare la versione Kubernetes del piano di controllo cluster con la versione Kubernetes dei nodi.
-
Ottieni la versione di Kubernetes del piano di controllo del cluster.
kubectl version -
Ottieni la versione di Kubernetes dei tuoi nodi. Questo comando restituisce tutti i nodi gestiti e autogestiti Amazon EC2, Fargate e ibridi. Ciascun pod Fargate è presente nell’elenco assieme al rispettivo nodo.
kubectl get nodes
Prima di aggiornare il piano di controllo a una nuova versione di Kubernetes, assicurarsi che la versione secondaria di Kubernetes dei nodi gestiti e dei nodi Fargate nel cluster sia la stessa versione del piano di controllo. Ad esempio, se nel piano di controllo (control-plane) è in esecuzione la versione 1.29 e in un qualsiasi nodo è in esecuzione la versione 1.28, allora dovrai aggiornare i nodi alla versione 1.29 prima di aggiornare il piano di controllo (control-plane) alla versione 1.30. Prima di aggiornare il piano di controllo, si consiglia inoltre di aggiornare i nodi autogestiti e i nodi ibridi alla stessa versione del piano di controllo. Per ulteriori informazioni, consulta Aggiornamento del gruppo di nodi gestito per il cluster, Aggiornamento dei nodi autogestiti per il tuo cluster e Aggiornamento dei nodi ibridi per il tuo cluster. Se hai nodi Fargate con una versione secondaria inferiore rispetto alla versione del piano di controllo, devi prima eliminare il pod rappresentato dal nodo. a aggiornare il piano di controllo (control-plane). Tutti i pod rimanenti saranno aggiornati alla nuova versione dopo averli nuovamente implementati.
Passaggio 2: esaminare le considerazioni sull’aggiornamento
Gli approfondimento sull’aggiornamento di Amazon EKS esegue automaticamente la scansione dei cluster e li mette a confronto con un elenco di potenziali problemi di aggiornamento della versione di Kubernetes, come l’utilizzo di API Kubernetes obsoleti. Amazon EKS aggiorna periodicamente l’elenco dei controlli approfonditi da eseguire in base alle valutazioni delle modifiche nel progetto Kubernetes. Amazon EKS aggiorna anche l’elenco dei controlli approfonditi man mano che sono introdotte modifiche nel servizio Amazon EKS insieme a nuove versioni. Per ulteriori informazioni, consulta Prepararsi agli aggiornamenti delle versioni di Kubernetes e risolvere i problemi di configurazione errata con gli approfondimenti sui cluster.
Esamina la Guida alla migrazione delle API obsolete
Esaminare gli approfondimenti sull’aggiornamento
Utilizza approfondimenti sull’aggiornamento di Amazon EKS per identificare i problemi. Per ulteriori informazioni, consulta Visualizzare gli approfondimenti sugli aggiornamenti (console).
Considerazioni dettagliate
-
Poiché Amazon EKS viene eseguito in un piano di controllo ad alta disponibilità, è possibile aggiornare solo una versione secondaria alla volta. Per ulteriori informazioni su questo requisito, consulta Kubernetes Version and Version Skew Support Policy
(Policy per la versione Kubernetes e il supporto Skew della versione). Supponiamo che la versione corrente del cluster sia 1.28e che desideri aggiornarlo alla versione1.30. Devi prima aggiornare la versione1.28del cluster alla versione1.29, quindi aggiornare la versione1.29del cluster alla versione1.30. -
Esamina la discrepanza di versione tra Kubernetes
kube-apiserverekubeletsui nodi.-
A partire dalla versione
1.28di Kubernetes,kubeletpuò essere fino a tre versioni minori precedenti rispetto akube-apiserver. Consulta la sezione Kubernetes upstream version skew policy. -
Se
kubeletsui nodi gestiti e Fargate è nella versione di Kubernetes1.25o più recente, è possibile aggiornare il cluster fino a tre versioni successive senza aggiornare la versione dikubelet. Ad esempio, sekubeletè nella versione1.25, è possibile aggiornare la versione del cluster Amazon EKS dalla1.25alla1.26,1.27e1.28mentrekubeletrimane sulla versione1.25.
-
-
Come best practice prima di iniziare un aggiornamento, assicurati che
kubeletsui nodi sia alla stessa versione di Kubernetes del tuo piano di controllo. -
Se il cluster è configurato con una versione del plugin CNI di Amazon VPC per Kubernetes precedente a
1.8.0, consigliamo di aggiornare il plugin all’ultima versione prima di aggiornare il cluster. Per aggiornare il plug-in, consulta Assegna IP ai pod con CNI di Amazon VPC.
Fase 3: aggiornamento del piano di controllo del cluster
Importante
Amazon EKS ha temporaneamente eseguito il rollback di una funzionalità che richiedeva l’utilizzo di un flag --force per aggiornare il cluster in caso di determinati problemi di approfondimenti sul cluster. Per ulteriori informazioni, consulta Rollback temporaneo di rafforzamento degli approfondimenti sull’aggiornamento della versione del cluster
Amazon EKS aggiorna un approfondimento sul cluster 24 ore dopo “l’ultimo aggiornamento”. È possibile confrontare l’ora in cui hai risolto un problema con “l’ora dell’ultimo aggiornamento” dell’approfondimento sul cluster.
Inoltre, l’aggiornamento dello stato degli approfondimenti può richiedere fino a 30 giorni dopo la risoluzione dell’utilizzo di API obsolete. Gli approfondimenti sull’aggiornamento cercano sempre l’utilizzo di API obsolete in una finestra di 30 giorni consecutivi.
È possibile inviare la richiesta di aggiornamento della versione del tuo piano di controllo EKS utilizzando:
Aggiornare il cluster: eksctl
Questa procedura richiede eksctl versione 0.214.0 o successiva. Puoi verificare la versione con il comando seguente:
eksctl version
Per istruzioni sull'installazione e sull'aggiornamento di eksctl, consulta la sezione Installationeksctl.
Aggiorna la versione di Kubernetes del tuo piano di controllo di Amazon EKS. Sostituisci <cluster-name> con il nome del cluster. Sostituisci <version-number> con il numero di versione supportato da Amazon EKS a cui aggiornare il tuo cluster. Per l’elenco completo delle versioni supportate, consulta Versioni supportate da Amazon EKS.
eksctl upgrade cluster --name <cluster-name> --version <version-number> --approve
Il processo di aggiornamento può richiedere alcuni minuti per il completamento.
Continua su Fase 4: aggiornamento dei componenti del cluster.
Aggiornamento del cluster: console AWS
-
Aprire la Console Amazon EKS
. -
Scegli Aggiorna ora per un cluster che desideri aggiornare.
-
Seleziona la versione a cui aggiornare il cluster e scegli Aggiorna.
-
Il processo di aggiornamento può richiedere alcuni minuti per il completamento. Continua su Fase 4: aggiornamento dei componenti del cluster.
Aggiornamento di un cluster: AWS CLI
-
Verificare che AWS CLI sia installata e abbia effettuato l’accesso. Per ulteriori informazioni, consulta Installing or updating to the latest version of the AWS CLI.
-
Aggiornare il cluster Amazon EKS con il seguente comando AWS CLI. Sostituisci
<cluster-name>e<region-code>del cluster che desideri aggiornare. Sostituisci<version-number>con il numero di versione supportato da Amazon EKS a cui aggiornare il tuo cluster. Per l’elenco completo delle versioni supportate, consulta Versioni supportate da Amazon EKS.aws eks update-cluster-version --name <cluster-name> \ --kubernetes-version <verion-number> --region <region-code>Di seguito viene riportato un output di esempio:
{ "update": { "id": "<update-id>", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "<version-number>" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] } -
Il processo di aggiornamento può richiedere alcuni minuti per il completamento. É possibile monitorare lo stato di aggiornamento del cluster attraverso il seguente comando. Oltre a utilizzare gli stessi
<cluster-name>e<region-code>, utilizza<update-id>restituito dal comando precedente.aws eks describe-update --name <cluster-name> \ --region <region-code> --update-id <update-id>Quando viene visualizzato lo stato
Successful, l'aggiornamento è completo. -
Continua su Fase 4: aggiornamento dei componenti del cluster.
Fase 4: aggiornamento dei componenti del cluster
-
Dopo che l'aggiornamento del cluster è completo, aggiornare i nodi di lavoro alla stessa versione secondaria di Kubernetes del cluster aggiornato. Per ulteriori informazioni, consulta Aggiornamento dei nodi autogestiti per il tuo cluster, Aggiornamento del gruppo di nodi gestito per il cluster e Aggiornamento dei nodi ibridi per il tuo cluster. Tutti i nuovi pod avviati in Fargate hanno una versione di
kubeletche corrisponde alla versione del cluster. I pod Fargate esistenti non sono modificati. -
(Facoltativo) Se è stato implementato Kubernetes Cluster Autoscaler nel cluster prima di aggiornarlo, aggiornare Cluster Autoscaler alla versione più recente che corrisponde alla versione principale e secondaria di Kubernetes per cui è stato eseguito l'aggiornamento.
-
Apri la pagina delle versioni
di Cluster Autoscaler in un browser Web e trova la versione più recente di Cluster Autoscaler corrispondente alla versione principale e secondaria di Kubernetes del cluster. Ad esempio, se la versione Kubernetes del cluster è 1.30, cerca la versione più recente di Cluster Autoscaler che inizia con1.30. Registra il numero di versione semantica (1.30.n, ad esempio) per tale versione da utilizzare nella fase successiva. -
Impostare il tag image di Cluster Autoscaler sulla versione registrata nella fase precedente mediante il comando seguente. Se necessario, sostituire
X.XX.Xcon il valore in proprio possesso.kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:vX.XX.X
-
-
(Cluster con soli nodi GPU) Se il cluster ha gruppi di nodi con supporto GPU (ad esempio,
p3.2xlarge), dovrai aggiornare il plugin del dispositivo NVIDIA per KubernetesDaemonSet sul cluster. Sostituisci <vX.X.X>con la versione NVIDIA/k8s-device-plugindesiderata prima di eseguire il comando seguente. kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/<vX.X.X>/deployments/static/nvidia-device-plugin.yml -
Aggiorna il plugin CNI di Amazon VPC per Kubernetes, CoredNS e componenti aggiuntivi
kube-proxy. È preferibile aggiornare i componenti aggiuntivi alle versioni minime elencate nei Token dell'account di servizio.-
Se stai utilizzando i componenti aggiuntivi di Amazon EKS, nella console Amazon EKS seleziona Clusters (Cluster), quindi seleziona il nome del cluster aggiornato nel riquadro di navigazione a sinistra. Le notifiche vengono visualizzate nella console Ti viene segnalato che è disponibile una nuova versione per ogni componente aggiuntivo per cui è disponibile un aggiornamento. Per aggiornare un componente aggiuntivo, seleziona la scheda Add-ons (Componenti aggiuntivi). In una delle caselle relative al componente aggiuntivo che dispone di un aggiornamento disponibile, selezionare Aggiorna ora, selezionare una versione disponibile e quindi selezionare Aggiorna.
-
In alternativa, è possibile utilizzare AWS CLI o
eksctlper aggiornare i componenti aggiuntivi. Per ulteriori informazioni, consulta Aggiornamento di un componente aggiuntivo di Amazon EKS.
-
-
Se necessario, aggiorna la tua versione di
kubectl. Utilizza la versione secondariakubectlimmediatamente precedente a quella del piano di controllo del cluster Amazon EKS.
Effettuare il downgrade della versione di Kubernetes di un cluster Amazon EKS
Non è possibile effettuare il downgrade di Kubernetes di un cluster Amazon EKS. Invece, crea un nuovo cluster su una versione precedente di Amazon EKS e migra i carichi di lavoro.