Aiutaci a migliorare questa pagina
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à.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
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à.
In questo argomento viene descritto come avviare gruppi con scalabilità automatica di nodi Amazon Linux su un Outpost che si registrano con il cluster Amazon EKS. Il cluster può trovarsi sul AWS Cloud o su un Outpost.
-
Un Outpost esistente. Per ulteriori informazioni, consulta What is AWS Outposts.
-
Un cluster Amazon EKS esistente. Per distribuire un cluster sul AWS cloud, consulta. Crea un cluster Amazon EKS Per implementare un cluster su un Outpost, consulta la sezione Crea cluster Amazon EKS locali su AWS Outposts per un'elevata disponibilità.
-
Supponiamo di creare i nodi in un cluster sul AWS Cloud e di disporre di sottoreti nella AWS regione in cui sono abilitati Outposts AWS , Wavelength AWS o Local Zones. AWS 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, devi aver inserito una sottorete Outpost durante la creazione del cluster.
-
(Consigliato per i cluster sul AWS cloud) Il plug-in CNI Amazon VPC per Kubernetes è configurato con il proprio ruolo IAM a cui è associata la politica IAM necessaria. Per ulteriori informazioni, consulta Configurare il plug-in Amazon VPC CNI per utilizzare IRSA. I cluster locali non supportano i ruoli IAM 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
Puoi creare un gruppo di nodi autogestito per il cluster locale con i seguenti strumenti descritti in questa pagina:
Importante
-
Il gruppo di nodi autogestito include EC2 istanze Amazon nel tuo account. Queste istanze non vengono aggiornate automaticamente quando tu o Amazon EKS aggiornate la versione del piano di controllo per tuo conto. Un gruppo di nodi autogestito non indica nella console che debba essere aggiornato. È possibile visualizzare la versione di
kubelet
installata su un nodo selezionando il nodo nella finestra di dialogo Nodi nella scheda Panoramica del cluster per determinare quali nodi devono essere aggiornati. È necessario aggiornare manualmente i nodi. Per ulteriori informazioni, consulta Aggiorna i nodi autogestiti per il tuo cluster. -
I certificati utilizzati da kubelet sui nodi autogestiti vengono emessi con una scadenza di un anno. Per impostazione predefinita, la rotazione dei certificati non è abilitata (vedi: https://kubernetes. io/docs/reference/config-api/kubelet-config.v1beta1/# kubelet-config-k 8 s-io-v 1beta1- KubeletConfiguration
), questo significa che se hai un nodo autogestito attivo per più di un anno, non sarà più in grado di autenticarsi nell'API Kubernetes. -
Come best practice, consigliamo ai clienti di aggiornare regolarmente i propri gruppi di nodi autogestiti per ricevere CVEs patch di sicurezza dalle più recenti AMI ottimizzate per Amazon EKS. L'aggiornamento delle AMI utilizzate nei gruppi di nodi autogestiti attiva anche la ricreazione dei nodi e assicura che non si verifichino problemi dovuti a certificati kubelet scaduti.
-
In alternativa, puoi anche abilitare la rotazione dei certificati client (vedi: https://kubernetes. io/docs/tasks/tls/certificate-rotation/
) durante la creazione dei gruppi di nodi autogestiti per assicurarsi che i certificati kubelet vengano rinnovati man mano che il certificato corrente si avvicina alla scadenza.
eksctl
Per avviare nodi Linux autogestiti utilizzando eksctl
-
Installa la versione
0.204.0
o successiva dello strumento da riga dieksctl
comando installato sul tuo dispositivo o AWS CloudShell. Per l'installazione o l'aggiornamento dieksctl
, consulta la sezione Installationnella documentazione di eksctl
. -
Se il tuo cluster è sul AWS cloud e la policy IAM gestita da Amazoneks_CNI_Policy è collegata al ruolo IAM del nodo Amazon EKS, ti consigliamo di assegnarlo a un ruolo IAM da associare invece all'account del servizio Kubernetes.
aws-node
Per ulteriori informazioni, consulta Configurare il plug-in Amazon VPC CNI per utilizzare 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
. Sostituiscial-nodes
con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può superare i 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Sostituiscimy-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 alfanumerico e non può superare i 100 caratteri. Il nome deve essere univoco all'interno della AWS regione e AWS dell'account in cui stai creando il cluster. Se il cluster si trova su un Outpost, sostituisciid
con l'ID di una sottorete dell'Outpost. Se il cluster esiste nel AWS cloud, sostituisciloid
con l'ID di una sottorete che non hai specificato al momento della creazione del cluster. Sostituisciinstance-type
con un tipo di istanza supportato sul tuo Outpost. Sostituisci iexample values
rimanenti con i valori in tuo possesso. Per impostazione predefinita, i nodi vengono creati con la stessa versione Kubernetes del piano di controllo.Sostituisci
instance-type
con un tipo di istanza disponibile sul tuo Outpost.Sostituiscilo
my-key
con il nome della tua coppia di EC2 chiavi Amazon o della tua chiave pubblica. Questa chiave viene utilizzata per eseguire il SSH nei 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.Crea il tuo gruppo di nodi con il comando seguente.
eksctl create nodegroup --cluster my-cluster --name al-nodes --node-type instance-type \ --nodes 3 --nodes-min 1 --nodes-max 4 --managed=false --node-volume-type gp2 --subnet-ids subnet-id
Se il tuo cluster è distribuito sul AWS cloud:
-
Il gruppo di nodi che distribuisci può assegnare
IPv4
indirizzi ai Pod da un blocco CIDR diverso da quello dell'istanza. Per ulteriori informazioni, consulta Distribuisci i pod in sottoreti alternative con reti personalizzate. -
Il gruppo di nodi che distribuisci 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 opzioni e le impostazioni predefinite disponibili, consulta Outposts AWS Support
nella documentazione. eksctl
-
Se i nodi non riescono a unirsi al cluster, consulta Impossibile aggiungere i nodi al cluster la sezione Risoluzione dei problemi con i cluster e i nodi Amazon EKS e Risoluzione dei problemi dei cluster Amazon EKS locali su Outposts. Impossibile unire i nodi a un cluster AWS
-
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) implementare un’applicazione di esempio per testare il cluster e i nodi Linux.
AWS Management Console
Fase 1: Avvia nodi Linux autogestiti utilizzando 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
. -
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 dello stack: scegli un nome per lo stack. AWS CloudFormation Ad esempio, è possibile chiamarlo
al-nodes
. 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 della AWS regione e AWS dell'account in cui stai creando il cluster. -
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.
-
Aprire la Console Amazon EKS
. -
Scegli il nome del cluster.
-
Scegli la scheda Reti.
-
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 usato in seguito per identificare il gruppo di nodi Auto Scaling 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 sul AWS cloud, 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 una recente AMI ottimizzata per Amazon EKS per una versione variabile di Kubernetes. Se si desidera utilizzare una diversa versione secondaria di Kubernetes supportata da Amazon EKS, è possibile sostituire
1.XX
con una versione supportata differente. Si consiglia di specificare la stessa versione Kubernetes del cluster.Per utilizzare un'AMI accelerata ottimizzata per Amazon EKS, sostituiscila
amazon-linux-2
conamazon-linux-2-gpu
. Per utilizzare un'AMI Arm ottimizzata per Amazon EKS,amazon-linux-2
sostituiscila conamazon-linux-2-arm64
.Nota
I nodi Amazon EKS AMIs sono basati su Amazon Linux. Puoi tenere traccia degli eventi di sicurezza o privacy per Amazon Linux nel centro di sicurezza Amazon Linux
scegliendo la scheda relativa alla versione desiderata. Puoi anche abbonarti al feed RSS applicabile. 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 un'AMI personalizzata (anziché un'AMI ottimizzata per Amazon EKS), inserisci un ID AMI del nodo per la tua AWS regione. 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 chiavi Amazon EC2 SSH che puoi usare per connetterti tramite SSH ai tuoi 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.
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 cluster locale Amazon EKS su AWS Outposts (dove le istanze del piano di controllo Kubernetes vengono eseguite su 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}
Per recuperare i valori per
CLUSTER_CA
eCLUSTER_ID
del tuo cluster locale Amazon EKS, esegui AWS i seguenti comandi CLI.APISERVER_ENDPOINT
Sostituisci cluster-name con il nome del cluster e della regione (ad esempio, us-east-1) con la regione del cluster. AWSecho "CLUSTER_CA=$(aws eks describe-cluster --name cluster-name --region region --query cluster.certificateAuthority.data --output text)" echo "APISERVER_ENDPOINT=$(aws eks describe-cluster --name cluster-name --region region --query cluster.endpoint --output text)" echo "CLUSTER_ID=$(aws eks describe-cluster --name cluster-name --region region --query cluster.id --output text)"
-
Disabilita IMDSv1: per impostazione predefinita, ogni nodo supporta Instance Metadata Service versione 1 () e. IMDSv1 IMDSv2 È possibile disabilitare IMDSv1. Per impedire l'utilizzo di nodi e Pod futuri nel gruppo di nodi IMDSv1, imposta Disable su IMDSv1 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. Prima di scegliere un VPC, esamina i requisiti e le considerazioni relative al VPC.
-
Subnets: (Sottoreti) se il cluster è su un Outpost, scegli almeno una sottorete privata nel 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 Create stack.
-
Al termine della creazione dello stack, selezionalo nella console e scegli Output.
-
Registra il NodeInstanceRoleper il gruppo di nodi che è stato creato. Ciò sarà utile quando configurerai i nodi di Amazon EKS.
Passaggio 2: abilita i nodi a unirsi 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
aws-auth-cm.yaml
file, impostaterolearn
il NodeInstanceRolevalore sul valore registrato nella procedura precedente. Per eseguire questa operazione, utilizza un editor di testo o sostituiscimy-node-instance-role
tramite il comando seguente: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 Impossibile aggiungere i nodi al cluster la sezione Risoluzione dei problemi con i cluster e i nodi Amazon EKS e Risoluzione dei problemi dei cluster Amazon EKS locali su Outposts. Impossibile unire i nodi a un cluster AWS
-
Installa il driver CSI per Amazon EBS. Per ulteriori informazioni, consulta Installazione su.
GitHub Nella sezione Set up driver permission (Configura autorizzazione del driver), assicurati di seguire le istruzioni per l'opzione Using IAM instance profile (Utilizzo del profilo dell'istanza IAM). È necessario utilizzare la classe di archiviazione gp2
. La classegp3
di archiviazione 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 nodi GPU) Se hai scelto un tipo di istanza GPU e un'AMI accelerata ottimizzata per Amazon EKS, devi applicare il plug-in del dispositivo NVIDIA per
Kubernetes sul tuo cluster. DaemonSet Sostituiscilo vX.X.X
con la versione s-device-pluginNVIDIA/K8desiderata 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: Azioni aggiuntive
-
(Facoltativo) implementare 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 sul AWS cloud, le seguenti informazioni sono facoltative. Se la policy IAM gestita da Amazoneks_CNI_Policy è collegata al ruolo IAM del nodo Amazon EKS, ti consigliamo di assegnarla a un ruolo IAM da associare invece all'account del servizio Kubernetes.
aws-node
Per ulteriori informazioni, consulta Configurare il plug-in Amazon VPC CNI per utilizzare IRSA.