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à.
Vuoi contribuire a questa guida per l'utente? Scegli il GitHub link Modifica questa pagina che si trova nel riquadro destro di ogni pagina. 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 sistemi autogestiti Microsoft Windows nodi
Questo argomento descrive come avviare gruppi di Auto Scaling di Windows nodi che si registrano nel tuo cluster Amazon EKS. Dopo che i nodi si sono uniti al cluster, puoi eseguire la distribuzione Kubernetes applicazioni destinate a loro.
Importante
-
I nodi Amazon EKS sono EC2 istanze Amazon standard e vengono fatturati in base ai normali prezzi delle EC2 istanze Amazon. Per ulteriori informazioni, consulta i EC2 prezzi di Amazon
. -
Puoi avviare nodi Windows nei cluster estesi di Amazon EKS su AWS Outposts, ma non puoi avviarli in cluster AWS locali su Outposts. Per ulteriori informazioni, consulta Implementa Amazon EKS in locale con Outposts AWS.
Attiva Windows supporto per il tuo cluster. Ti consigliamo di esaminare le considerazioni importanti prima di avviare un Windows gruppo di nodi. Per ulteriori informazioni, consulta Attiva Windows supporto.
Puoi avviare la gestione automatica Windows nodi con una delle seguenti caratteristiche:
eksctl
Avvia nodi Windows autogestiti utilizzando eksctl
Questa procedura presuppone che eksctl
sia installato e che la versione eksctl
sia almeno 0.199.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 da Amazoneks_CNI_Policy (se hai
IPv4
un cluster) o la (che hai creato tu stesso se hai unIPv6
cluster) è collegataAmazonEKS_CNI_IPv6_Policy
al ruolo IAM del nodo Amazon EKS, ti consigliamo di assegnarlo a un ruolo IAM da associare a Kubernetesaws-node
account di servizio invece. Per ulteriori informazioni, consulta Configurare il plug-in Amazon VPC CNI per utilizzare IRSA. -
In questa procedura si presuppone la disponibilità di un cluster. Se non disponi già di un cluster Amazon EKS e di un gruppo di nodi Amazon Linux per aggiungere un Windows gruppo di nodi a, ti consigliamo di seguirloInizia a usare Amazon EKS — eksctl. Questa guida fornisce una procedura dettagliata su come creare un cluster Amazon EKS con nodi Amazon Linux.
Crea il tuo gruppo di nodi con il comando seguente.
region-code
Sostituiscilo con la AWS regione in cui si trova il cluster. 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. Sostituiscing-windows
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. In Kubernetes versione1.24
o successiva, puoi sostituirla2019
con2022
to use Windows Server 2022. Sostituisci il resto diexample values
con i valori in tuo possesso.Importante
Per distribuire un gruppo di nodi nelle sottoreti AWS Outposts, AWS Wavelength AWS o Local Zone, non passare le sottoreti AWS Outposts, Wavelength o Local Zone quando crei il cluster. Crea il gruppo di nodi con un file di configurazione, specificando le sottoreti AWS Outposts, Wavelength o Local Zone. 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 WindowsServer2019FullContainer
Nota
-
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"
-
-
(Facoltativo) Implementate un'applicazione di esempio per testare il cluster e Windows nodi.
-
Ti consigliamo di bloccare Pod accesso a IMDS se sono soddisfatte le seguenti condizioni:
-
Hai intenzione di assegnare ruoli IAM 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 all'Amazon EC2 Instance Metadata Service (IMDS) per altri motivi, come il recupero della regione corrente. AWS
Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker)
. -
AWS Management Console
Prerequisiti
-
Un cluster Amazon EKS esistente e un Linux gruppo di nodi. Se non disponi di queste risorse, ti consigliamo di crearle utilizzando una delle nostre guide inNozioni di base su Amazon EKS. Queste guide descrivono come creare un cluster Amazon EKS con Linux nodi.
-
Creazione di un VPC e di un gruppo di sicurezza esistenti che soddisfano i requisiti per un cluster Amazon EKS. Per ulteriori informazioni, consulta Visualizza i requisiti di rete di Amazon EKS per VPC e sottoreti e Visualizza i requisiti dei gruppi di sicurezza Amazon EKS per i cluster. Le guide Nozioni di base su Amazon EKS per creare un VPC che soddisfi i requisiti. In alternativa, puoi anche seguire Crea un Amazon VPC per il tuo cluster Amazon EKS per crearne uno 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 sono presenti sottoreti nella AWS regione in cui sono abilitati AWS Outposts, AWS Wavelength o AWS Local Zones, tali sottoreti non devono essere state passate al momento della creazione del cluster.
Passaggio 1: Avviare i nodi Windows autogestiti utilizzando AWS Management Console
-
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 dello stack: scegli un nome per lo stack. AWS CloudFormation Ad esempio, puoi chiamarlo -nodes````.
my-cluster
-
ClusterName: inserisci il nome che hai usato per creare il cluster Amazon EKS.
Importante
Questo nome deve corrispondere esattamente al nome utilizzato nella Fase 1: Crea il tuo cluster Amazon EKS. Altrimenti, i tuoi nodi non possono entrare a far parte del cluster.
-
ClusterControlPlaneSecurityGroup: scegli il gruppo di sicurezza dall' AWS CloudFormation output che hai generato quando hai creato il tuo 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 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. 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.
-
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.
Nota
I tipi di istanza supportati per l'ultima versione del plug-in Amazon VPC CNI per Kubernetes sono elencati in vpc_ip_resource_limit.go
su GitHub. Potrebbe essere necessario aggiornare la versione CNI per utilizzare i più recenti tipi di istanza supportati. Per ulteriori informazioni, consulta Assegna IPs a Pods con Amazon VPC CNI. -
NodeImageIdSSMParam: precompilato con il parametro Amazon EC2 Systems Manager dell'attuale versione ottimizzata di Amazon EKS attualmente consigliata Windows ID AMI principale. Per utilizzare la versione completa di Windows, sostituire
Core
conFull
. -
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 per questo campo, questo sostituisce tutti i valori presenti nel NodeImageIdSSMParamcampo.
-
NodeVolumeSize: Specificate la dimensione del volume root per i nodi, in GiB.
-
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, lo AWS CloudFormation stack non viene creato.
-
BootstrapArguments: Specificate eventuali argomenti opzionali da passare allo script di bootstrap del nodo, come ad esempio l'utilizzo di
kubelet
argomenti aggiuntivi.-KubeletExtraArgs
-
Disabilita IMDSv1: per impostazione predefinita, ogni nodo supporta Instance Metadata Service versione 1 (IMDSv1) e. IMDSv2 È possibile disabilitare IMDSv1. Per prevenire nodi futuri e Pods nel gruppo di nodi da utilizzare MDSv1, imposta Disable IMDSv1 su true. Per ulteriori informazioni su IMDS, consulta Configurazione del servizio di metadati dell'istanza.
-
VpcId: Seleziona l'ID per il VPC che hai creato.
-
NodeSecurityGroups: Seleziona il gruppo di sicurezza che è stato creato per il tuo Linux gruppo di nodi quando hai creato il tuo VPC. Se le ricette di Linux ai nodi sono collegati più di un gruppo di sicurezza, specificali tutti. Questo per, ad esempio, se Linux il gruppo di nodi è stato creato con
eksctl
. -
Sottoreti: scegliere le sottoreti create. Se hai creato il tuo VPC utilizzando i passaggi descritti in Creare un VPC Amazon per il tuo cluster Amazon EKS, specifica solo le sottoreti private all'interno del VPC in cui i nodi possono essere lanciati.
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 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 indirizzamento pubblico per la sottorete. IPv4 Se il nodo viene distribuito in una sottorete privata, è in grado di comunicare con il cluster e altri AWS servizi tramite un gateway NAT. -
Se le sottoreti non dispongono di accesso a Internet, assicurati di conoscere le considerazioni e i passaggi aggiuntivi descritti in Implementazione di cluster privati con accesso limitato a Internet.
-
Se si AWS selezionano le sottoreti Outposts, Wavelength o Local Zone, le sottoreti non devono essere state passate 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 per il gruppo di nodi che è stato NodeInstanceRolecreato. Ne hai bisogno quando configuri Amazon EKS Windows nodi.
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 nuove voci
mapRoles
, se necessario. Impostarolearn
i NodeInstanceRolevalori sui valori registrati nelle procedure precedenti.[...] 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 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-windows.yaml
-
Nel
aws-auth-cm-windows.yaml
file, impostate irolearn
valori NodeInstanceRolesui valori applicabili registrati nelle procedure precedenti. Per eseguire questa operazione, utilizza un editor di testo o sostituisci iexample values
tramite 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.yaml
Importante
-
Non modificate nessun'altra riga in questo file.
-
Non utilizzare lo stesso ruolo IAM per entrambi Windows e Linux nodi.
-
-
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 --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 consulta il capitolo Risoluzione dei problemi.
Fase 3: Azioni aggiuntive
-
(Facoltativo) Implementate un'applicazione di esempio per testare il cluster e Windows nodi.
-
(Facoltativo) Se la policy IAM gestita da Amazoneks_CNI_Policy (se hai
IPv4
un cluster) o la (che hai creato tu stesso se hai unIPv6
cluster) è collegataAmazonEKS_CNI_IPv6_Policy
al ruolo IAM del nodo Amazon EKS, ti consigliamo di assegnarlo a un ruolo IAM da associare a Kubernetesaws-node
account di servizio invece. Per ulteriori informazioni, consulta Configurare il plug-in Amazon VPC CNI per utilizzare IRSA. -
Ti consigliamo di bloccare Pod accesso a IMDS se sono soddisfatte le seguenti condizioni:
-
Hai intenzione di assegnare ruoli IAM 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 all'Amazon EC2 Instance Metadata Service (IMDS) per altri motivi, come il recupero della regione corrente. AWS
Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker)
. -