Avvio di nodi Amazon Linux autogestiti - 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à.

Avvio di nodi Amazon Linux autogestiti

In questo argomento viene descritto come avviare gruppi con scalabilità automatica di nodi Linux che si registrano con il cluster Amazon EKS. Dopo che i nodi vengono aggiunti al cluster, puoi implementare le applicazioni Kubernetes per gli stessi. Puoi anche avviare nodi Amazon Linux autogestiti con eksctl o. AWS Management Console Se devi avviare nodi su AWS Outposts, consultaAvvio di nodi Amazon Linux autogestiti su un Outpost.

Prerequisiti
  • Un cluster Amazon EKS esistente. Per implementarne uno, consulta Creazione di un cluster Amazon EKS. Se hai delle sottoreti nel luogo in Regione AWS cui hai AWS Outposts AWS Wavelength, o le AWS Local Zones sono abilitate, tali sottoreti non devono essere state passate al momento della creazione del cluster.

  • Un ruolo IAM esistente per i nodi da utilizzare. Per crearne uno, consulta Ruolo IAM del nodo Amazon EKS. Se questo ruolo non prevede nessuna delle policy per VPC CNI, per i pod VPC CNI è necessario il ruolo separato riportato di seguito.

  • (Facoltativo, ma consigliato) Il componente aggiuntivo Amazon VPC CNI plugin for Kubernetes configurato con il suo personale ruolo IAM a cui è allegata la policy IAM necessaria. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA).

  • Familiarità con le considerazioni riportate in Scelta di un tipo di istanza Amazon EC2. A seconda del tipo di istanza scelto, potrebbero esserci ulteriori prerequisiti per il cluster e il VPC.

eksctl
Nota

eksctlal momento non supporta Amazon Linux 2023.

Prerequisito

La versione 0.175.0 o quelle successive dello strumento a riga di comando eksctl deve essere installata sul dispositivo o nella AWS CloudShell. Per l'installazione o l'aggiornamento di eksctl, consulta la sezione Installation nella documentazione di eksctl.

Avvio di nodi Linux autogestiti tramite 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. Il comando seguente crea un gruppo di nodi in un cluster esistente. Sostituisci al-nodes con un nome per il 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. Sostituisci my-cluster con il nome del cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può avere una lunghezza superiore a 100 caratteri. Sostituisci i example value rimanenti con i valori in tuo possesso. Per impostazione predefinita, i nodi vengono creati con la stessa versione Kubernetes del piano di controllo.

    Prima di scegliere un valore per --node-type, verifica Scelta di un tipo di istanza Amazon EC2.

    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. Se non hai già una coppia di chiavi Amazon EC2, puoi crearla nella AWS Management Console. Per ulteriori informazioni, consulta Coppie di chiavi Amazon EC2 nella Guida per l'utente di Amazon EC2 per le istanze Linux.

    Crea il tuo gruppo di nodi di lavoro con il comando seguente.

    Importante

    Se desideri distribuire un gruppo di nodi su sottoreti Wavelength o Local AWS Outposts Zone, ci sono altre considerazioni:

    eksctl create nodegroup \ --cluster my-cluster \ --name al-nodes \ --node-type t3.medium \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --ssh-access \ --managed=false \ --ssh-public-key my-key

    Per implementare un gruppo di nodi che:

    Per un elenco completo di tutte le opzioni e i valori predefiniti disponibili, immetti il comando seguente.

    eksctl create nodegroup --help

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

    Di seguito viene riportato un output di esempio: Durante la creazione dei nodi vengono generate diverse righe. Una delle ultime righe di output è simile alla seguente riga di esempio.

    [✔]  created 1 nodegroup(s) in cluster "my-cluster"
  3. (Facoltativo) Implementa un'applicazione di esempio per testare il cluster e i nodi Linux.

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

    • Nessuno Pods nel cluster richiede l'accesso al servizio di metadati delle istanze 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.

