Creazione di un gruppo di nodi gestiti - Amazon EKS

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

Creazione di un gruppo di nodi gestiti

In questo argomento viene descritto come avviare gruppi di nodi gestiti Amazon EKS per nodi che si registrano con il cluster Amazon EKS. Dopo che i nodi vengono aggiunti al cluster, puoi implementare le applicazioni Kubernetes per gli stessi.

Se è la prima volta che avvii un gruppo di nodi gestiti Amazon EKS, consigliamo invece di seguire una delle nostre guide Guida introduttiva ad Amazon EKS. Le guide forniscono procedure dettagliate per la creazione di un cluster Amazon EKS con nodi.

Importante
Prerequisiti

È possibile creare un gruppo di nodi gestiti con eksctl o il AWS Management Console.

eksctl
Creazione di un gruppo di nodi gestito con eksctl

Questa procedura richiede eksctl versione 0.175.0 o versioni successive. Puoi verificare la versione con il comando seguente:

eksctl version

Per istruzioni sull'installazione o sull'aggiornamento di eksctl, consulta la sezione Installation nella documentazione di eksctl.

  1. (Facoltativo) Se la policy IAM gestita AmazonEKS_CNI_Policy è collegata al Ruolo IAM del nodo Amazon EKS, consigliamo, invece, di assegnarla a un ruolo IAM associato all'account di servizio Kubernetes aws-node. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA).

  2. Creare un gruppo di nodi gestiti con o senza utilizzare un modello di avvio personalizzato. La specifica manuale di un modello di avvio consente una maggiore personalizzazione di un gruppo di nodi. Ad esempio, può consentire l'implementazione di un'AMI personalizzata o la presenza di argomenti sullo script boostrap.sh in un'AMI ottimizzata per Amazon EKS. Per avere un elenco completo di tutte le opzioni e le impostazioni predefinite disponibili, inserisci il comando seguente.

    eksctl create nodegroup --help

    Nel comando seguente, sostituisci my-cluster con il nome del tuo cluster e sostituisci my-mng con il nome del gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura.

    Importante

    Se non utilizzi un modello di avvio personalizzato durante la prima creazione di un gruppo di nodi gestiti, non utilizzarne uno per il gruppo di nodi in un secondo momento. Se non hai specificato un modello di avvio personalizzato, il sistema genera automaticamente un modello di avvio che non è consigliabile modificare manualmente. La modifica manuale di questo modello di avvio generato in automatico potrebbe causare errori.

    Senza uh modello di avvio

    eksctl crea un modello di avvio Amazon EC2 predefinito nell'account e implementa il gruppo di nodi utilizzando un modello di avvio creato in base alle opzioni specificate. Prima di specificare un valore per --node-type, consulta Scelta di un tipo di istanza Amazon EC2.

    Sostituisci ami-family con una parola chiave consentita. Per ulteriori informazioni, consulta Setting the node AMI Family (Impostazione della famiglia AMI dei nodi) nella documentazione di eksctl. Sostituisci my-key con il nome della coppia di chiavi Amazon EC2 o della chiave pubblica. Questa chiave viene utilizzata per eseguire il SSH nei nodi dopo il loro avvio.

    Nota

    Per Windows, questo comando non abilita SSH. Associa, invece, la coppia di chiavi Amazon EC2 all'istanza e ti consente di eseguire il protocollo RDP nell'istanza.

    Se non disponi di una coppia di chiavi Amazon EC2, puoi crearla nella AWS Management Console. Per informazioni su Linux, consulta Coppie di chiavi Amazon EC2 e istanze Linux nella Guida per l'utente di Amazon EC2 per istanze Linux. Per informazioni su Windows, consulta Coppie di chiavi Amazon EC2 e istanze Windows nella Guida per l'utente di Amazon EC2 per istanze Windows.

    Consigliamo di bloccare l'accesso dei Pod a IMDS se si verificano le seguenti condizioni:

    • Prevedi di assegnare ruoli IAM a tutti gli account di servizio Kubernetes in modo che i Pods dispongano solo delle autorizzazioni minime necessarie.

    • No, Pods nel cluster è richiesto l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della corrente. Regione AWS

    Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker.

    Se desideri bloccare l'accesso del Pod a IMDS, aggiungi l'opzione --disable-pod-imds al seguente comando.

    eksctl create nodegroup \ --cluster my-cluster \ --region region-code \ --name my-mng \ --node-ami-family ami-family \ --node-type m5.large \ --nodes 3 \ --nodes-min 2 \ --nodes-max 4 \ --ssh-access \ --ssh-public-key my-key

    Le istanze possono assegnare facoltativamente un numero significativamente superiore di indirizzi IP ai Pods, assegna gli indirizzi IP ai Pods da un blocco CIDR diverso da quello dell'istanza ed essere distribuite in un cluster senza accesso a Internet. Per ulteriori informazioni, consulta Aumentare la quantità di indirizzi IP disponibili per i nodi Amazon EC2, Rete personalizzata per i pod, e Requisiti dei cluster privati per ulteriori opzioni da aggiungere al comando precedente.

    In base al tipo di istanza, i gruppi di nodi gestiti calcolano e applicano un singolo valore per il numero massimo di Pods che possono essere eseguiti su ogni nodo del gruppo. Se crei un gruppo di nodi con tipi di istanza diversi, il valore più piccolo calcolato in tutti i tipi di istanza viene applicato come numero massimo di Pods che possono essere eseguiti su ogni tipo di istanza nel gruppo di nodi. I gruppi di nodi gestiti calcolano il valore utilizzando lo script a cui si fa riferimento in Per ogni tipo di istanza Amazon EC2, Amazon EKS consiglia un numero massimo di Pods.

    Con un modello di avvio

    Il modello di avvio deve già esistere e deve soddisfare i requisiti specificati in Informazioni di base sulla configurazione del modello di avvio.

    Consigliamo di bloccare l'accesso dei Pod a IMDS se si verificano le seguenti condizioni:

    • Prevedi di assegnare ruoli IAM a tutti gli account di servizio Kubernetes in modo che i Pods dispongano solo delle autorizzazioni minime necessarie.

    • No, Pods nel cluster è richiesto l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della corrente. Regione AWS

    Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker.

    Se desideri bloccare l'accesso del Pod a IMDS, specifica le impostazioni necessarie nel modello di avvio.

    1. Copia i seguenti contenuti sul dispositivo. Sostituisci i example values, quindi esegui il comando modificato per creare il file eks-nodegroup.yaml. Diverse impostazioni specificate durante l'implementazione senza un modello di avvio vengono spostate nel modello di avvio. Se non si specifica un version, viene utilizzata la versione di default del modello.

      cat >eks-nodegroup.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code managedNodeGroups: - name: my-mng launchTemplate: id: lt-id version: "1" EOF

      Per un elenco completo delle impostazioni del file di configurazione eksctl, consulta Schema dei file config nella documentazione di eksctl. Facoltativamente, le istanze possono assegnare un numero significativamente più elevato di indirizzi IP ai Pods, assegnare indirizzi IP ai Pods da un blocco CIDR diverso da quello dell'istanza, utilizzare il runtime containerd ed essere implementate in un cluster senza accesso a Internet in uscita. Per ulteriori informazioni, consulta Aumentare la quantità di indirizzi IP disponibili per i nodi Amazon EC2, Rete personalizzata per i pod, Prova la migrazione da Docker a containerd, e Requisiti dei cluster privati per ulteriori opzioni da aggiungere al file di configurazione.

      Se non è stato specificato un ID AMI nel modello di avvio, i gruppi di nodi gestiti calcolano e applicano un singolo valore per il numero massimo di Pods che possono essere eseguiti su ciascun nodo del gruppo di nodi, in base al tipo di istanza. Se crei un gruppo di nodi con tipi di istanza diversi, il valore più piccolo calcolato in tutti i tipi di istanza viene applicato come numero massimo di Pods che possono essere eseguiti su ogni tipo di istanza nel gruppo di nodi. I gruppi di nodi gestiti calcolano il valore utilizzando lo script a cui si fa riferimento in Per ogni tipo di istanza Amazon EC2, Amazon EKS consiglia un numero massimo di Pods.

      Se nel modello di avvio è stato specificato un ID AMI, specifica il numero massimo di Pods che possono essere eseguiti su ciascun nodo del gruppo se utilizzi reti personalizzate o se desideri aumentare il numero di indirizzi IP assegnati all'istanza. Per ulteriori informazioni, consulta Per ogni tipo di istanza Amazon EC2, Amazon EKS consiglia un numero massimo di Pods.

    2. Implementare il gruppo di nodi mediante il comando seguente.

      eksctl create nodegroup --config-file eks-nodegroup.yaml
