Avvio dei nodi Windows autogestiti - Amazon EKS

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à.

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.

  • 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 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 versione eksctl sia almeno 0.183.0. È possibile verificare la tua versione con il seguente comando.

eksctl version

Per istruzioni sull'installazione o sull'aggiornamento di eksctl, consulta la sezione Installation nella documentazione di eksctl.

Nota

Questa procedura funziona solo per i cluster creati con eksctl.

  1. (Facoltativo) Se la policy IAM gestita AmazonEKS_CNI_Policy (se hai un cluster IPv4) o la policy AmazonEKS_CNI_IPv6_Policy (da te creata) se hai un cluster IPv6) è collegata al Ruolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarla invece a un ruolo IAM associato all'account del servizio aws-node Kubernetes. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA).

  2. 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 a cui aggiungere un gruppo di Windows nodi, ti consigliamo di seguire la Guida introduttiva ad Amazon EKS: eksctl guida. 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. Sostituiscilo region-code con Regione AWS quello in cui si trova il cluster. Sostituisci my-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 del Regione AWS e in Account AWS cui si sta creando il cluster. Sostituisci ng-windows 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 versione 1.24 o successiva, puoi sostituire 2019 con 2022 in modo da utilizzare Windows Server 2022. Sostituisci il resto di example values con i valori in tuo possesso.

    Importante

    Per distribuire un gruppo di nodi su o su sottoreti AWS Local AWS Outposts Zone, non passare le sottoreti AWS Outposts Wavelength o Local Zone quando crei il cluster. AWS Wavelength 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"
  3. (Facoltativo) Implementa un'applicazione di esempio per testare il cluster e i nodi Windows.

  4. 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.

    • No, Pods nel cluster è richiesto l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della corrente. Regione AWS

    Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).

