Aggiorna il cluster esistente alla nuova versione di Kubernetes - Amazon EKS

Aiutaci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiorna il 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 puoi effettuare il downgrade a una versione precedente. Prima di eseguire l'aggiornamento a una nuova versione di Kubernetes, ti consigliamo di esaminare le informazioni Comprendi il ciclo di vita delle versioni Kubernetes su EKS e i 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 controlli standard dell'infrastruttura e dello stato di preparazione del traffico di rete su questi nuovi nodi per verificare che funzionino come previsto. Tuttavia, una volta avviato l'aggiornamento del cluster, non puoi 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 ne risentono e il cluster non viene 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. Valutiamo e miglioriamo costantemente i nostri processi di gestione dell'infrastruttura 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 una delle sottoreti che hai specificato al momento della creazione del cluster non esiste, non ha abbastanza indirizzi IP disponibili o non dispone di regole per i gruppi di sicurezza che consentano le comunicazioni necessarie al cluster, l'aggiornamento può fallire.

Per garantire che l'endpoint del server API per il tuo cluster sia sempre accessibile, Amazon EKS fornisce un piano di controllo Kubernetes ad alta disponibilità 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 server API gestiscano le riconnessioni in modo efficace. Le versioni recenti kubectl e le librerie client Kubernetes ufficialmente supportate eseguono questo processo di riconnessione in modo trasparente.

Nota

Per ulteriori informazioni sui componenti di un aggiornamento del cluster, consulta le migliori pratiche per gli aggiornamenti dei cluster nella Guida alle migliori pratiche EKS. Questa risorsa consente di pianificare un aggiornamento e comprendere la strategia di aggiornamento di un cluster.

Considerazioni sulla modalità automatica di Amazon EKS

  • La funzionalità di elaborazione di Amazon EKS Auto Mode controlla la versione Kubernetes dei nodi. Dopo aver aggiornato il piano di controllo, EKS Auto Mode inizierà ad aggiornare in modo incrementale i nodi gestiti. EKS Auto Mode rispetta i budget relativi alle interruzioni dei pod.

  • Non è necessario aggiornare manualmente le funzionalità di Amazon EKS Auto Mode, incluse le funzionalità di scalabilità automatica di calcolo, storage a blocchi e bilanciamento del carico.

Riepilogo

Il riepilogo di alto livello del processo di aggiornamento del cluster Amazon EKS è il seguente:

  1. Assicurati che il cluster sia in uno stato tale da supportare un aggiornamento. Ciò include il controllo di Kubernetes APIs utilizzato dalle risorse distribuite nel cluster, per garantire che il cluster sia privo di problemi di salute. È necessario utilizzare Amazon EKS Upgrade Insights per valutare la preparazione all'aggiornamento del cluster.

  2. Aggiorna il piano di controllo alla versione secondaria successiva (ad esempio, da 1.32 a 1.33).

  3. Aggiorna i nodi nel piano dati in modo che corrispondano a quelli del piano di controllo.

  4. Aggiorna tutte le applicazioni aggiuntive eseguite sul cluster (ad esempio,cluster-autoscaler).

  5. Esegui l'upgrade dei componenti aggiuntivi forniti da Amazon EKS, come quelli inclusi di default:

  6. Aggiorna tutti i client che comunicano con il cluster (ad esempio,kubectl).

Fase 1: Preparazione per l'aggiornamento

Confrontare la versione Kubernetes del piano di controllo cluster con la versione Kubernetes dei nodi.

  • Scarica la versione Kubernetes del tuo piano di controllo del cluster.

    kubectl version
  • Scarica la versione Kubernetes dei tuoi nodi. Questo comando restituisce tutti i nodi Amazon EC2, Fargate e ibridi autogestiti e gestiti. Ogni Fargate Pod è elencato come nodo a sé stante.

    kubectl get nodes

Prima di aggiornare il piano di controllo a una nuova versione di Kubernetes, assicurati che la versione secondaria Kubernetes dei nodi gestiti e dei nodi Fargate nel cluster sia la stessa della versione del piano di controllo. Ad esempio, se il piano di controllo è in esecuzione 1.29 e uno dei nodi è in esecuzione1.28, è necessario aggiornare i nodi alla versione 1.29 prima di aggiornare il piano di controllo alla versione 1.30. Si consiglia inoltre di aggiornare i nodi autogestiti e i nodi ibridi alla stessa versione del piano di controllo prima di aggiornare il piano di controllo. Per ulteriori informazioni, consulta Aggiorna un gruppo di nodi gestiti per il tuo cluster, Aggiorna i nodi autogestiti per il tuo cluster e Aggiorna i nodi ibridi per il tuo cluster. Se hai nodi Fargate con una versione secondaria inferiore alla versione del piano di controllo, elimina prima il Pod rappresentato dal nodo. a aggiornare il piano di controllo (control-plane). Tutti i Pod rimanenti verranno aggiornati alla nuova versione dopo averli ridistribuiti.

