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 su AWS Outposts
Questo argomento descrive come avviare gruppi Auto Scaling di nodi Amazon Linux su un Outpost registrati nel cluster Amazon. EKS Il cluster può trovarsi su Cloud AWS o su un Outpost.
Prerequisiti
-
Un Outpost esistente. Per ulteriori informazioni, consulta Cos'è AWS Outposts.
-
Un EKS cluster Amazon esistente. Per distribuire un cluster su Cloud AWS, vediCrea un EKS cluster Amazon. Per implementare un cluster su un Outpost, consulta la sezione Crea EKS cluster Amazon locali su AWS Outposts per un'elevata disponibilità.
-
Supponiamo che tu stia creando i tuoi nodi in un cluster Cloud AWS e che tu abbia delle sottoreti nel luogo in Regione AWS cui li hai AWS Outposts o che AWS Local Zones sia AWS Wavelength abilitata. Quindi, le sottoreti non devono essere state passate al momento della creazione del cluster. Se stai creando i nodi in un cluster su un Outpost, durante la creazione del cluster devi avere passato una sottorete Outpost.
-
(Consigliato per i cluster su Cloud AWS) Il Amazon VPC CNI plugin for Kubernetes componente aggiuntivo è configurato con un proprio IAM ruolo a cui è associata la politica necessariaIAM. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA). I cluster locali non supportano i IAM ruoli per gli account di servizio.
Puoi creare un gruppo di nodi Amazon Linux autogestito con eksctl
o AWS Management Console (con un AWS CloudFormation modello). Puoi anche utilizzare Terraform
- eksctl
-
Prerequisito
La versione
0.187.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
.Avvio di nodi Linux autogestiti tramite
eksctl
-
Se il tuo cluster è attivo Cloud AWS e la CNIpolicy gestita di Amazon EKS _ IAM _Policy è allegata al tuoRuolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarlo a un IAM ruolo da associare all'account del Kubernetes
aws-node
servizio. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA). Se il cluster è sull'Outpost, la policy deve essere collegata al ruolo del tuo nodo. -
Il comando seguente crea un gruppo di nodi in un cluster esistente. Il cluster deve essere stato creato utilizzando
eksctl
. 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ò superare i 100 caratteri. Il nome deve essere univoco all'interno del Regione AWS e in Account AWS cui si sta creando il cluster. Se il cluster si trova su un Outpost, sostituiscimy-cluster
con l'ID di una sottorete dell'Outpost. Se il cluster esiste su Cloud AWS, sostituisciloid
con l'ID di una sottorete che non hai specificato al momento della creazione del cluster. Sostituisciid
con un tipo di istanza supportato sul tuo Outpost. Sostituisci iinstance-type
rimanenti con i valori in tuo possesso. Per impostazione predefinita, i nodi vengono creati con la stessa versione Kubernetes del piano di controllo.example values
Sostituisci
con un tipo di istanza disponibile sul tuo Outpost.instance-type
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.
eksctl create nodegroup --cluster
my-cluster
--nameal-nodes
--node-typeinstance-type
\ --nodes3
--nodes-min1
--nodes-max4
--managed=false --node-volume-type gp2 --subnet-ids subnet-id
Se il cluster è distribuito su: Cloud AWS
-
Il gruppo di nodi implementato può assegnare gli indirizzi
IPv4
a Pods da un altro blocco CIDR rispetto a quello dell'istanza. Per ulteriori informazioni, consulta Rete personalizzata per i pod. -
Il gruppo di nodi che implementi non richiede l'accesso a Internet in uscita. Per ulteriori informazioni, consulta Implementa cluster privati con accesso limitato a Internet.
Per un elenco completo di tutte le impostazioni predefinite e le opzioni disponibili, consulta Supporto AWS Outposts
nella documentazione di eksctl
.Se i nodi non riescono a unirsi al cluster, consulta le sezioni Impossibile aggiungere i nodi al cluster in Risolvi i problemi con i EKS cluster e i nodi Amazon e Impossibile unire i nodi a un cluster in Risolvi i problemi relativi ai cluster Amazon locali su EKS AWS Outposts.
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 i nodi Linux.
-
- AWS Management Console
-
Fase 1: Avviare nodi Amazon Linux autogestiti utilizzando 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
-
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
amazon-eks-nodegroup.yaml
scaricato in un passaggio precedente, quindi seleziona Next (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.al-nodes
-
ClusterName: inserisci il nome del cluster. Se questo nome non corrisponde al nome del cluster, i nodi non possono unirsi 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.
-
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. Se il cluster è in esecuzione su Cloud AWS, per ulteriori informazioni, consultaScegli un tipo di istanza Amazon EC2 node ottimale. Se il cluster è in esecuzione su un Outpost, puoi selezionare solo un tipo di istanza disponibile sul tuo Outpost.
-
NodeImageIdSSMParam: precompilato con il parametro Amazon EC2 Systems Manager di un Amazon recente EKS ottimizzato AMI per una versione variabileKubernetes. Per utilizzare una versione Kubernetes secondaria diversa supportata da AmazonEKS, sostituiscila
con una versione supportata diversa. Si consiglia di specificare la stessa versione Kubernetes del cluster.1.XX
Per utilizzare Amazon EKS Optimized AcceleratedAMI, sostituiscilo
conamazon-linux-2
amazon-linux-2-gpu
. Per utilizzare l'Arm EKS ottimizzato per AmazonAMI,
sostituiscilo conamazon-linux-2
amazon-linux-2-arm64
.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: Esistono diversi argomenti opzionali che puoi passare ai tuoi nodi. Per ulteriori informazioni, leggi le informazioni sull'utilizzo dello script di bootstrap
su GitHub. Se stai aggiungendo nodi a un Amazon EKS Local Cluster su AWS Outposts (dove vengono eseguite le istanze del piano di Kubernetes controllo AWS Outposts) e il cluster non dispone di una connessione Internet in ingresso e in uscita (nota anche come cluster privati), devi fornire i seguenti argomenti di bootstrap (come riga singola). --b64-cluster-ca ${CLUSTER_CA} --apiserver-endpoint https://${APISERVER_ENDPOINT} --enable-local-outpost true --cluster-id ${CLUSTER_ID}
-
D isableIMDSv 1: Per impostazione predefinita, ogni nodo supporta Instance Metadata Service versione 1 () e. IMDSv1 IMDSv2 È possibile disabilitareIMDSv1. Per impedire l'utilizzo dei nodi futuri e Pods del gruppo di nodiIMDSv1, imposta D isableIMDSv 1 su true. Per ulteriori informazioni in meritoIMDS, 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. Prima di scegliere unVPC, rivediVPCrequisiti e considerazioni.
-
Sottoreti: se il tuo cluster si trova su un Outpost, scegli almeno una sottorete privata nel tuo. VPC Prima di scegliere le sottoreti, consulta Considerazioni e requisiti relativi alla sottorete. È possibile visualizzare le sottoreti private aprendo ogni collegamento relativo alla sottorete dalla scheda Reti 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 AWS CloudFormation potrebbe creare risorse. 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
-
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. Imposta ilrolearn
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 -
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, impostateaws-auth-cm.yaml
rolearn
il 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, consulta le sezioni Impossibile aggiungere i nodi al cluster in Risolvi i problemi con i EKS cluster e i nodi Amazon e Impossibile unire i nodi a un cluster in Risolvi i problemi relativi ai cluster Amazon locali su EKS AWS Outposts.
-
Installa il EBS CSI driver Amazon. Per ulteriori informazioni, consulta Installazione
su GitHub. Nella sezione Configura l'autorizzazione del driver, assicurati di seguire le istruzioni relative all'opzione Using IAM instance profile. È necessario utilizzare la classe di archiviazione gp2
. La classe di archiviazionegp3
non è supportata.Per creare una classe di archiviazione
gp2
nel cluster, completa i seguenti passaggi.-
Per creare il file
gp2-storage-class.yaml
, emetti il seguente comando:cat >gp2-storage-class.yaml <<EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: ebs-sc provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp2 encrypted: "true" allowVolumeExpansion: true EOF
-
Applica il manifesto al cluster.
kubectl apply -f gp2-storage-class.yaml
-
-
(solo GPU nodi) Se hai scelto un tipo di GPU istanza e Amazon EKS Optimized AcceleratedAMI, devi applicare il plug-in del NVIDIA dispositivo Kubernetes
as a DaemonSet sul tuo cluster.
Sostituiscilo con la s-device-plugin versione NVIDIA/k8vX.X.X
desiderata prima di eseguire il comando seguente. 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) Implementa un'applicazione di esempio per testare il cluster e i nodi Linux.
-
Se il cluster è implementato su un Outpost, salta questo passaggio. Se il cluster è distribuito su Cloud AWS, le seguenti informazioni sono facoltative. Se la CNIpolicy gestita di Amazon EKS _ IAM _Policy è allegata alla tuaRuolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarla a un IAM ruolo da associare all'account del Kubernetes
aws-node
servizio. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA).
-