AWS Management Console
Fase 1: Avvio di nodi Linux autogestiti tramite la AWS Management Console
  1. Scarica l'ultima versione del modello. AWS CloudFormation

    curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
  2. Attendi che lo stato del cluster risulti ACTIVE. Se vengono avviati prima che il cluster sia attivo, i nodi non riescono a effettuare la registrazione al cluster e sarà necessario riavviarli.

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

  4. Scegli Crea stack e quindi seleziona Con nuove risorse (standard).

  5. In Specifica modello, seleziona Carica un file di modello e Scegli file.

  6. Seleziona il file amazon-eks-nodegroup.yaml scaricato.

  7. Seleziona Successivo.

  8. Nella pagina Specifica i dettagli dello stack, immetti i parametri seguenti e scegli Successivo:

    • Nome stack: scegli il nome per lo stack di AWS CloudFormation . Ad esempio, è possibile chiamarlo my-cluster-nodes. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può avere una lunghezza superiore a 100 caratteri.

    • ClusterName: inserisci il nome che hai usato per creare il cluster Amazon EKS. Questo nome deve corrispondere al nome del cluster o i nodi non verranno aggiunti al cluster.

    • ClusterControlPlaneSecurityGroup: scegli il SecurityGroupsvalore dall' AWS CloudFormation output che hai generato quando hai creato il tuo VPC.

      Nella procedura seguente viene illustrata un'operazione per recuperare il gruppo applicabile.

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

      2. Scegli il nome del cluster.

      3. Scegli la scheda Reti.

      4. Utilizza il valore dei gruppi di sicurezza aggiuntivi come riferimento quando selezioni dall'ClusterControlPlaneSecurityGroupelenco a discesa.

    • NodeGroupName: inserisci un nome per il tuo gruppo di nodi. Questo nome può essere utilizzato in seguito per identificare il gruppo di nodi con dimensionamento automatico creato per i tuoi 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.

    • NodeAutoScalingGroupMinSize: Inserisci il numero minimo di nodi su cui il gruppo Auto Scaling del nodo può scalare.

    • NodeAutoScalingGroupDesiredCapacity: Inserisci il numero di nodi desiderato su cui scalare quando viene creato lo stack.

    • NodeAutoScalingGroupMaxSize: Inserisci il numero massimo di nodi su cui il gruppo Auto Scaling del nodo può scalare orizzontalmente.

    • NodeInstanceType: scegli un tipo di istanza per i tuoi nodi. Per ulteriori informazioni, consulta Scelta di un tipo di istanza Amazon EC2.

    • NodeImageIdSSMParam: precompilato con il parametro Amazon EC2 Systems Manager di una recente AMI ottimizzata per Amazon EKS per una versione variabile. Kubernetes Per utilizzare una versione secondaria diversa di Kubernetes supportata da Amazon EKS, sostituisci 1.XX con una versione supportata differente. Si consiglia di specificare la stessa versione Kubernetes del cluster.

      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'AMI del nodo Amazon EKS è basata su Amazon Linux. Tieni traccia degli eventi di sicurezza o di privacy per Amazon Linux 2 nel Centro di sicurezza di Amazon Linux o iscriviti al feed RSS associato. Gli eventi di sicurezza e privacy includono una panoramica del problema, quali sono i pacchetti interessati e come aggiornare le istanze per risolvere il problema.

    • NodeImageId: (Facoltativo) Se utilizzi la tua AMI personalizzata (anziché l'AMI ottimizzata per Amazon EKS), inserisci un ID AMI del nodo per il tuo Regione AWS. Se specifichi un valore qui, questo sostituisce tutti i valori nel campo NodeImageIdSsmParam.

    • NodeVolumeSize: Specificate la dimensione del volume root per i nodi, in GiB.

    • NodeVolumeType: Specificate un tipo di volume root per i nodi.

    • KeyName: inserisci il nome di una coppia di chiavi SSH Amazon EC2 che puoi usare per connetterti tramite SSH ai tuoi nodi dopo il loro avvio. Se non disponi di una coppia di chiavi Amazon EC2, puoi crearla nella AWS Management Console. Per ulteriori informazioni, consulta Coppie di chiavi Amazon EC2 nella Guida per l'utente di Amazon EC2 per le istanze Linux.

      Nota

      Se non fornisci una key pair qui, la creazione dello AWS CloudFormation stack fallisce.

    • BootstrapArguments: Specificate eventuali argomenti opzionali da passare allo script di bootstrap del nodo, ad esempio argomenti aggiuntivikubelet. Per ulteriori informazioni, leggi le informazioni sull'utilizzo dello script di bootstrap su GitHub.

      Per implementare un gruppo di nodi che:

    • DisableIMDSv1: ogni nodo supporta Instance Metadat Service versione 1 (IMDSv1) e IMDSv2 per impostazione predefinita. Puoi disabilitare IMDSv1. Per evitare che in futuro i nodi e i Pods nel gruppo di nodi utilizzino MDSv1, imposta DisableIMDSv1 su true. Per ulteriori informazioni su IMDS, consulta Configurazione del servizio di metadati dell'istanza. Per ulteriori informazioni sulle relative limitazioni dell'accesso ai nodi, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).

    • VpcId: inserisci l'ID per il VPC che hai creato.

    • Sottoreti: scegli le sottoreti create per il VPC. Se il VPC è stato creato utilizzando i passaggi descritti in Creazione di un VPC per il cluster Amazon EKS, specificare solo le sottoreti private all'interno del VPC per avviare i nodi. È possibile visualizzare le sottoreti private aprendo ogni collegamento relativo alla sottorete dalla scheda Reti del cluster.

      Importante
      • Se una qualsiasi delle sottoreti è pubblica, devi abilitare l'impostazione di assegnazione automatica degli indirizzi IP pubblici. Se l'impostazione non è abilitata per la sottorete pubblica, a tutti i nodi distribuiti in quella sottorete pubblica non verrà assegnato un indirizzo IP pubblico e non saranno in grado di comunicare con il cluster o altri servizi. AWS Se la sottorete è stata distribuita prima del 26 marzo 2020 utilizzando uno dei modelli AWS CloudFormation VPC di Amazon EKS o utilizzandoeksctl, l'assegnazione automatica degli indirizzi IP pubblici è disabilitata per le sottoreti pubbliche. Per informazioni su come abilitare l'assegnazione di indirizzi IP pubblici per una sottorete, consulta Modifica dell'attributo di assegnazione degli indirizzi IPv4 pubblici per la sottorete. Se il nodo viene distribuito in una sottorete privata, è in grado di comunicare con il cluster e altri servizi tramite un gateway NAT. AWS

      • Se le sottoreti non hanno accesso a Internet, leggi con attenzione le considerazioni e le fasi aggiuntive descritte in Requisiti dei cluster privati.

      • Se si AWS Outposts selezionano le sottoreti Wavelength o Local Zone, le sottoreti non devono essere state passate al momento della creazione del cluster.

  9. Seleziona le opzioni desiderate nella pagina Configura opzioni dello stack, quindi scegli Next (Avanti).

  10. Seleziona la casella di controllo a sinistra di I acknowledge that AWS CloudFormation might create IAM resources (Riconosco che CFN potrebbe creare risorse IAM), quindi scegli Create stack (Crea stack).

  11. Al termine della creazione dello stack, selezionalo nella console e scegli Output.

  12. Registra il NodeInstanceRoleper il gruppo di nodi che è stato creato. Ciò sarà utile quando configurerai i nodi di Amazon EKS.