Fase 2: Rivedi le considerazioni relative all'aggiornamento

Amazon EKS Cluster Insights analizza automaticamente i cluster rispetto a un elenco di potenziali aggiornamenti di versione di Kubernetes che influiscono su problemi come l'utilizzo dell'API Kubernetes obsoleta. 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 vengono introdotte modifiche nel servizio Amazon EKS insieme a nuove versioni. Per ulteriori informazioni, consulta Preparati agli aggiornamenti delle versioni di Kubernetes e risolvi gli errori di configurazione con Cluster Insights.

Consulta la Guida alla migrazione delle API obsolete nei documenti di Kubernetes.

Rivedi Cluster Insights

Usa Amazon EKS Cluster Insights per identificare i problemi con

  1. Aprire la Console Amazon EKS.

  2. Dall'elenco dei cluster, scegli il nome del cluster Amazon EKS per il quale desideri visualizzare gli approfondimenti.

  3. Scegli Visualizza dashboard.

  4. Scegli la scheda Cluster Insights.

  5. Nella tabella Upgrade Insights, verranno visualizzate le seguenti colonne:

    • Nome: il controllo eseguito da Amazon EKS sul cluster.

    • Stato di approfondimento: un approfondimento con lo stato «Errore» in genere indica che la versione di Kubernetes interessata è N+1 della versione corrente del cluster, mentre lo stato «Avviso» indica che l'analisi si applica a una versione futura di Kubernetes N+2 o superiore. Un approfondimento con lo stato "Ammesso" indica che Amazon EKS non ha riscontrato alcun problema associato a questo controllo sull'approfondimento nel cluster. Lo stato dell'approfondimento "Sconosciuto" significa che Amazon EKS non è in grado di determinare se il cluster è interessato da questo controllo sull'approfondimento.

    • Versione: la versione di Kubernetes che Insight ha verificato per individuare possibili problemi.

    • Ora dell'ultimo aggiornamento: l'ora in cui lo stato dell'analisi è stato aggiornato l'ultima volta per questo cluster.

    • Ultima transizione: l'ora in cui lo stato di questa analisi è cambiato l'ultima volta.

    • Descrizione: informazioni tratte dal controllo sull'approfondimento, che include l'avviso e le azioni consigliate per la correzione.

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.28 e che desideri aggiornarlo alla versione 1.30. Devi prima aggiornare la versione 1.28 del cluster alla versione 1.29, quindi aggiornare la versione 1.29 del cluster alla versione 1.30.

  • Controlla la differenza di versione tra Kubernetes kube-apiserver e quella sui tuoi nodi. kubelet

    • A partire dalla versione Kubernetes1.28, kubelet possono esserci fino a tre versioni minori precedenti a. kube-apiserver Consulta la sezione Kubernetes upstream version skew policy.

    • Se i kubelet nodi gestiti e Fargate sono in versione Kubernetes 1.25 o successiva, puoi aggiornare il cluster fino a tre versioni successive senza aggiornare la versione. kubelet Ad esempio, se kubelet è nella versione 1.25, è possibile aggiornare la versione del cluster Amazon EKS dalla 1.25 alla 1.26, 1.27 e 1.28 mentre kubelet rimane sulla versione 1.25.

  • Come best practice prima di iniziare un aggiornamento, assicurati che kubelet sui tuoi nodi sia la stessa versione di Kubernetes del piano di controllo.

  • Se il tuo cluster è configurato con una versione del plug-in Amazon VPC CNI per Kubernetes precedente a1.8.0, ti consigliamo di aggiornare il plug-in alla versione più recente prima di aggiornare il cluster. Per aggiornare il plug-in, consulta Assegna IPs ai pod con Amazon VPC CNI.

Fase 3: Aggiornamento del piano di controllo del cluster

Importante