AWS Management Console
Per creare un gruppo di nodi gestito utilizzando AWS Management Console
  1. Attendi che lo stato del cluster risulti ACTIVE. Non è possibile creare un gruppo di nodi gestiti per un cluster non ancora ACTIVE.

  2. Apri la console Amazon EKS all'indirizzo https://console.aws.amazon.com/eks/home#/clusters.

  3. Scegli il nome del cluster in cui desideri creare un gruppo di nodi gestiti.

  4. Seleziona la scheda Compute (Calcolo).

  5. Scegli Add node group (Aggiungi gruppo di nodi).

  6. Nella pagina Configura il gruppo di nodi, compila i parametri di conseguenza e quindi scegli Successivo.

    • Nome: inserisci un nome univoco per il gruppo di nodi gestiti. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura.

    • Ruolo IAM del nodo: scegli il ruolo dell'istanza del nodo da utilizzare con il gruppo di nodi. Per ulteriori informazioni, consulta Ruolo IAM del nodo Amazon EKS.

      Importante
      • Non è possibile utilizzare lo stesso ruolo utilizzato per creare i cluster.

      • Consigliamo di utilizzare un ruolo che non è attualmente in uso da alcun gruppo di nodi autogestiti. In caso contrario, prevedi l'utilizzo di un nuovo gruppo di nodi autogestiti. Per ulteriori informazioni, consulta Eliminazione di un gruppo di nodi gestiti.

    • Usa modello di avvio (Facoltativo): scegli se desideri utilizzare un modello di avvio esistente. Seleziona un Launch Template Name (Nome del modello di avvio). Quindi, seleziona una Launch template version (Versione del modello di avvio). Se non selezioni una versione, Amazon EKS utilizza la versione predefinita del modello. I modelli di avvio permettono una maggiore personalizzazione del gruppo di nodi, ad esempio consentono di implementare un'AMI personalizzata, assegnare un numero significativamente più elevato di indirizzi IP ai Pods, assegnare indirizzi IP ai Pods da un blocco CIDR diverso da quello dell'istanza, abilitare il runtime containerd per le istanze e implementando i nodi in un cluster senza accesso a Internet in uscita. Per ulteriori informazioni, consulta Aumentare la quantità di indirizzi IP disponibili per i nodi Amazon EC2, Rete personalizzata per i pod, Prova la migrazione da Docker a containerd e Requisiti dei cluster privati.

      Il modello di avvio deve soddisfare i requisiti in Personalizzazione di nodi gestiti con un modello di avvio. Se non usi il tuo modello di avvio, l'API di Amazon EKS crea un modello di avvio Amazon EC2 predefinito nel tuo account e implementa il gruppo di nodi utilizzando il modello di avvio predefinito.

      Se implementi i ruoli IAM per gli account di servizio, assegna le autorizzazioni necessarie direttamente a tutti i Pod che richiedono l'accesso ai servizi AWS . Se nessun Pods nel cluster richiede l'accesso a IMDS per altri motivi, ad esempio il recupero della Regione AWS corrente, puoi disabilitare l'accesso a IMDS per i Pods che non utilizzano la rete host in un modello di avvio. Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker.

    • Etichette Kubernetes (Facoltativo): puoi scegliere di applicare etichette Kubernetes ai nodi del gruppo di nodi gestiti.

    • Taint Kubernetes (Facoltativo): puoi scegliere di applicare i taint Kubernetes ai nodi del gruppo di nodi gestiti. Nel menu Effetto sono disponibili le opzioni NoSchedule, NoExecute e PreferNoSchedule. Per ulteriori informazioni, consulta Taint dei nodi nei gruppi di nodi gestiti.

    • Tag: (facoltativo) è possibile scegliere di aggiungere tag al gruppo di nodi gestiti Amazon EKS. Questi tag non si propagano ad altre risorse del gruppo di nodi, ad esempio gruppi Auto Scaling o istanze. Per ulteriori informazioni, consulta Assegnazione di tag alle risorse Amazon EKS.

  7. Nella pagina Imposta configurazione di calcolo e dimensionamento, compila i parametri di conseguenza e quindi scegli Successivo.

    • Tipo di AMI: seleziona un tipo di AMI. Se stai implementando istanze Arm, accertati di valutare le considerazioni in AMI Amazon Linux Arm ottimizzate per Amazon EKS prima dell'implementazione.

      Se nella pagina precedente hai specificato un modello di avvio e un'AMI nel modello di avvio, non puoi selezionare un valore. Viene visualizzato il valore del modello. L'AMI specificata nel modello deve soddisfare i requisiti indicati in Specifica di un'AMI.

    • Tipo di capacità: seleziona un tipo di capacità. Per ulteriori informazioni sulla scelta di un tipo di capacità, consulta Tipi di capacità del gruppo di nodi gestiti. Non è possibile combinare diversi tipi di capacità all'interno dello stesso gruppo di nodi. Se desideri utilizzare entrambi i tipi di capacità, crea gruppi di nodi separati, ognuno con i propri tipi di capacità e istanza.

    • Tipi di istanza: per impostazione predefinita, viene specificato uno o più tipi di istanza. Per rimuovere un tipo di istanza predefinito, seleziona il X sul lato destro del tipo di istanza. Scegli il tipo di istanza da utilizzare nel gruppo di nodi gestiti. Per ulteriori informazioni, consulta Scelta di un tipo di istanza Amazon EC2.

      Nella console viene visualizzato un insieme di tipi di istanza di uso comune. Se devi creare un gruppo di nodi gestiti con un tipo di istanza non visualizzato, utilizza eksctl, la AWS CLI, AWS CloudFormation o un SDK per creare il gruppo di nodi. Se nella pagina precedente è stato specificato un modello di avvio, non è possibile selezionare un valore perché il tipo di istanza deve essere specificato nel modello di avvio. Viene visualizzato il valore del modello di avvio. Se è stato selezionato Spot (Spot) per Capacity type (Tipo di capacità), al fine di migliorare la disponibilità è consigliabile specificare più tipi di istanza.

    • Dimensioni disco: inserisci le dimensioni del disco (in GiB) da utilizzare per il volume root del nodo.

      Se nella pagina precedente hai specificato un modello di avvio, non puoi selezionare un valore perché deve essere specificato nel modello di avvio.

    • Dimensione desiderata: specifica il numero corrente di nodi che il gruppo di nodi gestiti deve mantenere all'avvio.

      Nota

      Amazon EKS non dimensiona in automatico il gruppo di nodi. Tuttavia, è possibile configurare il Cluster Autoscaler di Kubernetes per eseguire questa operazione.

    • Dimensione minima: specifica il numero minimo di nodi a cui il gruppo di nodi gestiti può essere ridotto.

    • Dimensione massima: specifica il numero massimo di nodi a cui il gruppo di nodi gestiti può essere aumentato.

    • Configurazione dell'aggiornamento dei gruppi di nodi: (facoltativo) puoi selezionare il numero o la percentuale di nodi da aggiornare in parallelo. Questi nodi non saranno disponibili durante l'aggiornamento. Per Numero massimo non disponibile, seleziona una delle seguenti opzioni e specifica un Valore:

      • Numero: seleziona e specifica il numero di nodi nel gruppo nodi che possono essere aggiornati in parallelo.

      • Percentuale: seleziona e specifica la percentuale di nodi nel gruppo di nodi che possono essere aggiornati in parallelo. Questa funzione è utile se disponi di un numero elevato di nodi nel gruppo di nodi.

  8. Nella pagina Specifica reti, compila i parametri opportunamente, quindi scegli Successivo.

    • Sottoreti: sceglii le sottoreti in cui avviare i nodi gestiti.

      Importante

      Se esegui un'applicazione stateful in più zone di disponibilità supportate dai volumi Amazon EBS e che utilizza Scalabilità automatica di Kubernetes, devi configurare più gruppi di nodi, ognuno dei quali definito per una singola zona di disponibilità. Inoltre, è necessario abilitare la funzionalità --balance-similar-node-groups.

      Importante
      • Se si sceglie una sottorete pubblica e nel cluster è abilitato solo l'endpoint del server API pubblico, è necessario che la sottorete disponga di MapPublicIPOnLaunch impostato su true per consentire alle istanze di unirsi correttamente a un cluster. Se la sottorete è stata creata utilizzando eksctl o i modelli AWS CloudFormation forniti da Amazon EKS in data 26 marzo 2020 successiva, questa impostazione è già impostata su true. Se le sottoreti sono state create con eksctl o i AWS CloudFormation modelli prima del 26 marzo 2020, è necessario modificare l'impostazione manualmente. Per ulteriori informazioni, consulta Modifica dell'attributo di assegnazione degli indirizzi IPv4 pubblici per la sottorete.

      • Se utilizzi un modello di avvio e specifichi più interfacce di rete, Amazon EC2 non assegnerà automaticamente un indirizzo IPv4 pubblico, anche se MapPublicIpOnLaunch è impostato su true. Affinché i nodi possano unirsi al cluster in questo scenario, è necessario abilitare l'endpoint del server API privato del cluster, oppure avviare i nodi in una sottorete privata con accesso Internet in uscita fornito attraverso un metodo alternativo, ad esempio un gateway NAT. Per ulteriori informazioni, consulta Assegnazione degli indirizzi IP a istanze Amazon EC2 nella Guida per l'utente di Amazon EC2 per le istanze Linux.

    • Configurazione dell'accesso SSH ai nodi (facoltativo). L'abilitazione di SSH consente di connettersi alle istanze e raccogliere informazioni diagnostiche in caso di problemi. Consigliamo vivamente di abilitare l'accesso remoto quando crei un gruppo di nodi. Non è possibile abilitare l'accesso remoto dopo la creazione del gruppo di nodi.

      Se scegli di utilizzare un modello di avvio, questa opzione non viene visualizzata. Per abilitare l'accesso remoto ai nodi, specifica una coppia di chiavi nel modello di avvio e assicurati che la porta appropriata sia aperta ai nodi nei gruppi di sicurezza specificati nel modello di avvio. Per ulteriori informazioni, consulta Utilizzo di gruppi di sicurezza personalizzati.

      Nota

      Per Windows, questo comando non abilita SSH. Associa, invece, la coppia di chiavi Amazon EC2 all'istanza e ti consente di eseguire il protocollo RDP nell'istanza.

    • Per Coppia di chiavi SSH (facoltativo), scegli una chiave SSH Amazon EC2 da utilizzare. Per informazioni su Linux, consulta Coppie di chiavi Amazon EC2 e istanze Linuxnella Guida per l'utente di Amazon EC2 per istanze Linux. Per informazioni su Windows, consulta Coppie di chiavi Amazon EC2 e istanze Windowsnella Guida per l'utente di Amazon EC2 per istanze Windows. Se scegli di utilizzare un modello di avvio, non puoi selezionarne una. Quando viene fornita una chiave SSH di Amazon EC2 per i gruppi di nodi che utilizzano AMI Bottlerocket, viene attivato anche il container amministratore. Per ulteriori informazioni, consulta Container amministratore su GitHub.

    • Per Autorizzazione di accesso remoto SSH da, se desideri limitare l'accesso a istanze specifiche, seleziona i gruppi di sicurezza associati a tali istanze. Se non si selezionano gruppi di sicurezza specifici, l'accesso SSH è consentito da qualsiasi indirizzo di Internet (0.0.0.0/0).

  9. Nella pagina Rivedi e crea, controlla la configurazione del gruppo di nodi gestiti e scegli Crea.

    Se i nodi di lavoro non riescono a unirsi al cluster, consulta Impossibile aggiungere i nodi al cluster nella Guida alla risoluzione dei problemi.

  10. Guarda lo stato dei nodi e attendi che raggiungano lo stato Ready.

    kubectl get nodes --watch
  11. (Solo nodi GPU) Se hai scelto un tipo di istanza GPU e l'AMI accelerata ottimizzata per Amazon EKS, devi applicare il plug-in del dispositivo NVIDIA per Kubernetes come DaemonSet sul cluster con il comando seguente. vX.X.XSostituiscila con la versione di Nvidia/K8 s-device-plugin desiderata prima di eseguire il seguente comando.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/nvidia-device-plugin.yml

