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

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

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 un nuovo Kubernetes la versione è disponibile in AmazonEKS, puoi aggiornare il tuo EKS cluster Amazon alla versione più recente.

Importante

Una volta aggiornato un cluster, non è possibile effettuare il downgrade a una versione precedente. Ti consigliamo di farlo prima di eseguire l'aggiornamento a una nuova Kubernetes versione, si esaminano le informazioni contenute Comprendi il Kubernetes ciclo di vita della versione attivo EKS e si esaminano anche nei passaggi di aggiornamento descritti in questo argomento.

Novità Kubernetes le versioni a volte introducono modifiche significative. Pertanto, ti consigliamo di testare il comportamento delle tue applicazioni rispetto a una nuova Kubernetes versione prima di aggiornare i cluster di produzione. È possibile farlo creando un flusso di lavoro di integrazione continua per testare il comportamento dell'applicazione prima di passare a una nuova Kubernetes versione.

Il processo di aggiornamento consiste nel EKS lancio da parte di Amazon di nuovi nodi API server con l'aggiornamento Kubernetes versione per sostituire quelle 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 è possibile metterlo in pausa o interromperlo. Se uno di questi controlli fallisce, Amazon EKS ripristina la distribuzione dell'infrastruttura e il cluster rimane attivo su quello precedente Kubernetes versione. Le applicazioni in esecuzione non sono interessate e il cluster non viene mai lasciato in uno stato non deterministico o irrecuperabile. Amazon esegue EKS regolarmente il backup di tutti i cluster gestiti ed esistono meccanismi per ripristinare i cluster, se necessario. Valutiamo e miglioriamo costantemente i nostri Kubernetes processi di gestione dell'infrastruttura.

Per aggiornare il cluster, Amazon EKS richiede fino a cinque indirizzi IP disponibili dalle sottoreti che hai specificato al momento della creazione del cluster. Amazon EKS crea nuove interfacce di rete elastiche per cluster (interfacce di rete) in tutte le sottoreti che hai specificato. 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 questa sottorete non esiste, se non ha abbastanza indirizzi IP disponibili o se non dispone di regole del gruppo di sicurezza per la comunicazione con il cluster, l'aggiornamento potrebbe non riuscire.

Nota

Per garantire che l'endpoint del API server per il tuo cluster sia sempre accessibile, Amazon EKS fornisce un'elevata disponibilità Kubernetes piano di controllo ed esegue aggiornamenti continui delle istanze del API server durante le operazioni di aggiornamento. Per tenere conto della modifica degli indirizzi IP delle istanze del API server che supportano Kubernetes APIendpoint server, è necessario assicurarsi che i client API server gestiscano le riconnessioni in modo efficace. Versioni recenti di e kubectl Kubernetes le librerie client ufficialmente supportate eseguono questo processo di riconnessione in modo trasparente.

Aggiorna il Kubernetes versione per il tuo EKS cluster Amazon

