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
Aggiorna il Kubernetes versione per il tuo EKS cluster Amazon
Per aggiornare il Kubernetes versione per il tuo cluster
-
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 versione1.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. -
-
Se il file Kubernetes la versione con cui originariamente hai distribuito il cluster era Kubernetes
1.25
o 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
-
Se il file Kubernetes la versione con cui originariamente hai distribuito il cluster era Kubernetes
1.18
o più tardi, salta questo passaggio.Potrebbe essere necessario rimuovere un termine non più disponibile dal CoreDNS manifesto.
-
Controlla se il tuo CoreDNS manifest ha una riga che contiene solo la parola
upstream
.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. -
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
-
-
Aggiorna il tuo cluster usando
eksctl
, 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 per1.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 utilizzanocontainerd
come runtime del container predefinito. Se stai passando alcontainerd
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 delcontainerd
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 versione1.31
. Devi prima aggiornare la versione1.29
del cluster alla versione1.30
, quindi aggiornare la versione1.30
del cluster alla versione1.31
. -
Verifica l'inclinazione della versione tra le Kubernetes
kube-apiserver
ekubelet
poi sui tuoi nodi.-
A partire da Kubernetes versione
1.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 versione1.25
o versione successiva, puoi aggiornare il cluster fino a tre versioni successive senza aggiornare lakubelet
versione. Ad esempio, se la versionekubelet
è attiva1.25
, puoi aggiornare la versione EKS del cluster Amazon da1.25
a1.26
1.27
, a e a1.28
mentre la versionekubelet
rimane attiva1.25
. -
Se il
kubelet
nodo gestito è attivo e i nodi Fargate sono attivi Kubernetes versione1.24
o precedente, possono essere presenti solo fino a due versioni minori precedenti allakube-apiserver
. In altre parole, sekubelet
è nella versione1.24
o precedente, è possibile aggiornare il cluster solo fino a due versioni successive. Ad esempio, se la versionekubelet
è1.21
attiva, puoi aggiornare la versione del EKS cluster Amazon da1.21
a1.22
e verso1.23
, ma non sarai in grado di aggiornare il cluster1.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 alla
1.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 versione2.4.7
o successiva prima di aggiornare la versione del cluster a1.25
. Per ulteriori informazioni, consulta le note di rilascio di Kubernetes1,25.
-
-
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. -
(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.
-
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. -
Impostare il tag image di Cluster Autoscaler sulla versione registrata nella fase precedente mediante il comando seguente. Se necessario, sostituire
con il valore in proprio possesso.1.31
.n
kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:v
1.31
.n
-
-
(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 KubernetesDaemonSet sul tuo cluster. Sostituiscilo
con la s-device-plugin versione NVIDIA/k8vX.X.X
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 -
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 aggiuntivi
eksctl
. Per ulteriori informazioni, consulta Aggiornamento di un EKS componente aggiuntivo Amazon.
-
-
Se necessario, aggiorna la tua versione di
kubectl
. È necessario utilizzare unakubectl
versione che rientri in una differenza di versione minore del piano di controllo del EKS cluster Amazon. Ad esempio, un1.30
kubectl
client lavora con Kubernetes1.29
1.30
e1.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.