Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Crea nodi Microsoft Windows autogestiti
Questo argomento illustra l’avvio di gruppi con scalabilità automatica di nodi Windows che si registrano con il cluster Amazon EKS. Dopo che i nodi vengono aggiunti al cluster, puoi implementare applicazioni Kubernetes per gli stessi.
Importante
-
I nodi di lavoro Amazon EKS sono istanze Amazon EC2 standard e la loro fatturazione è basata sui normali prezzi dell’istanza Amazon EC2. Per ulteriori informazioni, consulta Prezzi di Amazon EC2
. -
Puoi avviare nodi Windows nei cluster estesi di Amazon EKS su AWS Outposts, ma non nei cluster locali su AWS Outposts. Per ulteriori informazioni, consulta Implementazione di Amazon EKS on-premises con AWS Outposts.
Abilitare il supporto Windows per il cluster. Si consiglia di rivedere le considerazioni importanti prima di avviare un gruppo di nodi Windows. Per ulteriori informazioni, consulta Abilitazione del supporto Windows.
Puoi avviare nodi Windows autogestiti con uno dei seguenti modi:
eksctl
Avvio dei nodi Windows autogestiti tramite eksctl
Questa procedura presuppone che eksctl sia installato e che la versione eksctl sia almeno 0.214.0. È possibile verificare la tua versione con il seguente comando.
eksctl version
Per istruzioni sull’installazione o sull’aggiornamento di eksctl, consulta la sezione Installationeksctl.
Nota
Questa procedura funziona solo per i cluster creati con eksctl.
-
(Facoltativo) Se la policy IAM gestita AmazonEKS_CNI_Policy (se hai un cluster
IPv4) o la policyAmazonEKS_CNI_IPv6_Policy(da te creata se hai un clusterIPv6) sono collegate al ruolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarle a un ruolo IAM associato all’account del servizioaws-nodeKubernetes. Per ulteriori informazioni, consulta Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA. -
In questa procedura si presuppone la disponibilità di un cluster. Se non disponi ancora di un cluster Amazon EKS e di un gruppo di nodi Amazon Linux a cui aggiungere un gruppo di nodi Windows, ti consigliamo di seguire Nozioni di base su Amazon EKS: eksctl. Questa guida fornisce una spiegazione dettagliata completa per la creazione di un cluster Amazon EKS con nodi Amazon Linux.
Crea il tuo gruppo di nodi con il comando seguente. Sostituisci
region-codecon la Regione AWS in cui si trova il cluster. Sostituiremy-clustercon 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ò avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all’interno della Regione AWS e dell’account AWS in cui stai creando il cluster. Sostituiscing-windowscon 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. Puoi sostituire2019con2022per utilizzare Windows Server 2022. Sostituisci il resto deivalori di esempiocon quelli in tuo possesso.Importante
Per implementare un gruppo di nodi sulle sottoreti AWS Outposts, AWS Wavelength o AWS Local Zone, non passare le sottoreti AWS Outposts, Wavelength o zone locali al momento della creazione del cluster. Crea il gruppo di nodi con un file di configurazione, specificando le sottoreti AWS Outposts, Wavelength o zone locali. Per ulteriori informazioni, vedere Creazione di un gruppo di nodi da un file di configurazione
e lo Schema del file config nella documentazione su eksctl.eksctl create nodegroup \ --region region-code \ --cluster my-cluster \ --name ng-windows \ --node-type t2.large \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --managed=false \ --node-ami-family WindowsServer2019FullContainerNota
-
Se i nodi non riescono a unirsi al cluster, consultare Impossibile aggiungere i nodi al cluster nella Guida alla risoluzione dei problemi.
-
Per vedere le opzioni disponibili per i comandi
eksctl, inserire il comando seguente.eksctl command -help
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" -
-
(Opzionale) implementare un’applicazione di esempio per testare il cluster e i nodi 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 del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
-
Nessun pod nel cluster richiede l’accesso al servizio di metadati di istanza (IMDS) di Amazon EC2 per altri motivi, come un recupero della Regione AWS attuale.
Per ulteriori informazioni, consulta Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)
. -
Console di gestione AWS
Prerequisiti
-
Creazione di un cluster Amazon EKS e di un gruppo di nodi Linux. Se non disponi di tali risorse, ti consigliamo di crearle utilizzando una delle nostre guide in Nozioni di base su Amazon EKS. Queste guide descrivono come creare un cluster Amazon EKS con nodi Linux.
-
Creazione di un VPC e di un gruppo di sicurezza esistenti che soddisfano i requisiti per un cluster Amazon EKS. Per ulteriori informazioni, consulta Visualizzazione di requisiti di rete di Amazon EKS per VPC e sottoreti e Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster. Le guide in Nozioni di base su Amazon EKS consentono di creare un VPC che soddisfa i requisiti. In alternativa, è possibile anche seguire Create an Amazon VPC for your Amazon EKS cluster crearne uno nuovo manualmente.
-
Un cluster Amazon EKS esistente che utilizza un VPC e un gruppo di sicurezza in grado di soddisfare i requisiti di un cluster Amazon EKS. Per ulteriori informazioni, consulta Crea un cluster Amazon EKS.. Se disponi di sottoreti nella Regione AWS in cui AWS Outposts, AWS Wavelength oppure AWS Local Zones sono abilitati, tali sottoreti non sono state passate al momento della creazione del cluster.
Passaggio 1: avvia i nodi Windows autogestiti utilizzando la Console di gestione AWS
-
Attendi che lo stato del cluster risulti
ACTIVE. Se i nodi vengono avviati prima che il cluster sia attivo, la registrazione al cluster non riesce e sarà necessario riavviarli. -
Apri la console AWS CloudFormation
-
Seleziona Crea stack.
-
Per Specifica modello, selezionare URL Amazon S3.
-
Copia il seguente URL e incollalo nell’URL di Amazon S3.
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-02-09/amazon-eks-windows-nodegroup.yaml -
Seleziona due volte Next (Avanti).
-
Nella pagina Quick create stack (Creazione rapida pila), inserire i seguenti parametri di conseguenza:
-
Nome stack: scegli un nome per lo stack di AWS CloudFormation. Ad esempio, è possibile chiamarla
my-cluster-nodes. -
ClusterName: inserisci il nome utilizzato al momento della creazione del cluster Amazon EKS.
Importante
Questo nome deve corrispondere esattamente a quello presente in Step 1: Create your Amazon EKS cluster. In caso contrario, i nodi non possono aggiungersi al cluster.
-
ClusterControlPlaneSecurityGroup: scegli il gruppo di sicurezza dall’output AWS CloudFormation generato al momento della creazione del VPC. Nella procedura seguente viene illustrato un metodo per recuperare il gruppo applicabile.
-
Aprire la Console Amazon EKS
. -
Scegli il nome del cluster.
-
Scegli la scheda Reti.
-
Utilizza il valore Additional security groups (Gruppi di sicurezza aggiuntivi) come riferimento quando selezioni nell’elenco a discesa ClusterControlPlaneSecurityGroup.
-
-
NodeGroupName: inserisci un nome per il 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 a cui il gruppo con dimensionamento automatico di nodi è in grado di ridimensionarsi.
-
CapacitàDesiderataGruppoAutoScalingNodo: inserire il numero desiderato di nodi come riferimento del dimensionamento quando viene creata la pila.
-
NodeAutoScalingGroupMaxSize: inserisci il numero massimo di nodi a cui il gruppo con dimensionamento automatico di nodi è in grado di impiegare la scalabilità orizzontale.
-
NodeInstanceType: scegli un tipo di istanza per i nodi. Per ulteriori informazioni, consulta Scelta di una tipologia di istanza di nodo Amazon EC2 ottimale.
Nota
I tipi di istanze supportati per la versione più recente del plug-in CNI di Amazon VPC per Kubernetes
sono elencati in vpc_ip_resource_limit.go su GitHub. Potrebbe essere necessario aggiornare la versione CNI per utilizzare i tipi di istanze supportati più recenti. Per ulteriori informazioni, consulta Assegna IP ai pod con CNI di Amazon VPC. -
ParamSSMIdImmagineNodo: precompilato con il parametro Amazon EC2 Systems Manager dell’ID AMI Windows Core ottimizzata per Amazon EKS attualmente consigliata. Per utilizzare la versione completa di Windows, sostituisci
CoreconFull. -
NodeImageId: (facoltativo) in caso di utilizzo di un’AMI personalizzata (invece dell’AMI ottimizzata per Amazon EKS), inserisci un ID AMI del nodo per la tua Regione AWS. Se si specifica un valore per questo campo, il valore specificato sostituisce qualsiasi valore nel campo NodeImageIdSSMParam.
-
NodeVolumeSize: Specificare una dimensione del volume root per i nodi in GiB.
-
NomeChiave: Inserire il nome di una coppia di chiavi SSH Amazon EC2; che puoi utilizzare per connetterti utilizzando SSH nei nodi dopo l’avvio. Se non hai già una coppia di chiavi Amazon EC2, puoi crearla nella Console di gestione AWS. Per ulteriori informazioni, consulta la sezione relativa alle coppie di chiavi Amazon EC2 nella Guida per l’utente di Amazon EC2.
Nota
Se non fornisci una coppia di chiavi in questa fase, la creazione dello stack di AWS CloudFormation non viene eseguita correttamente.
-
ArgomentiBootstrap: specificare eventuali argomenti facoltativi per passare allo script di bootstrap del nodo, ad esempio argomenti
kubeletaggiuntivi usando-KubeletExtraArgs. -
DisableIMDSv1: ogni nodo supporta Instance Metadat Service versione 1 (IMDSv1) e IMDSv2 per impostazione predefinita. È possibile disabilitare IMDSv1. Imposta DisableIMDSv1 su true per impedire a nodi e pod nel gruppo di nodi di utilizzare IMDSv1. Per ulteriori informazioni su IMDS consulta Configurazione del servizio di metadati dell’istanza.
-
VpcId: Selezionare l’ID del VPC creato.
-
GruppiSicurezzaNodo: selezionare il gruppo di sicurezza creato per il gruppo di nodi Linux al momento della creazione del VPC. Se ai nodi Linux è collegato più di un gruppo di sicurezza, specificarli tutti. Questo, ad esempio, se il gruppo di nodi Linux è stato creato con
eksctl. -
Sottoreti: scegliere le sottoreti create. Se hai creato il VPC utilizzando i passaggi descritti in Create an Amazon VPC for your Amazon EKS cluster, specifica solo le sottoreti private all’interno del VPC per avviare i nodi.
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 implementati nella sottorete pubblica non verrà assegnato un indirizzo IP pubblico e non potranno comunicare con il cluster o altri servizi AWS. Se la sottorete è stata implementata prima del 26 marzo 2020 utilizzando uno dei modelli VPC AWS CloudFormation di Amazon EKS oppure
eksctl, l’assegnazione automatica degli indirizzi IP pubblici viene disattivata 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 della sottorete. Se viene implementato in una sottorete privata, il nodo è in grado di comunicare con il cluster e con gli altri servizi AWS attraverso un gateway NAT. -
Se le sottoreti non hanno accesso a Internet, leggi con attenzione le considerazioni e i passaggi aggiuntivi descritti in Deploy private clusters with limited internet access.
-
Se selezioni le sottoreti AWS Outposts, Wavelength o zone locali, non passare le sottoreti al momento della creazione del cluster.
-
-
-
Confermare che la pila sia in grado di creare risorse IAM, quindi scegliere Crea pila.
-
Al termine della creazione della pila, selezionala nella console e scegli Outputs (Uscite).
-
Registra il valore NodeInstanceRole per il gruppo di nodi che è stato creato. Questo servirà durante la configurazione dei nodi Windows Amazon EKS.
Passaggio 2: abilita l’aggiunta di nodi al cluster
-
Verifica se disponi già di una
ConfigMapperaws-auth.kubectl describe configmap -n kube-system aws-auth -
Se ti viene mostrata una
ConfigMapperaws-auth, aggiornala se necessario.-
Apri
ConfigMapper la modifica.kubectl edit -n kube-system configmap/aws-auth -
Aggiungi nuove voci
mapRoles, se necessario. Imposta i valori dirolearnsui valori di NodeInstanceRole registrati nella procedura precedente.[...] data: mapRoles: | - rolearn: <ARN of linux instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: <ARN of windows instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows [...] -
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 loConfigMapdi stock.-
Scarica la mappa di configurazione.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml -
Nel file
aws-auth-cm-windows.yaml, imposta i valori dirolearnsui valori di NodeInstanceRole registrati nella procedura precedente. Per eseguire questa operazione, utilizza un editor di testo o sostituisci ivalori di esempiotramite il comando seguente:sed -i.bak -e 's|<ARN of linux instance role (not instance profile)>|my-node-linux-instance-role|' \ -e 's|<ARN of windows instance role (not instance profile)>|my-node-windows-instance-role|' aws-auth-cm-windows.yamlImportante
-
Non modificare altre righe in questo file.
-
Non utilizzare lo stesso ruolo IAM sia per i nodi Windows che per quelli Linux.
-
-
Applica la configurazione. L’esecuzione di questo comando potrebbe richiedere alcuni minuti.
kubectl apply -f aws-auth-cm-windows.yaml
-
-
Guarda lo stato dei nodi e attendi che raggiungano lo stato
Ready.kubectl get nodes --watchInserisci
Ctrl+Cper 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 nel capitolo sulla risoluzione dei problemi.
Passaggio 3: operazioni aggiuntive
-
(Opzionale) implementare un’applicazione di esempio per testare il cluster e i nodi Windows.
-
(Facoltativo) Se la policy IAM gestita AmazonEKS_CNI_Policy (se hai un cluster
IPv4) o la policyAmazonEKS_CNI_IPv6_Policy(da te creata se hai un clusterIPv6) sono collegate al ruolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarle a un ruolo IAM associato all’account del servizioaws-nodeKubernetes. Per ulteriori informazioni, consulta Configurare il plug-in CNI di Amazon VPC per l’utilizzo di IRSA. -
Consigliamo di bloccare l’accesso dei pod a IMDS se si verificano le seguenti condizioni:
-
Prevedi di assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie.
-
Nessun pod nel cluster richiede l’accesso al servizio di metadati di istanza (IMDS) di Amazon EC2 per altri motivi, come un recupero della Regione AWS attuale.
Per ulteriori informazioni, consulta Limita l’accesso al profilo dell’istanza assegnato al nodo (worker)
. -