Aggiornamento di un gruppo di nodi autogestiti esistente - 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à.

Aggiornamento di un gruppo di nodi autogestiti esistente

Questo argomento descrive come aggiornare uno stack di nodi AWS CloudFormation autogestito 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 ulteriori informazioni sull'uso di Gruppi di nodi gestiti, consultare Aggiornamento di un gruppo di nodi gestiti.

L'ultimo AWS CloudFormation modello di nodo Amazon EKS predefinito è configurato per avviare un'istanza con la nuova AMI nel cluster prima di rimuoverne una vecchia, una alla volta. 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 Migrazione a un nuovo gruppo di nodi.

Per aggiornare un gruppo di nodi esistente
  1. Determinare il provider DNS del cluster.

    kubectl get deployments -l k8s-app=kube-dns -n kube-system

    Di 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 di kubectl che stai utilizzando.

    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE coredns 1 1 1 1 31m
  2. Se l'implementazione corrente è in esecuzione per un numero di volte inferiore a 2 repliche, scalare la distribuzione a 2 repliche. Sostituire coredns con kube-dns se l'output del comando precedente ha avuto tale risultato.

    kubectl scale deployments/coredns --replicas=2 -n kube-system
  3. (Facoltativo) Se si sta utilizzando il Cluster Autoscaler di Kubernetes, ridurre l'implementazione fino a raggiungere zero (0) repliche per evitare azioni di dimensionamento conflittuali.

    kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
  4. Stabilire il tipo di istanza e il conteggio di istanze desiderato dell'attuale gruppo di nodi. Inserisci questi valori in un secondo momento, quando aggiorni il AWS CloudFormation modello per il gruppo.

    1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

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

    3. 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.

  5. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.

  6. Selezionare la pila del gruppo di nodi, quindi scegliere Aggiorna.

  7. Selezionare Replace current template (Sostituisci modello corrente) e scegliere Amazon S3 URL (URL Amazon S3).

  8. Per l'URL di Amazon S3, incolla il seguente URL nell'area di testo per assicurarti di utilizzare la versione più recente del modello di nodo AWS CloudFormation . Quindi scegliere Next (Successivo):

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
  9. Nella pagina Specify stack details (Specifica dettagli pila), compilare i parametri seguenti e scegliere Next (Successivo):

    • NodeAutoScalingGroupDesiredCapacity— Inserisci il numero di istanze desiderato che hai registrato in un passaggio precedente. In alternativa, inserire il nuovo numero desiderato di nodi come riferimento del dimensionamento quando viene aggiornata la pila.

    • NodeAutoScalingGroupMaxSize— Inserisci il numero massimo di nodi a cui il gruppo Auto Scaling del nodo può scalare orizzontalmente. 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.

    • NodeInstanceTipo: scegli il tipo di istanza registrato nel passaggio precedente. In alternativa, scegliere un tipo di istanza diverso per i nodi. Prima di scegliere un tipo di istanza diverso, rivedere Scelta di un tipo di istanza Amazon EC2. 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 viene assegnato il proprio indirizzo IP, è importante scegliere un tipo di istanza che supporti il numero massimo di Pods 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.large supporta un massimo di 30 indirizzi IP per il nodo worker e i Pods.

      Nota

      I tipi di istanze supportati per l'ultima versione del Amazon VPC CNI plugin for Kubernetes sono visualizzati in vpc_ip_resource_limit.go su GitHub. Potrebbe essere necessario aggiornare la versione Amazon VPC CNI plugin for Kubernetes per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta Utilizzo del componente aggiuntivo Amazon VPC CNI plugin for Kubernetes di Amazon EKS.

      Importante

      Alcuni tipi di istanza potrebbero non essere disponibili in tutti Regioni AWS.

    • NodeImageIDSSMParam — Il parametro Amazon EC2 Systems Manager dell'ID AMI a cui desideri eseguire l'aggiornamento. Il valore seguente utilizza l'AMI ottimizzata per Amazon EKS più recente per Kubernetes versione 1.30.

      /aws/service/eks/optimized-ami/1.30/amazon-linux-2/recommended/image_id

      È possibile sostituire 1.30 con una stessa versione Kubernetes supportata. In alternativa, potrebbe essere fino a una versione precedente alla versione di Kubernetes in esecuzione sul piano di controllo (control-plane). Si consiglia di mantenere i nodi alla stessa versione del piano di controllo. Puoi anche sostituirlo amazon-linux-2 con un altro tipo di AMI. Per ulteriori informazioni, consulta Recupero ID delle AMI Amazon Linux ottimizzate per Amazon EKS.

      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 lo stack AWS CloudFormation sta utilizzando questo valore, qualsiasi aggiornamento dello stack 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 un'AMI personalizzata, inserisci l'ID dell'AMI da utilizzare.

      Importante

      Questo valore sostituisce qualsiasi valore specificato per NodeImage IDSSMParam. Se desideri utilizzare il valore NodeImageIDSSMParam, assicurati che il valore di Id sia vuoto. NodeImage

    • DisabilitaIMDSv1: ogni nodo supporta Instance Metadata Service versione 1 (IMDSv1) e IMDSv2 per impostazione predefinita. Tuttavia, è possibile disabilitare IMDSv1. Seleziona true se non desideri che alcun nodo o Pods pianificato sul gruppo di nodi utilizzi IMDSv1. Per ulteriori informazioni su IMDS, consulta Configurazione del servizio di metadati dell'istanza. Se hai implementato i ruoli IAM per gli account di servizio, assegna le autorizzazioni necessarie direttamente a tutti Pods coloro che richiedono l'accesso ai servizi. AWS In questo modo, nessun Pods membro del cluster richiederà l'accesso a IMDS per altri motivi, come il recupero della corrente. Regione AWS Quindi, è anche possibile disabilitare l'accesso a IMDSv2 per i Pods che non utilizzano la rete host. Per ulteriori informazioni, consulta Limita l'accesso al profilo di istanza assegnato al nodo (worker).

  10. (Facoltativo) Nella pagina Options (Opzioni), contrassegna con dei tag le risorse della pila. Seleziona Successivo.

  11. 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.

  12. Se il provider DNS del cluster è kube-dns, dimensionare l'implementazione di kube-dns a 1 replica.

    kubectl scale deployments/kube-dns --replicas=1 -n kube-system
  13. (Facoltativo) Se si sta utilizzando il Cluster Autoscaler di Kubernetes, dimensionare l'implementazione al numero di repliche desiderato.

    kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
  14. (Facoltativo) Accertati di utilizzare la versione più recente del Amazon VPC CNI plugin for Kubernetes. Potrebbe essere necessario aggiornare la versione del Amazon VPC CNI plugin for Kubernetes per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta Utilizzo del componente aggiuntivo Amazon VPC CNI plugin for Kubernetes di Amazon EKS.