Ora che disponi di un cluster Amazon EKS funzionante con nodi, puoi avviare l'installazione dei componenti aggiuntivi di Kubernetes e l'implementazione di applicazioni sul cluster. I seguenti argomenti della documentazione consentono di estendere la funzionalità del cluster.

  • Il principale IAM in grado di creare il cluster è l'unico principale che può effettuare chiamate al server API Kubernetes tramite kubectl o la AWS Management Console. Se si desidera che altri principali IAM abbiano accesso al cluster, è necessario aggiungerli. Per ulteriori informazioni, consulta Concedi l'accesso alle Kubernetes API e Autorizzazioni richieste.

  • Consigliamo di bloccare l'accesso dei Pod a IMDS se si verificano le seguenti condizioni:

    • Prevedi di assegnare ruoli IAM a tutti gli account di servizio Kubernetes in modo che i Pods dispongano solo delle autorizzazioni minime necessarie.

    • No, Pods nel cluster è richiesto l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della corrente. Regione AWS

    Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker.

  • Scalabilità automatica: configurare il Cluster Autoscaler di Kubernetes per regolare automaticamente il numero di nodi nei gruppi di nodi.

  • Implementa un'applicazione di esempio sul cluster.

  • Gestione dei cluster: informazioni su come utilizzare strumenti importanti per la gestione del cluster.