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à.
Crea nodi Amazon Linux autogestiti
Questo argomento descrive come avviare gruppi di Auto Scaling di Linux nodi che si registrano nel tuo EKS cluster Amazon. Dopo che i nodi si sono uniti al cluster, puoi eseguire la distribuzione Kubernetes applicazioni destinate a loro. Puoi anche avviare nodi Amazon Linux autogestiti con eksctl
o. AWS Management Console Se devi avviare nodi su AWS Outposts, consultaCrea nodi Amazon Linux su AWS Outposts.
Prerequisiti
-
Un EKS cluster Amazon esistente. Per implementarne uno, consulta Crea un EKS cluster Amazon. 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 IAM ruolo esistente da utilizzare per i nodi. Per crearne uno, consulta Ruolo IAM del nodo Amazon EKS. Se questo ruolo non ha nessuna delle politiche per VPCCNI, per i VPC CNI pod è necessario il ruolo separato che segue.
-
(Facoltativo, ma consigliato) Il Amazon VPC CNI plugin for Kubernetes componente aggiuntivo configurato con IAM un proprio ruolo a cui è associata la IAM politica necessaria. Per ulteriori informazioni, consulta Configura il VPC CNI plug-in Amazon da utilizzare IRSA.
-
Familiarità con le considerazioni riportate in Scegli un tipo di istanza Amazon EC2 node ottimale. A seconda del tipo di istanza scelto, potrebbero esserci prerequisiti aggiuntivi per il cluster e. VPC
- eksctl
-
Nota
eksctl
al momento non supporta Amazon Linux 2023.Prerequisito
La versione
0.191.0
o quelle successive dello strumento a riga di comandoeksctl
deve essere installata sul dispositivo o nella AWS CloudShell. Per l'installazione o l'aggiornamento dieksctl
, consulta la sezione Installationnella documentazione di eksctl
.Per avviare la gestione automatica Linux nodi che utilizzano
eksctl
-
(Facoltativo) Se la CNIpolicy gestita di Amazon EKS _ IAM _Policy è associata alla tua policyRuolo IAM del nodo Amazon EKS, ti consigliamo di assegnarla a un IAM ruolo che associ al Kubernetes
aws-node
account di servizio invece. Per ulteriori informazioni, consulta Configura il VPC CNI plug-in Amazon da utilizzare IRSA. -
Il comando seguente crea un gruppo di nodi in un cluster esistente. Sostituisci
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. Sostituiscial-nodes
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 alfanumerico e non può contenere più di 100 caratteri. Il nome deve essere univoco all'interno del Regione AWS e in Account AWS cui si sta creando il cluster. Sostituisci imy-cluster
rimanenti con i valori in tuo possesso. I nodi vengono creati con lo stesso Kubernetes versione come piano di controllo, per impostazione predefinita.example value
Prima di scegliere un valore per
--node-type
, verifica Scegli un tipo di istanza Amazon EC2 node ottimale.Sostituiscilo
con il nome della tua coppia di EC2 chiavi Amazon o della tua chiave pubblica. Questa chiave viene utilizzata per SSH accedere ai nodi dopo il loro avvio. Se non disponi già di una coppia di EC2 chiavi Amazon, puoi crearne una in AWS Management Console. Per ulteriori informazioni, consulta le coppie di EC2 chiavi Amazon nella Amazon EC2 User Guide.my-key
Crea il tuo gruppo di nodi con il comando seguente.
Importante
Se desideri distribuire un gruppo di nodi su sottoreti Wavelength o Local AWS Outposts Zone, ci sono altre considerazioni:
-
Le sottoreti non devono essere state trasmesse al momento della creazione del cluster.
-
È necessario creare il gruppo di nodi con un file di configurazione, specificando le sottoreti e
volumeType
. Per ulteriori informazioni, consulta Creazione di un gruppo di nodi da un file di configurazione: gp2 e lo Schema del file config nella documentazione di eksctl
.
eksctl create nodegroup \ --cluster
my-cluster
\ --nameal-nodes
\ --node-typet3.medium
\ --nodes3
\ --nodes-min1
\ --nodes-max4
\ --ssh-access \ --managed=false \ --ssh-public-keymy-key
Per implementare un gruppo di nodi che:
-
può assegnare un numero significativamente maggiore di indirizzi IP a Pods rispetto alla configurazione predefinita, vedereAssegna più indirizzi IP ai EKS nodi Amazon con prefissi.
-
può assegnare
IPv4
indirizzi a Pods da un altro CIDR blocco rispetto a quello dell'istanza, vediImplementazione pods in sottoreti alternative con reti personalizzate. -
può assegnare
IPv6
indirizzi a Pods e servizi, vediAssegna IPv6 indirizzi ai cluster, podse servizi. -
utilizza il runtime
containerd
, devi implementare il gruppo di nodi utilizzando un file diconfig
. Per ulteriori informazioni, consulta Prova la migrazione ad Amazon Linux 2 da Docker a containerd. -
non dispone di accesso a Internet in uscita, consulta Implementa cluster privati con accesso limitato a Internet.
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, Impossibile aggiungere i nodi al cluster consulta il capitolo 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
" -
-
(Facoltativo) Implementa un'applicazione di esempio per testare il cluster e Linux nodi.
Ti consigliamo di bloccare Pod accesso a IMDS se sono vere le seguenti condizioni:
Hai intenzione di assegnare IAM ruoli a tutti i tuoi Kubernetes account di servizio in modo che Pods dispongono solo delle autorizzazioni minime di cui hanno bisogno.
No Pods nel cluster richiedono l'accesso al servizio di metadati dell'EC2istanza Amazon (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: Avviare la gestione automatica Linux nodi che utilizzano il AWS Management Console
-
Scarica l'ultima versione del AWS CloudFormation modello.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
-
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. -
Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.
-
Scegli Crea stack e quindi seleziona Con nuove risorse (standard).
-
In Specifica modello, seleziona Carica un file di modello e Scegli file.
-
Seleziona il file
scaricato.amazon-eks-nodegroup.yaml
-
Seleziona Successivo.
-
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
. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può contenere più di 100 caratteri. Il nome deve essere univoco all'interno del Regione AWS e in Account AWS cui si sta creando il cluster.my-cluster-nodes
-
ClusterName: inserisci il nome che hai usato per creare il tuo EKS cluster Amazon. 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.
Apri la EKS console Amazon a https://console.aws.amazon.com/eks/home#/clusters
. -
Scegli il nome del cluster.
-
Scegli la scheda Reti.
-
Usa il valore dei gruppi di sicurezza aggiuntivi come riferimento quando selezioni dall'elenco a discesa. ClusterControlPlaneSecurityGroup
-
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 Scegli un tipo di istanza Amazon EC2 node ottimale.
-
NodeImageIdSSMParam: precompilato con il parametro Amazon EC2 Systems Manager di un Amazon recente EKS ottimizzato AMI per una variabile Kubernetes versione. Usare un altro Kubernetes versione secondaria supportata da AmazonEKS,
sostituiscila con una versione supportata diversa. Ti consigliamo di specificare lo stesso Kubernetes versione del cluster.1.XX
Puoi anche sostituirlo
con un AMI tipo diverso. Per ulteriori informazioni, consulta Recupera Amazon Linux consigliato AMI IDs.amazon-linux-2
Nota
Il EKS nodo Amazon AMI è basato su Amazon Linux. Puoi tenere traccia degli eventi di sicurezza o privacy per Amazon Linux 2 nell'Amazon Linux Security Center
o abbonarti al RSSfeed 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 il tuo account personalizzato AMI (anziché quello EKS ottimizzato per AmazonAMI), inserisci un AMI ID del nodo per il tuo Regione AWS. Se specifichi un valore qui, questo sostituisce tutti i valori nel NodeImageIdSSMParamcampo.
-
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 EC2 SSH chiavi Amazon che puoi usare per connetterti ai tuoi nodi dopo il lancio. SSH Se non disponi già di una coppia di EC2 chiavi Amazon, puoi crearne una in AWS Management Console. Per ulteriori informazioni, consulta le coppie di EC2 chiavi Amazon nella Amazon EC2 User Guide.
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 aggiuntivi
kubelet
. Per ulteriori informazioni, visualizza le informazioni sull'utilizzo dello script bootstrapsu GitHub. Per implementare un gruppo di nodi che:
-
può assegnare un numero significativamente maggiore di indirizzi IP a Pods rispetto alla configurazione predefinita, vedereAssegna più indirizzi IP ai EKS nodi Amazon con prefissi.
-
può assegnare
IPv4
indirizzi a Pods da un altro CIDR blocco rispetto a quello dell'istanza, vediImplementazione pods in sottoreti alternative con reti personalizzate. -
può assegnare
IPv6
indirizzi a Pods e servizi, vediAssegna IPv6 indirizzi ai cluster, podse servizi. -
utilizza il runtime
containerd
, devi implementare il gruppo di nodi utilizzando un file diconfig
. Per ulteriori informazioni, consulta Prova la migrazione ad Amazon Linux 2 da Docker a containerd. -
non dispone di accesso a Internet in uscita, consulta Implementa cluster privati con accesso limitato a Internet.
-
-
D isableIMDSv 1: Per impostazione predefinita, ogni nodo supporta Instance Metadata Service versione 1 (IMDSv1) eIMDSv2. È possibile disabilitareIMDSv1. Per prevenire nodi futuri e Pods nel gruppo di nodi da utilizzareMDSv1, imposta D isableIMDSv 1 su true. Per ulteriori informazioni suIMDS, vedere 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 VPCquello che hai creato.
-
Sottoreti: scegli le sottoreti che hai creato per le tue. VPC Se hai creato la tua VPC utilizzando i passaggi descritti inCrea un Amazon VPC per il tuo EKS cluster Amazon, specifica solo le sottoreti private all'interno delle quali i nodi possono essere VPC avviati. È 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, ai 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 EKS AWS CloudFormation VPCmodelli Amazon o utilizzando
eksctl
, 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 indirizziIPv4
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. AWS NAT -
Se le sottoreti non hanno accesso a Internet, leggi con attenzione le considerazioni e le fasi aggiuntive descritte in Implementa cluster privati con accesso limitato a Internet.
-
Se si AWS Outposts selezionano le sottoreti Wavelength o Local Zone, le sottoreti non devono essere state passate al momento della creazione del cluster.
-
-
-
Seleziona le opzioni desiderate nella pagina Configura opzioni dello stack, quindi scegli Next (Avanti).
-
Seleziona la casella di controllo a sinistra di Riconosco che potrebbe creare risorse. AWS CloudFormation IAM , quindi scegli Crea pila.
-
Al termine della creazione dello stack, selezionalo nella console e scegli Output.
-
Registra il NodeInstanceRoleper il gruppo di nodi che è stato creato. Ne hai bisogno quando configuri i tuoi EKS nodi Amazon.
Fase 2: abilitazione dell'aggiunta di nodi al cluster
Nota
Se hai avviato nodi all'interno di un ambiente privato VPC senza accesso a Internet in uscita, assicurati di consentire ai nodi di unirsi al cluster dall'VPCinterno di.
-
Verifica se disponi già di una
ConfigMap
peraws-auth
.kubectl describe configmap -n kube-system aws-auth
-
Se ti viene mostrata una
ConfigMap
peraws-auth
, aggiornala se necessario.-
Apri
ConfigMap
per la modifica.kubectl edit -n kube-system configmap/aws-auth
-
Aggiungi una nuova voce
mapRoles
, se necessario. Impostate ilrolearn
valore sul NodeInstanceRolevalore registrato nella procedura precedente.[...] data: mapRoles: |
- rolearn:
[...]<ARN of instance role (not instance profile)>
username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes -
Salva il file ed esci dall'editor di testo.
-
-
Se hai ricevuto un messaggio di errore che indica "
Error from server (NotFound): configmaps "aws-auth" not found
", applica loConfigMap
di stock.-
Scarica la mappa di configurazione.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
-
Nel
file, impostate ilaws-auth-cm.yaml
rolearn
NodeInstanceRolevalore sul valore registrato nella procedura precedente. Per eseguire questa operazione, utilizza un editor di testo o sostituisci
eseguendo il comando seguente:my-node-instance-role
sed -i.bak -e 's|<ARN of instance role (not instance profile)>|
my-node-instance-role
|' aws-auth-cm.yaml -
Applica la configurazione. L'esecuzione di questo comando potrebbe richiedere alcuni minuti.
kubectl apply -f aws-auth-cm.yaml
-
-
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 non riescono a unirsi al cluster, Impossibile aggiungere i nodi al cluster consultate il capitolo Risoluzione dei problemi.
-
(solo GPU nodi) Se hai scelto un tipo di GPU istanza e Amazon EKS Optimized AcceleratedAMI, devi applicare il plug-in del NVIDIA dispositivo per Kubernetes
come DaemonSet 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
Fase 3: operazioni aggiuntive
-
(Facoltativo) Implementate un'applicazione di esempio per testare il cluster e Linux nodi.
-
(Facoltativo) Se la CNIpolicy gestita di Amazon EKS _ IAM _Policy (se hai un
IPv4
cluster) o la
(che hai creato tu stesso se hai unAmazonEKS_CNI_IPv6_Policy
IPv6
cluster) è allegata al tuoRuolo IAM del nodo Amazon EKS, ti consigliamo di assegnarla a un IAM ruolo da associare al Kubernetesaws-node
account di servizio invece. Per ulteriori informazioni, consulta Configura il VPC CNI plug-in Amazon da utilizzare IRSA. Ti consigliamo di bloccare Pod accesso a IMDS se sono vere le seguenti condizioni:
Hai intenzione di assegnare IAM ruoli a tutti i tuoi Kubernetes account di servizio in modo che Pods dispongono solo delle autorizzazioni minime di cui hanno bisogno.
No Pods nel cluster richiedono l'accesso al servizio di metadati dell'EC2istanza Amazon (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)
.
-