Fase 2: abilitazione dell'aggiunta di nodi al cluster
Nota

Se i nodi sono stati avviati all'interno di un VPC privato senza accesso a Internet in uscita, assicurati di abilitare i nodi da aggiungere al cluster dal VPC.

  1. Verifica se disponi già di una ConfigMap per aws-auth.

    kubectl describe configmap -n kube-system aws-auth
  2. Se ti viene mostrata una ConfigMap per aws-auth, aggiornala se necessario.

    1. Apri ConfigMap per la modifica.

      kubectl edit -n kube-system configmap/aws-auth
    2. Aggiungi una nuova voce mapRoles, se necessario. Impostate il rolearn NodeInstanceRolevalore sul valore registrato nella procedura precedente.

      [...] data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes [...]
    3. Salva il file ed esci dall'editor di testo.

  3. Se hai ricevuto un messaggio di errore che indica "Error from server (NotFound): configmaps "aws-auth" not found", applica lo ConfigMap di stock.

    1. Scarica la mappa di configurazione.

      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
    2. Nel aws-auth-cm.yaml file, impostate il rolearn NodeInstanceRolevalore sul valore registrato nella procedura precedente. Per eseguire questa operazione, utilizza un editor di testo o sostituisci my-node-instance-role eseguendo il comando seguente:

      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
    3. Applica la configurazione. L'esecuzione di questo comando potrebbe richiedere alcuni minuti.

      kubectl apply -f aws-auth-cm.yaml
  4. Guarda lo stato dei nodi e attendi che raggiungano lo stato Ready.

    kubectl get nodes --watch

    Inserisci Ctrl+C per tornare a un prompt dello shell (interprete di comandi).

    Nota

    Se ricevi qualsiasi altro errore di tipo di risorsa o autorizzazione, consulta la sezione Accesso negato o non autorizzato (kubectl) nell'argomento relativo alla risoluzione dei problemi.

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

  5. (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.XSostituiscilo con la s-device-plugin versione di Nvidia/K8 desiderata prima di eseguire il comando seguente.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/nvidia-device-plugin.yml
Fase 3: operazioni aggiuntive
  1. (Facoltativo) Implementa un'applicazione di esempio per testare il cluster e i nodi Linux.

  2. (Facoltativo) Se la policy IAM gestita AmazonEKS_CNI_Policy (se hai un cluster IPv4) o la policy AmazonEKS_CNI_IPv6_Policy (da te creata) se hai un cluster IPv6) è collegata al Ruolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarla invece a un ruolo IAM associato all'account del servizio aws-node Kubernetes. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA).

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

    • Nessuno Pods nel cluster richiede l'accesso al servizio di metadati delle istanze Amazon EC2 (IMDS) per altri motivi, come il recupero della corrente. Regione AWS

    Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).