Avvio dei nodi Windows autogestiti
In questo argomento viene descritto come avviare 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 le applicazioni Kubernetes per gli stessi.
Importante
I nodi 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
. È possibile avviare nodi Windows nei cluster estesi di Amazon EKS su AWS Outposts, ma non nei cluster locali su AWS Outposts. Per ulteriori informazioni, consulta Amazon EKS su AWS Outposts.
Abilita il supporto Windows per il cluster. Consigliamo di rivedere le considerazioni importanti prima di avviare un gruppo di nodi Windows. Per ulteriori informazioni, consulta Abilitazione del supporto Windows.
Puoi avviare i nodi Windows autogestiti con eksctl
o la AWS Management Console.
- eksctl
-
Avvio di nodiWindows Linux autogestiti tramite
eksctl
Questa procedura presuppone che
eksctl
sia installato e che la versioneeksctl
sia almeno0.141.0
. È possibile verificare la versione con il seguente comando.eksctl version
Per istruzioni su come installare o aggiornare
eksctl
, consulta Installazione o aggiornamento di eksctl.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 policy
(da te creata) se hai un clusterAmazonEKS_CNI_IPv6_Policy
IPv6
) è collegata al Ruolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarla invece a un ruolo IAM associato all'account del servizioaws-node
Kubernetes. Per ulteriori informazioni, consulta Configurazione del Amazon VPC CNI plugin for Kubernetes per l'utilizzo dei ruoli IAM per gli account di servizio. -
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 2 a cui aggiungere un gruppo di nodi Windows, ti consigliamo di seguire la guida Guida introduttiva ad Amazon EKS: eksctl. Le guide forniscono una spiegazione passo per passo completa per la creazione di un cluster Amazon EKS con nodi Amazon Linux.
Crea il tuo gruppo di nodi con il comando seguente. Sostituisci
con la Regione AWS in cui si trova il cluster. Sostituireregion-code
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 alfabetico e non può avere una lunghezza superiore a 100 caratteri. Sostituiscimy-cluster
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. Per Kubernetes versioneng-windows
1.23
o successiva, puoi sostituire
con2019
2022
in modo da utilizzare Windows Server 2022. Sostituisci il resto di
con i valori in tuo possesso.example values
Importante
Per implementare un gruppo di nodi sulle sottoreti AWS Outposts, AWS Wavelength o zone locali AWS, non passare le sottoreti AWS Outposts, Wavelength o zone locali al momento della creazione del cluster. Creare 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
.Nota
Le AMI Windows ottimizzate per Amazon EKS possono essere configurate per l'utilizzo di
containerd
come runtime. Quando utilizzieksctl
per l'avvio di nodi Windows, specificacontainerRuntime
comecontainerd
nella configurazione del gruppo di nodi. Per ulteriori informazioni, consulta Abilitazione del runtime del flag di bootstrap containerd in questa guida per l'utente o Define container runtime(Definire il runtime del container) nella documentazione su eksctl
.eksctl create nodegroup \ --region
region-code
\ --clustermy-cluster
\ --nameng-windows
\ --node-typet2.large
\ --nodes3
\ --nodes-min1
\ --nodes-max4
\ --managed=false \ --node-ami-familyWindowsServer2019FullContainer
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 è riportato l'output di esempio. Durante la creazione dei nodi vengono emesse 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 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 di servizio Kubernetes in modo che i Pods dispongano solo delle autorizzazioni minime necessarie.
Nessun Pods nel cluster richiede l'accesso al servizio di metadati dell'istanza (IMDS) di Amazon EC2 per altri motivi, come ad esempio il recupero della Regione AWS attuale.
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 gruppo di nodi Linux. Se non disponi di tali risorse, ti consigliamo di seguire una delle nostre guide Guida introduttiva ad Amazon EKS per crearle. Le 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 Requisiti e considerazioni su VPC e sottoreti di Amazon EKS e Considerazioni e requisiti relativi al gruppo di sicurezza Amazon EKS. La guida Guida introduttiva ad Amazon EKS consente di creare un VPC che soddisfa i requisiti. In alternativa, è possibile anche seguire Creazione di un VPC per il cluster Amazon EKS per 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 Creazione di un cluster Amazon EKS. Se si dispone di sottoreti nella Regione AWS in cui AWS Outposts, AWS Wavelength oppure le zone locali AWS sono abilitate, tali sottoreti non sono state passate al momento della creazione del cluster.
Fase 1: Avvio di nodi Windows autogestiti tramite la AWS Management Console
-
Attendere 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. -
Aprire la console AWS CloudFormation all'indirizzo https://console.aws.amazon.com/cloudformation
-
Selezionare Crea pila.
-
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:
-
Stack name (Nome pila): scegli il nome per la pila AWS CloudFormation. Ad esempio, è possibile chiamarla
.my-cluster
-nodes -
NomeCluster: inserire il nome utilizzato al momento della creazione del cluster Amazon EKS.
Importante
Il nome deve corrispondere esattamente a quello presente nel Fase 1: Creazione del cluster Amazon EKS;. In caso contrario, i nodi non possono aggiungersi al cluster.
-
GruppoSicurezzaClusterPianoControllo: scegliere 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 all'indirizzo https://console.aws.amazon.com/eks/home#/clusters
. -
Scegliere il nome del cluster.
-
Scegliere la scheda Networking (Reti).
-
Utilizza il valore Additional security groups (Gruppi di sicurezza aggiuntivi) come riferimento quando selezioni nell'elenco a discesa ClusterControlPlaneSecurityGroup.
-
NomeGruppoNodo: immettere un nome per il gruppo di nodi. Questo nome può essere utilizzato in seguito per identificare il gruppo di nodi Auto Scaling creato per i 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.
-
GruppoNodoAutoScalingDimensioneMin: inserire il numero minimo di nodi a cui il gruppo Auto Scaling di nodi è in grado di dimensionarsi.
-
CapacitàDesiderataGruppoAutoScalingNodo: inserire il numero desiderato di nodi come riferimento del dimensionamento quando viene creata la pila.
-
GruppoNodoAutoScalingDimensioneMax: inserire il numero massimo di nodi a cui il gruppo Auto Scaling di nodi è in grado di dimensionarsi.
-
TipoIstanzaNodo: scegliere un tipo di istanza per i nodi. Per ulteriori informazioni, consulta Scelta di un tipo di istanza Amazon EC2.
Nota
I tipi di istanze supportati per la versione più recente del Amazon VPC CNI plugin for Kubernetes
sono riportati 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 Utilizzo del componente aggiuntivo Amazon VPC CNI plugin for Kubernetes di Amazon EKS. -
NodeImageIdSSMParam: precompilato con il parametro Amazon EC2 Systems Manager dell'ID AMI Windows Core ottimizzata per Amazon EKS attualmente consigliato. Per utilizzare la versione completa di Windows, sostituisci
conCore
Full
. -
NodeImageId: (facoltativo) se utilizzi un'AMI personalizzata invece dell'AMI ottimizzata per Amazon EKS, inserisci un ID AMI del nodo per la Regione AWS in uso. 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 AWS Management Console. Per ulteriori informazioni, consultare Coppia di chiavi Amazon EC2 nella Guida per l'utente per istanze Windows di Amazon EC2.
Nota
Se non fornisci una coppia di chiavi in questa fase, la creazione della pila AWS CloudFormation non va a buon fine.
-
ArgomentiBootstrap: specificare eventuali argomenti facoltativi per passare allo script di bootstrap del nodo, ad esempio argomenti
kubelet
aggiuntivi usando-KubeletExtraArgs
.Nota
Puoi configurare le AMI Windows ottimizzate per Amazon EKS per l'utilizzo di
containerd
come runtime. Quando utilizzi il modello AWS CloudFormation per creare nodi Windows, specifica-ContainerRuntime containerd
in un argomento di bootstrap per abilitare il runtimecontainerd
. Per ulteriori informazioni, consulta Abilitazione del runtime del flag di bootstrap containerd. -
DisabilitaIMDSv1: ogni nodo supporta Instance Metadat Service versione 1 (IMDSv1) e IMDSv2 per impostazione predefinita. È possibile disabilitare IMDSv1. Per evitare che in futuro i nodi e i Pods nel gruppo di nodi utilizzino MDSv1, imposta DisableIMDSv1 su true. Per ulteriori informazioni su IMDS consulta Configurazione del servizio di metadati dell'istanza.
-
VpcId: Selezionare l'ID del VPC creato.
-
NodeSecurityGroups: seleziona 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 il VPC è stato creato utilizzando i passaggi descritti in Creazione di un VPC per il cluster Amazon EKS, specificare solo le sottoreti private all'interno del VPC per avviare i nodi.
Importante
-
Se una qualsiasi delle sottoreti è pubblica, è necessario 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 Amazon EKS, oppure un
eksctl
, l'assegnazione automatica di 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 indirizziIPv4
pubblici per la sottorete. Se il nodo viene implementato in una sottorete privata, è in grado di comunicare con il cluster e con gli altri servizi AWS tramite un gateway NAT. -
Se le sottoreti non hanno accesso a Internet, leggi con attenzione le considerazioni e le aggiuntive descritte in Requisiti dei cluster privati.
-
Se si selezionano 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 RuoloIstanzaNodo per il gruppo di nodi che è stato creato. Ciò sarà utile quando configurerai i nodi Windows di Amazon EKS.
Passaggio 2: Per abilitare l'aggiunta di nodi al cluster
-
Scarica, modifica e applica la mappa di configurazione dell'Autenticatore IAM AWS.
-
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
-
Aprire il file tramite l'editor di testo preferito. Sostituisci gli snippet
eARN of instance role (not instance profile) of **Linux** node
con i valori NodeInstanceRole registrati per i nodi Linux e Windows e salva il file.ARN of instance role (not instance profile) of **Windows** node
Importante
-
Non modificare altre righe in questo file.
-
Non utilizzare lo stesso ruolo IAM sia per i nodi Windows che per quelli Linux.
apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn:
ARN of instance role (not instance profile) of **Linux** node
username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn:ARN of instance role (not instance profile) of **Windows** node
username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows -
-
Applica la configurazione. L'esecuzione di questo comando potrebbe richiedere alcuni minuti.
kubectl apply -f aws-auth-cm-windows.yaml
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 nella Guida alla risoluzione dei problemi.
-
-
Guarda lo stato dei nodi e attendi che raggiungano lo stato
Ready
.kubectl get nodes --watch
Passaggio 3: operazioni aggiuntive
-
(Facoltativo) Implementa 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 policy
(da te creata) se hai un clusterAmazonEKS_CNI_IPv6_Policy
IPv6
) è collegata al Ruolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarla invece a un ruolo IAM associato all'account del servizioaws-node
Kubernetes. Per ulteriori informazioni, consulta Configurazione del Amazon VPC CNI plugin for Kubernetes per l'utilizzo dei ruoli IAM per gli account di servizio. Consigliamo di bloccare l'accesso dei Pod a IMDS se si verificano le seguenti condizioni:
Prevedi di assegnare ruoli IAM a tutti gli account di servizio Kubernetes in modo che i Pods dispongano solo delle autorizzazioni minime necessarie.
Nessun Pods nel cluster richiede l'accesso al servizio di metadati dell'istanza (IMDS) di Amazon EC2 per altri motivi, come ad esempio il recupero della Regione AWS attuale.
Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker)
.
-