Amazon EKS ha temporaneamente ripristinato una funzionalità che richiedeva l'utilizzo di un --force flag per aggiornare il cluster in caso di determinati problemi di analisi del cluster. Per ulteriori informazioni, consulta Ripristino temporaneo dell'applicazione degli approfondimenti sull'aggiornamento della versione del cluster su. GitHub

Amazon EKS aggiorna un cluster insight 24 ore dopo «l'ultimo aggiornamento». Puoi confrontare l'ora in cui hai risolto un problema con «l'ora dell'ultimo aggiornamento» di Cluster Insight.

Inoltre, possono essere necessari fino a 30 giorni prima che lo stato di Insight si aggiorni dopo aver risolto l'utilizzo di API obsolete. Upgrade Insights cerca sempre l'utilizzo di API obsolete nell'arco di 30 giorni consecutivi.

Puoi inviare la richiesta di aggiornamento della versione del tuo piano di controllo EKS utilizzando:

Aggiorna cluster - eksctl

Questa procedura richiede eksctl versione 0.210.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 Installation nella documentazione di eksctl.

Aggiorna la versione Kubernetes del tuo piano di controllo Amazon EKS. Sostituisci <cluster-name> con il nome del cluster. Sostituisci <version-number> con il numero di versione supportato da Amazon EKS a cui desideri aggiornare il cluster. Per l'elenco completo delle versioni supportate, consulta Comprendi il ciclo di vita delle versioni Kubernetes su 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.

Aggiorna cluster - AWS console

  1. Aprire la Console Amazon EKS.

  2. Scegli Aggiorna ora per un cluster che desideri aggiornare.

  3. Seleziona la versione a cui aggiornare il cluster e scegli Aggiorna.

  4. Il processo di aggiornamento può richiedere alcuni minuti per il completamento. Continua su Fase 4: Aggiornamento dei componenti del cluster.

Aggiorna cluster - AWS CLI

  1. Verifica che la AWS CLI sia installata e che tu abbia effettuato l'accesso. Per ulteriori informazioni, consulta Installazione o aggiornamento alla versione più recente della AWS CLI.

  2. Aggiorna il tuo cluster Amazon EKS con il seguente AWS comando 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 desideri aggiornare il cluster. Per l'elenco completo delle versioni supportate, consulta Comprendi il ciclo di vita delle versioni Kubernetes su 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": [] }
  3. 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 lo stesso <cluster-name> and<region-code>, usa <update-id> quello 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.

  4. Continua su Fase 4: Aggiornamento dei componenti del cluster.

Fase 4: Aggiornamento dei componenti del cluster

  1. 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 Aggiorna i nodi autogestiti per il tuo cluster, Aggiorna un gruppo di nodi gestiti per il tuo cluster e Aggiorna i nodi ibridi per il tuo cluster. Tutti i nuovi Pod lanciati su Fargate hanno kubelet una versione che corrisponde alla versione del cluster. I Fargate Pod esistenti non vengono modificati.

  2. (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.

    1. Apri la pagina delle versioni di Cluster Autoscaler in un browser web e trova la versione più recente di Cluster Autoscaler che corrisponde alla versione principale e secondaria di Kubernetes del tuo cluster. Ad esempio, se la versione di Kubernetes del tuo cluster è, trova l'ultima versione di Cluster Autoscaler che inizia con. 1.30 1.30 Registra il numero di versione semantica (1.30.n, ad esempio) per tale versione da utilizzare nella fase successiva.

    2. Impostare il tag image di Cluster Autoscaler sulla versione registrata nella fase precedente mediante il comando seguente. Se necessario, sostituire X.XX.X con 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
  3. (Solo cluster con nodi GPU) Se il cluster dispone di gruppi di nodi con supporto GPU (ad esempio,p3.2xlarge), è necessario aggiornare il plug-in del dispositivo NVIDIA per Kubernetes sul cluster. DaemonSet Sostituiscilo <vX.X.X> con la versione di s-device-pluginNVIDIA/K8 desiderata 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
  4. Aggiorna il plug-in Amazon VPC CNI 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, puoi utilizzare la AWS CLI eksctl o aggiornare i componenti aggiuntivi. Per ulteriori informazioni, consulta Aggiornamento di un componente aggiuntivo Amazon EKS.

  5. Se necessario, aggiorna la tua versione di kubectl. Utilizza la versione secondaria kubectl immediatamente precedente a quella del piano di controllo del cluster Amazon EKS.

Esegui il downgrade della versione Kubernetes per un cluster Amazon EKS

Non puoi 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.