Per aggiornare il Kubernetes versione per il tuo cluster
  1. Confronta il Kubernetes versione del piano di controllo del cluster con Kubernetes versione dei tuoi nodi.

    • Ottieni il Kubernetes versione del piano di controllo del cluster.

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

      kubectl get nodes

    Prima di aggiornare il piano di controllo con uno nuovo Kubernetes versione, assicurati che Kubernetes la versione secondaria dei nodi gestiti e dei nodi Fargate nel cluster è la stessa della versione del piano di controllo. Ad esempio, se il piano di controllo è in esecuzione 1.30 e uno dei nodi è in esecuzione1.29, è necessario aggiornare i nodi alla versione 1.30 prima di aggiornare il piano di controllo alla versione 1.31. Prima di aggiornare il piano di controllo, si consiglia inoltre di aggiornare i nodi autogestiti alla stessa versione del piano di controllo. Per ulteriori informazioni, consulta Aggiorna un gruppo di nodi gestiti per il tuo cluster e Aggiorna i nodi autogestiti per il tuo cluster. Se avete nodi Fargate con una versione secondaria inferiore alla versione del piano di controllo, eliminate prima il Pod è rappresentato dal nodo. a aggiornare il piano di controllo (control-plane). Qualsiasi residuo Pods verranno aggiornati alla nuova versione dopo averli ridistribuiti.

  2. Se il file Kubernetes la versione con cui originariamente hai distribuito il cluster era Kubernetes 1.25o più tardi, salta questo passaggio.

    Per impostazione predefinita, Pod il controller di ammissione delle politiche di sicurezza è abilitato sui EKS cluster Amazon. Prima di aggiornare il cluster, assicurati che Pod le politiche di sicurezza sono in atto. al fine di evitare problemi. È possibile verificare la policy di default con il comando kubectl get psp eks.privileged.

    kubectl get psp eks.privileged

    Se ricevi il seguente errore, consulta Amazon EKS predefinito Pod politica di sicurezza prima di procedere.

    Error from server (NotFound): podsecuritypolicies.extensions "eks.privileged" not found
  3. Se il file Kubernetes la versione con cui originariamente hai distribuito il cluster era Kubernetes 1.18o più tardi, salta questo passaggio.

    Potrebbe essere necessario rimuovere un termine non più disponibile dal CoreDNS manifesto.

    1. Controlla se il tuo CoreDNS manifest ha una riga che contiene solo la parolaupstream.

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      Se non viene restituito alcun output, il manifesto non presenta alcun riga ed è possibile passare alla fase successiva. Se come risultato viene restituita la parola upstream è necessario rimuoverla.

    2. Modificare il file configmap, rimuovendo la riga vicino alla parte superiore del file contenente solo la parola upstream. Non apportare ulteriori modifiche al file. Dopo aver rimosso la riga, salvare le modifiche.

      kubectl edit configmap coredns -n kube-system -o yaml
  4. Aggiorna il tuo cluster usandoeksctl, il AWS Management Console, o il AWS CLI.

    Importante
    • Se stai eseguendo l'aggiornamento alla versione 1.23 e utilizzi EBS volumi Amazon nel tuo cluster, devi installare il EBS CSI driver Amazon nel cluster prima di aggiornare il cluster alla versione per 1.23 evitare interruzioni del carico di lavoro. Per ulteriori informazioni, consulta Kubernetes1.23 e Archiviare Kubernetes volumi con Amazon EBS.

    • Kubernetes 1.24 e versioni successive utilizzano containerd come runtime del container predefinito. Se stai passando al containerd runtime e lo hai già fatto Fluentd configurato per Container Insights, quindi è necessario migrare Fluentd in Fluent Bit prima di aggiornare il cluster. Il Fluentd i parser sono configurati per analizzare solo i messaggi di registro in JSON formato. Al contrariodockerd, il runtime del containerd contenitore contiene messaggi di registro che non sono in JSON formato. Se non esegui la migrazione a Fluent Bit, alcuni dei configurati Fluentd's i parser genereranno una quantità enorme di errori all'interno di Fluentd contenitore. Per ulteriori informazioni sulla migrazione, consulta Configurazione Fluent Bit come inviare log DaemonSet a Logs. CloudWatch

    • Poiché Amazon EKS utilizza un piano di controllo ad alta disponibilità, puoi aggiornare solo una versione secondaria alla volta. Per ulteriori informazioni su questo requisito, consulta Kubernetes Politica di supporto per versioni e versioni asimmetriche. Supponiamo che la versione corrente del cluster sia 1.29 e che desideri aggiornarlo alla versione 1.31. Devi prima aggiornare la versione 1.29 del cluster alla versione 1.30, quindi aggiornare la versione 1.30 del cluster alla versione 1.31.

    • Verifica l'inclinazione della versione tra le Kubernetes kube-apiservere kubelet poi sui tuoi nodi.

      • A partire da Kubernetes versione1.28, kubelet possono essere presenti fino a tre versioni minori precedenti akube-apiserver. Consulta la sezione Kubernetes upstream version skew policy.

      • Se il kubelet nodo gestito è attivo e i nodi Fargate sono attivi Kubernetes versione 1.25 o versione successiva, puoi aggiornare il cluster fino a tre versioni successive senza aggiornare la kubelet versione. Ad esempio, se la versione kubelet è attiva1.25, puoi aggiornare la versione EKS del cluster Amazon da 1.25 a 1.261.27, a e a 1.28 mentre la versione kubelet rimane attiva1.25.

      • Se il kubelet nodo gestito è attivo e i nodi Fargate sono attivi Kubernetes versione 1.24 o precedente, possono essere presenti solo fino a due versioni minori precedenti allakube-apiserver. In altre parole, se kubelet è nella versione 1.24 o precedente, è possibile aggiornare il cluster solo fino a due versioni successive. Ad esempio, se la versione kubelet è 1.21 attiva, puoi aggiornare la versione del EKS cluster Amazon da 1.21 a 1.22 e verso1.23, ma non sarai in grado di aggiornare il cluster 1.24 finché kubelet rimane attivo1.21.

    • Come best practice prima di iniziare un aggiornamento, assicurati che kubelet sui tuoi nodi sia lo stesso Kubernetes versione come piano di controllo.

    • Se il cluster è configurato con una versione di Amazon VPC CNI plugin for Kubernetes se è precedente alla1.8.0, ti consigliamo di aggiornare il plugin alla versione più recente prima di aggiornare il cluster. Per aggiornare il plug-in, consulta Assegna IPs a Pods con Amazon VPC CNI.

    • Se stai aggiornando il cluster alla versione 1.25 o successiva e disponi di AWS Load Balancer Controller distribuito nel cluster, quindi aggiorna il controller alla versione 2.4.7 o successiva prima di aggiornare la versione del cluster a1.25. Per ulteriori informazioni, consulta le note di rilascio di Kubernetes1,25.

    eksctl

    Questa procedura richiede eksctl versione 0.191.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 il Kubernetes versione del tuo piano EKS di controllo Amazon. Replace (Sostituisci) il mio cluster con il nome del tuo cluster. Replace (Sostituisci) 1.31 con il numero di versione EKS supportato da Amazon a cui desideri aggiornare il cluster. Per l'elenco completo delle versioni supportate, consulta Comprendi il Kubernetes ciclo di vita della versione attivo EKS.

    eksctl upgrade cluster --name my-cluster --version 1.31 --approve

    Il processo di aggiornamento può richiedere alcuni minuti per il completamento.

    AWS Management Console
    1. Apri la EKS console Amazon a https://console.aws.amazon.com/eks/home#/clusters.

    2. Scegli il nome del EKS cluster Amazon da aggiornare e scegli Update cluster version.

    3. Per Kubernetes versione, seleziona la versione a cui aggiornare il cluster e scegli Aggiorna.

    4. In Nome cluster, immettere il nome del cluster e scegliere Conferma.

      Il processo di aggiornamento può richiedere alcuni minuti per il completamento.

    AWS CLI
    1. Aggiorna il tuo EKS cluster Amazon con il seguente AWS CLI comando. Sostituisci il valori di esempio con il tuo. Replace (Sostituisci) 1.31 con il numero di versione EKS supportato da Amazon a cui desideri aggiornare il cluster. Per l'elenco completo delle versioni supportate, consulta Comprendi il Kubernetes ciclo di vita della versione attivo EKS.

      aws eks update-cluster-version --region region-code --name my-cluster --kubernetes-version 1.31

      Di seguito viene riportato un output di esempio:

      { "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.31" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] } }
    2. É possibile monitorare lo stato di aggiornamento del cluster attraverso il seguente comando. Utilizzare il nome del cluster e l'ID aggiornamento restituito dal comando precedente. Quando viene visualizzato lo stato Successful, l'aggiornamento è completo. Il processo di aggiornamento può richiedere alcuni minuti per il completamento.

      aws eks describe-update --region region-code --name my-cluster --update-id b5f0ba18-9a87-4450-b5a0-825e6e84496f

      Di seguito viene riportato un output di esempio:

      { "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "Successful", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.31" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] } }
  5. Una volta completato l'aggiornamento del cluster, aggiorna i nodi allo stesso modo Kubernetes versione secondaria del cluster aggiornato. Per ulteriori informazioni, consulta Aggiorna i nodi autogestiti per il tuo cluster e Aggiorna un gruppo di nodi gestiti per il tuo cluster. Qualsiasi nuovo Pods quelli che vengono lanciati su Fargate hanno una kubelet versione che corrisponde alla versione del cluster in uso. Fargate esistente Pods non sono cambiati.

  6. (Facoltativo) Se hai distribuito il Kubernetes Cluster Autoscaler sul cluster prima di aggiornare il cluster, aggiorna Cluster Autoscaler alla versione più recente che corrisponde a Kubernetes versione principale e secondaria a cui è stato effettuato 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 a quella del tuo cluster Kubernetes versione principale e secondaria. Ad esempio, se il tuo cluster è Kubernetes la versione è 1.31 trovare l'ultima versione di Cluster Autoscaler che inizia con. 1.31 Registra il numero di versione semantica (1.31.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 1.31.n con il valore in proprio possesso.

      kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:v1.31.n
  7. (Solo cluster con GPU nodi) Se il cluster dispone di gruppi di nodi con GPU supporto (ad esempio,p3.2xlarge), è necessario aggiornare il plug-in del dispositivo per NVIDIA Kubernetes DaemonSet sul tuo cluster. Sostituiscilo vX.X.X con la s-device-plugin versione NVIDIA/k8 desiderata prima di eseguire il seguente comando.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
  8. Aggiorna il Amazon VPC CNI plugin for Kubernetes, CoreDNSe kube-proxy componenti aggiuntivi. È preferibile aggiornare i componenti aggiuntivi alle versioni minime elencate nei Token dell'account di servizio.

    • Se utilizzi EKS componenti aggiuntivi Amazon, seleziona Clusters nella EKS console Amazon, quindi seleziona il nome del cluster che hai 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 AWS CLI o per aggiornare i componenti aggiuntivieksctl. Per ulteriori informazioni, consulta Aggiornamento di un EKS componente aggiuntivo Amazon.

  9. Se necessario, aggiorna la tua versione di kubectl. È necessario utilizzare una kubectl versione che rientri in una differenza di versione minore del piano di controllo del EKS cluster Amazon. Ad esempio, un 1.30 kubectl client lavora con Kubernetes 1.291.30e 1.31 cluster. Puoi controllare la versione attualmente installata con il seguente comando.

    kubectl version --client

Effettua il downgrade di Kubernetes versione per un EKS cluster Amazon

Non è possibile effettuare il downgrade di Kubernetes di un EKS cluster Amazon. Invece, crea un nuovo cluster su una EKS versione precedente di Amazon e migra i carichi di lavoro.