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 di una pila di nodi AWS CloudFormation
Questo argomento descrive come aggiornare una pila del nodo autogestito AWS CloudFormation esistente con una nuova AMI. È possibile utilizzare questa procedura per aggiornare i nodi a una nuova versione di Kubernetes in seguito all'aggiornamento di un cluster. In caso contrario, è possibile eseguire l'aggiornamento all'AMI ottimizzata per Amazon EKS più recente per una versione Kubernetes esistente.
Importante
In questo argomento vengono descritti gli aggiornamenti dei nodi per i gruppi di nodi autogestiti. Per informazioni sull’utilizzo di Simplify node lifecycle con gruppi di nodi gestiti, consulta Aggiornamento del gruppo di nodi gestito per il cluster.
Prima della singola rimozione di ogni modello precedente, il modello AWS CloudFormation di nodo Amazon EKS di default più recente è configurato per avviare un’istanza con la nuova AMI nel cluster. Questa configurazione garantisce sempre il conteggio desiderato del gruppo Auto Scaling delle istanze attive nel cluster durante l’aggiornamento in sequenza.
Nota
Questo metodo non è supportato per i gruppi di nodi creati con eksctl. Se è stato creato il cluster o il gruppo di nodi con eksctl, consultare Esegui la migrazione delle applicazioni a un nuovo gruppo di nodi.
-
Determinare il provider DNS del cluster.
kubectl get deployments -l k8s-app=kube-dns -n kube-systemDi seguito viene riportato un output di esempio: Questo cluster utilizza CoreDNS per la risoluzione DNS, ma il cluster può invece restituire
kube-dns. L’output potrebbe avere un aspetto diverso a seconda della versione dikubectlche stai utilizzando.NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE coredns 1 1 1 1 31m -
Se l'implementazione corrente è in esecuzione per un numero di volte inferiore a 2 repliche, scalare la distribuzione a 2 repliche. Sostituisci
corednsconkube-dnsse l’output del comando precedente ha avuto tale risultato.kubectl scale deployments/coredns --replicas=2 -n kube-system -
(Facoltativo) Se si sta utilizzando il Cluster Autoscaler
Kubernetes, dimensiona l’implementazione fino a zero (0) repliche per evitare azioni di dimensionamento conflittuali. kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system -
Stabilire il tipo di istanza e il conteggio di istanze desiderato dell'attuale gruppo di nodi. È quindi possibile immettere questi valori in un secondo tempo quando si aggiorna il modello AWS CloudFormation per il gruppo.
-
Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Nel pannello di navigazione a sinistra, scegli Launch Configurations (Configurazioni di avvio) e prendi nota del tipo di istanza per la configurazione di avvio del nodo esistente.
-
Nel pannello di navigazione a sinistra, scegli Auto Scaling Groups (Gruppi Auto Scaling) e prendi nota del conteggio delle istanze Desired (Desiderato) per il gruppo Auto Scaling del nodo.
-
-
Apri la console AWS CloudFormation
. -
Selezionare la pila del gruppo di nodi, quindi scegliere Aggiorna.
-
Selezionare Replace current template (Sostituisci modello corrente) e scegliere Amazon S3 URL (URL Amazon S3).
-
Per URL Amazon S3, incolla il seguente URL nell’area di testo per assicurarsi di utilizzare la versione più recente del modello AWS CloudFormation del nodo. Quindi scegliere Next (Successivo):
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml -
Nella pagina Specify stack details (Specifica dettagli pila), compilare i parametri seguenti e scegliere Next (Successivo):
-
NodeAutoScalingGroupDesiredCapacity: immettere il conteggio delle istanze desiderato registrato in un passaggio precedente. In alternativa, inserire il nuovo numero desiderato di nodi come riferimento del dimensionamento quando viene aggiornata la pila.
-
NodeAutoScalingGroupMaxSize: immettere il numero massimo di nodi a cui il gruppo Auto Scaling di nodi è in grado di dimensionarsi. Questo valore deve essere almeno un nodo in più rispetto alla capacità desiderata. Ciò consente di eseguire un aggiornamento in sequenza dei nodi senza ridurre il numero di nodi durante l'aggiornamento.
-
NodeInstanceType: scegliere il tipo di istanza registrato in un passaggio precedente. In alternativa, scegliere un tipo di istanza diverso per i nodi. Prima di scegliere un tipo di istanza diverso, esamina Choose an optimal Amazon EC2 node instance type. Ogni tipo di istanza Amazon EC2 supporta un numero massimo di interfacce di rete elastiche (interfaccia di rete) e ogni interfaccia di rete supporta un numero massimo di indirizzi IP. Poiché a ogni nodo worker e pod è assegnato il proprio indirizzo IP, è importante scegliere un tipo di istanza che supporti il numero massimo di pod che si desidera eseguire su ciascun nodo Amazon EC2. Per un elenco del numero di interfacce di rete e di indirizzi IP supportati dai tipi di istanza, consulta Indirizzi IP per interfaccia di rete e per tipo di istanza. Ad esempio, il tipo di istanza
m5.largesupporta un massimo di 30 indirizzi IP per il nodo (worker) e per i pod.Nota
I tipi di istanza supportati per la versione più recente del plug-in CNI di Amazon VPC per Kubernetes
sono mostrati in vpc_ip_resource_limit.go su GitHub. Potrebbe essere necessario aggiornare la versione del plugin CNI di Amazon VPC per Kubernetes per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta Assegna IP ai pod con CNI di Amazon VPC. Importante
Alcuni tipi di istanza potrebbero non essere disponibili in tutte le regioni AWS.
-
NodeImageIdSSMParam: – il parametro Amazon EC2 Systems Manager dell'ID AMI da usare per l'aggiornamento. Il valore seguente utilizza l’AMI ottimizzata per Amazon EKS più recente per Kubernetes versione
1.33./aws/service/eks/optimized-ami/1.33/amazon-linux-2/recommended/image_idÈ possibile sostituire
1.33con una stessa versione della piattaforma. In alternativa, può essere fino a una versione precedente alla versione di Kubernetes in esecuzione sul piano di controllo. Si consiglia di mantenere i nodi alla stessa versione del piano di controllo. È anche possibile sostituireamazon-linux-2con un tipo di AMI diverso. Per ulteriori informazioni, consulta Recupero degli ID di AMI Amazon Linux consigliate.Nota
L'utilizzo del parametro Amazon EC2 Systems Manager consente di aggiornare i nodi in futuro senza dover cercare e specificare un ID AMI. Se la pila di AWS CloudFormation sta utilizzando questo valore, qualsiasi aggiornamento della pila avvia sempre l’AMI ottimizzata per Amazon EKS consigliata più recente per la versione Kubernetes specificata. Questo è il caso anche se non si modificano valori nel modello.
-
NodeImageId: per utilizzare l'AMI personalizzata, immettere l'ID dell'AMI da usare.
Importante
Questo valore sostituisce qualsiasi valore specificato per NodeImageIdSSMParam. Se si desidera utilizzare il valore NodeImageIdSSMParam, assicurarsi che il valore per NodeImageId sia vuoto.
-
DisabilitaIMDSv1: ogni nodo supporta Instance Metadata Service versione 1 (IMDSv1) e IMDSv2 per impostazione predefinita. Tuttavia, è possibile disabilitare IMDSv1. Seleziona vero se non si desidera che nessun nodo o pod pianificato sul gruppo di nodi utilizzi IMDSv1. Per ulteriori informazioni su IMDS, consulta Configurazione del servizio di metadati dell'istanza. Se sono stati implementati ruoli IAM per gli account di servizio, assegnare le autorizzazioni necessarie direttamente a tutti i pod che richiedono l’accesso ai servizi AWS. In questo modo, nessun pod nel cluster richiede l’accesso a IMDS per altri motivi, ad esempio il recupero della regione AWS corrente. Quindi, è anche possibile disabilitare l’accesso a IMDSv2 per i pod che non utilizzano la rete host. Per ulteriori informazioni, consulta Limita l'accesso al profilo di istanza assegnato al nodo (worker)
.
-
-
(Facoltativo) Nella pagina Options (Opzioni), contrassegna con dei tag le risorse della pila. Scegli Next (Successivo).
-
Nella pagina Verifica, esaminare le informazioni, confermare che la pila è in grado di creare risorse IAM, quindi scegliere Aggiorna pila.
Nota
L'aggiornamento di ogni nodo nel cluster richiede diversi minuti. Attendi il completamento dell'aggiornamento di tutti i nodi prima di eseguire la procedura successiva.
-
Se il provider DNS del cluster è
kube-dns, riduci orizzontalmente l’implementazione dikube-dnsa una replica.kubectl scale deployments/kube-dns --replicas=1 -n kube-system -
(Facoltativo) Se si sta utilizzando il Cluster Autoscaler
Kubernetes, dimensionare l'implementazione al numero di repliche desiderato. kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system -
(Facoltativo) Verifica che si sta utilizzando la versione più recente del plugin CNI di Amazon VPC per Kubernetes
. Potrebbe essere necessario aggiornare la versione del plugin CNI di Amazon VPC per Kubernetes per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta Assegna IP ai pod con CNI di Amazon VPC.