Avvio dei nodi Windows autogestiti - Amazon EKS

Avvio dei nodi Windows autogestiti

In questo argomento vengono fornite le nozioni di base per avviare un gruppo Auto Scaling 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.

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.

È possibile avviare nodi Windows autogestiti con eksctl o il AWS Management Console.

eksctl

Avvio di nodi Windows autogestiti utilizzando eksctl

Questa procedura presuppone che eksctl sia installato e che la versione eksctl sia almeno 0.84.0. Puoi verificare la versione con il seguente comando:

eksctl version

Per istruzioni su come installare o aggiornare eksctl, consultare Installazione o aggiornamento di eksctl.

Nota

Questa procedura funziona solo per i cluster creati con eksctl.

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

  2. 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, si consiglia 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 ogni example-value con i valori in tuo possesso.

    Importante

    Se si desidera implementare un gruppo di nodi su AWS Outposts, AWS Wavelength oppure nelle sottoreti Local Zones AWS, allora AWS Outposts, AWS Wavelength oppure le sottoreti Local Zones AWS non devono essere state passate al momento della creazione del cluster. Creare il gruppo di nodi con un file di configurazione, specificando la proprietà AWS Outposts, AWS Wavelength oppure le sottoreti Local Zones AWS. 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 \ --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

    L'output è il seguente. 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"
  3. (Opzionale) implementare un'applicazione di esempio per testare il cluster e i nodi Windows.

  4. (Facoltativo) Se intendi assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie e che nessun pod nel cluster richieda l'accesso ad Amazon EC2 Instance Metadata Service (IMDS) per altri motivi, ad esempio il recupero della Regione AWS corrente, ti consigliamo di bloccare l'accesso dei pod a IMDS. Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).

AWS Management Console

Prerequisiti

  • Creazione di un cluster Amazon EKS e di 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 forniscono una spiegazione passo per passo completa per la creazione di 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 Considerazioni su cluster VPC e sottoreti e Considerazioni relative 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.

  • Creazione di 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 Local Zones AWS sono abilitate, tali sottoreti non sono state passate al momento della creazione del cluster.

Passaggio 1: Per avviare i nodi Windows autogestiti utilizzando la AWS Management Console

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

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

  3. Selezionare Crea pila.

  4. Per Specify template (Specifica modello), seleziona Amazon S3 URL (URL Amazon S3), copialo nella casella Amazon S3 URL (URL Amazon S3) e seleziona Next (Successivo) due volte.

    https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
  5. Nella pagina Quick create stack (Creazione rapida pila), inserire i seguenti parametri di conseguenza:

    • Stack name (Nome pila): scegliere il nome per la pila AWS CloudFormation. Ad esempio, è possibile chiamarla cluster-name-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.

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

      2. Scegliere il nome del cluster.

      3. Scegliere la scheda Configuration (Configurazione).

      4. Scegliere la scheda Networking (Reti).

      5. Utilizza il valore Additional Security Group (Gruppo di sicurezza aggiuntivo) come riferimento quando selezioni dall'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 di lavoro.

    • GruppoNodoAutoScalingDimensioneMin: inserire il numero minimo di nodi a cui il gruppo Auto Scaling di nodi è in grado di ridimensionarsi.

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

      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 . Aggiornamento del componente aggiuntivo autogestito 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, sostituire Core con 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 qui, il valore specificato sostituisce qualsiasi valore nel campo ParamSSMIdImmagineNodo.

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

    • DisabilitaIMDSv1: ogni nodo supporta Instance Metadata Service versione 1 (IMDSv1) e IMDSv2 per impostazione predefinita. Tuttavia, è possibile disabilitare IMDSv1. Seleziona vero se non si desidera che nessun nodo nel gruppo di nodi o qualsiasi pod pianificato sui nodi nel gruppo di nodi utilizzi 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 qui. Questo, ad esempio, se il gruppo di nodi Linux è stato creato con eksctl.

    • Sottoreti: scegliere le sottoreti create. Se si è creato il VPC utilizzando i passaggi descritti in Creazione di un VPC per il cluster Amazon EKS, specificare solo le sottoreti private all'interno del VPC in cui 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 indirizzi IPv4 pubblici della 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 Cluster privati.

      • Se si implementano i nodi in un cluster 1.18 o precedente, assicurarsi che le sottoreti selezionate siano taggate con il nome del cluster. Sostituisci my-cluster con il nome del cluster e quindi eseguire il comando seguente per visualizzare un elenco delle sottoreti attualmente contrassegnate con il nome del cluster.

        aws ec2 describe-subnets --filters Name=tag:kubernetes.io/cluster/my-cluster,Values=shared | grep SubnetId

        Se la sottorete che si desidera selezionare non viene restituita nell'output del comando precedente, aggiungere manualmente il tag alla sottorete. Per ulteriori informazioni, consulta . Assegnazione di tag alle sottoreti.

      • Se si seleziona AWS Outposts, AWS Wavelength, oppure AWS sottoreti Local Zones, le sottoreti sono state passate quando è stato creato il cluster.

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

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

  8. Registra il RuoloIstanzaNodo per il gruppo di nodi che è stato creato. Questo servirà durante la configurazione dei nodi Windows Amazon EKS.

Passaggio 2: Per abilitare l'aggiunta di nodi al cluster

  1. Scarica, modifica e applica la mappa di configurazione dell'Autenticatore IAM AWS.

    1. Scarica la mappa di configurazione:

      curl -o aws-auth-cm-windows.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
    2. Apri il file con l'editor di testo preferito. Sostituisci gli snippet ARN of instance role (not instance profile) of **Linux** node e ARN of instance role (not instance profile) of **Windows** node con i valori NodeInstanceRole registrati per i nodi Linux e Windows e salva il file.

      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
    3. 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 risorsa o autorizzazione, consulta Accesso negato o non autorizzato (kubectl) nella sezione relativa alla risoluzione dei problemi.

      Se i nodi non riescono a unirsi al cluster, consulta Impossibile aggiungere i nodi al cluster nella Guida alla risoluzione dei problemi.

  2. Guarda lo stato dei nodi e attendi che raggiungano lo stato Ready.

    kubectl get nodes --watch
  3. (Opzionale) implementare un'applicazione di esempio per testare il cluster e i nodi Windows.

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

  5. (Facoltativo) Se intendi assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie e che nessun pod nel cluster richieda l'accesso ad Amazon EC2 Instance Metadata Service (IMDS) per altri motivi, ad esempio il recupero della Regione AWS corrente, ti consigliamo di bloccare l'accesso dei pod a IMDS. Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).