AWS Management Console
Prerequisiti
Fase 1: Avviare nodi autogestiti utilizzando WindowsAWS Management Console
  1. 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.

  2. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation

  3. Seleziona Crea stack.

  4. Per Specifica modello, selezionare URL Amazon S3.

  5. 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
  6. Seleziona due volte Next (Avanti).

  7. Nella pagina Quick create stack (Creazione rapida pila), inserire i seguenti parametri di conseguenza:

    • Nome stack: scegli il nome per lo stack di AWS CloudFormation . Ad esempio, è possibile chiamarlo my-cluster-nodes.

    • ClusterName: inserisci il nome che hai usato per creare il 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.

    • ClusterControlPlaneSecurityGruppo: 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.

      1. Apri la console Amazon EKS all'indirizzo https://console.aws.amazon.com/eks/home#/clusters.

      2. Scegli il nome del cluster.

      3. Scegli la scheda Reti.

      4. Utilizza il valore dei gruppi di sicurezza aggiuntivi come riferimento quando selezioni dall'elenco a discesa ClusterControlPlaneSecurityGruppo.

    • NodeGroupNome: 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. 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 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.

    • NodeInstanceTipo: scegli un tipo di istanza per i tuoi 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'attuale ID Core AMI ottimizzato per Amazon EKS. Windows Per utilizzare la versione completa di Windows, sostituisci Core con Full.

    • NodeImageID: (Facoltativo) Se utilizzi la tua AMI personalizzata (anziché l'AMI ottimizzata per Amazon EKS), inserisci un ID AMI del nodo per il tuo Regione AWS. Se specifichi un valore per questo campo, questo sostituisce tutti i valori nel campo NodeImageIDSSMParam.

    • NodeVolumeDimensione: specifica la dimensione del volume root per i tuoi nodi, in GiB.

    • KeyName: inserisci il nome di una coppia di chiavi SSH Amazon EC2 che puoi usare per connetterti tramite SSH ai tuoi nodi dopo il loro avvio. Se non disponi di una coppia di chiavi Amazon EC2, puoi crearla nella AWS Management Console. 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 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

    • DisableIMDSv1: ogni nodo supporta Instance Metadat Service versione 1 (IMDSv1) e IMDSv2 per impostazione predefinita. Puoi 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: Seleziona l'ID per il VPC che hai creato.

    • NodeSecurityGruppi: seleziona il gruppo di sicurezza che è stato creato per il tuo gruppo di Linux nodi quando hai creato il tuo 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, devi abilitare l'impostazione di assegnazione automatica degli indirizzi IP pubblici. Se l'impostazione non è abilitata per la sottorete pubblica, ai 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 utilizzandoeksctl, 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 assegnazione degli indirizzi IPv4 pubblici per la sottorete. Se il nodo viene distribuito in una sottorete privata, è in grado di comunicare con il cluster e altri servizi tramite un gateway NAT. AWS

      • Se le sottoreti non hanno accesso a Internet, leggi con attenzione le considerazioni e le aggiuntive descritte in Requisiti dei cluster privati.

      • Se si AWS Outposts selezionano le sottoreti Wavelength o Local Zone, le sottoreti non devono essere state passate al momento della creazione del cluster.

  8. Confermare che la pila sia in grado di creare risorse IAM, quindi scegliere Crea pila.

  9. Al termine della creazione della pila, selezionala nella console e scegli Outputs (Uscite).

  10. Registra il NodeInstanceruolo per il gruppo di nodi che è stato creato. Ciò sarà utile quando configurerai i nodi Windows di Amazon EKS.

Fase 2: abilitazione dell'aggiunta di nodi al cluster
  1. Verifica se disponi già di una ConfigMap per aws-auth.

    kubectl describe configmap -n kube-system aws-auth
  2. Se ti viene mostrata una ConfigMap per aws-auth, aggiornala se necessario.

    1. Apri ConfigMap per la modifica.

      kubectl edit -n kube-system configmap/aws-auth
    2. Aggiungi nuove voci mapRoles, se necessario. Imposta i rolearn valori sui valori del NodeInstanceruolo che hai registrato 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 [...]
    3. Salva il file ed esci dall'editor di testo.

  3. Se hai ricevuto un messaggio di errore che indica "Error from server (NotFound): configmaps "aws-auth" not found", applica lo ConfigMap di stock.

    1. 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
    2. Nel aws-auth-cm-windows.yaml file, impostate i rolearn valori sui valori NodeInstanceRole applicabili registrati nelle procedure precedenti. Per eseguire questa operazione, utilizza un editor di testo o sostituisci i example 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 modificare altre righe in questo file.

      • Non utilizzare lo stesso ruolo IAM sia per i nodi Windows che per quelli Linux.

    3. Applica la configurazione. L'esecuzione di questo comando potrebbe richiedere alcuni minuti.

      kubectl apply -f aws-auth-cm-windows.yaml
  4. 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 di lavoro non riescono a unirsi al cluster, consulta Impossibile aggiungere i nodi al cluster nella Guida alla risoluzione dei problemi.

Fase 3: operazioni aggiuntive
  1. (Facoltativo) Implementa un'applicazione di esempio per testare il cluster e i nodi Windows.

  2. (Facoltativo) Se la policy IAM gestita AmazonEKS_CNI_Policy (se hai un cluster IPv4) o la policy AmazonEKS_CNI_IPv6_Policy (da te creata) se hai un cluster IPv6) è collegata al Ruolo IAM del nodo Amazon EKS, ti consigliamo invece di assegnarla invece a un ruolo IAM associato all'account del servizio aws-node Kubernetes. Per ulteriori informazioni, consulta Configurazione dell'Amazon VPC CNI plugin for Kubernetesutilizzo dei ruoli IAM per gli account di servizio (IRSA).

  3. 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.

    • No, Pods nel cluster è richiesto l'accesso al servizio di metadati dell'istanza Amazon EC2 (IMDS) per altri motivi, come il recupero della corrente. Regione AWS

    Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).