Come posso far sì che i miei nodi worker si uniscano al mio cluster Amazon EKS?

10 minuti di lettura
0

I miei nodi worker non si uniscono al mio cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrizione

Per fare in modo che i nodi worker si uniscano al cluster Amazon EKS, completa i seguenti passaggi:

  • Utilizza il runbook di Automazione AWS Systems Manager per identificare problemi comuni.
  • Verifica di disporre del supporto DNS per Amazon Virtual Private Cloud (Amazon VPC).
  • Verifica che i nodi worker del profilo dell'istanza dispongano delle autorizzazioni corrette.
  • Configura i dati utente per i nodi worker.
  • Verifica che la rete sia configurata correttamente per le sottoreti Amazon VPC.
  • Verifica che i nodi worker si trovino nello stesso VPC del cluster EKS.
  • Aggiorna la ConfigMap aws-auth con il NodeInstanceRole dei nodi worker.
  • Soddisfa i requisiti del gruppo di sicurezza dei nodi worker.
  • Imposta i tag per i nodi worker.
  • Verifica che i nodi worker possano raggiungere l'endpoint del server API del cluster EKS.
  • Verifica che il ruolo del cluster sia configurato correttamente per il cluster EKS.
  • Per le regioni AWS che supportano gli endpoint del Servizio di token di sicurezza AWS (AWS STS), verifica che l'endpoint AWS STS regionale sia attivato.
  • Assicurati che l'AMI sia configurata in modo da funzionare con Amazon EKS e che includa i componenti necessari.
  • Utilizza SSH per connetterti all'istanza Amazon Elastic Compute Cloud (Amazon EC2) del nodo di lavoro, quindi cerca errori nei log dell'agente kubelet.
  • Utilizza lo script di raccolta di log di Amazon EKS per risolvere gli errori.

Importante: i seguenti passaggi non includono le configurazioni necessarie per registrare nodi worker in ambienti che non soddisfano i seguenti criteri:

  • Nel VPC del cluster, il parametro di configurazione domain-name-servers deve essere impostato su AmazonProvidedDNS. Per ulteriori informazioni, consulta Set di opzioni DHCP.
  • È in uso una Amazon Machine Image (AMI) Linux ottimizzata per Amazon EKS per avviare i nodi worker.
    Nota: L'AMI Amazon Linux ottimizzata per Amazon EKS fornisce tutte le configurazioni necessarie, compreso uno script bootstrap /etc/eks/bootstrap.sh, per registrare i nodi worker al cluster.

Risoluzione

Utilizzare il runbook di Automazione Systems Manager per identificare problemi comuni

Utilizza il runbook AWSSupport-TroubleshootEKSWorkerNode per trovare problemi comuni che impediscono ai nodi worker di unirsi al cluster.

Importante: Affinché l'automazione funzioni, i nodi worker devono disporre dell'autorizzazione all'accesso a Systems Manager e avere Systems Manager in esecuzione. Per concedere questa autorizzazione, associa la policy AmazonSSMManagedInstanceCore al ruolo AWS Identity and Access Management (IAM). Questo è il ruolo IAM che corrisponde al profilo dell'istanza Amazon EC2. Questa è la configurazione predefinita per i gruppi di nodi gestiti di Amazon EKS creati tramite eksctl. Utilizza il formato seguente per il nome del cluster: [-a-zA-Z0-9]{1,100}$.

  1. Apri il runbook.
  2. Verifica che la regione AWS nella Console di gestione AWS sia impostata sulla stessa regione del cluster.
    Nota: Consulta la sezione Dettagli del documento del runbook per ulteriori informazioni sul runbook.
  3. Nella sezione Parametri di input, specifica il nome del cluster nel campo ClusterName e l'ID dell'istanza Amazon EC2 nel campo WorkerID.
  4. (Facoltativo) Nel campo AutomationAssumeRole, specifica il ruolo IAM per consentire a Systems Manager di eseguire azioni. Se non lo specifichi, per eseguire azioni nel runbook vengono utilizzate le autorizzazioni IAM dell'entità IAM attuale.
  5. Scegli Esegui.
  6. Controlla la sezione Output per capire perché il nodo worker non si unisce al cluster e la procedura che puoi seguire per risolvere il problema.

Verificare di disporre del supporto DNS per Amazon VPC

Verifica che Amazon VPC per il cluster EKS abbia Nomi host DNS e Risoluzione DNS attivati.

Per verificare questi attributi e attivarli, completa i seguenti passaggi:

  1. Apri la console Amazon VPC.
  2. Nel riquadro di navigazione, scegli I tuoi VPC.
  3. Seleziona il VPC che desideri modificare.
  4. Nella scheda Dettagli, verifica se i nomi host DNS e la risoluzione DNS sono attivati.
  5. Se non sono attivati, seleziona Attiva per entrambi gli attributi.
  6. Scegli Salva modifiche.

Per ulteriori informazioni, consulta Visualizzazione e aggiornamento degli attributi DNS per il VPC.

Verificare che i nodi worker del profilo dell'istanza dispongano delle autorizzazioni corrette

Collega le seguenti policy gestite da AWS al ruolo associato ai nodi worker del profilo dell'istanza:

  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonEC2ContainerRegistryReadOnly

Per collegare le policy ai ruoli, consulta Aggiunta di autorizzazioni per identità IAM (console).

Configurare i dati utente per i nodi worker

Nota: Se utilizzi AWS CloudFormation per avviare i nodi worker, non devi configurare i dati utente per i nodi worker. Segui invece le istruzioni per l'avvio di nodi Amazon Linux autogestiti nella Console di gestione AWS.

Se avvii i nodi worker utilizzando gruppi di nodi gestiti, non devi configurare i dati utente con le AMI Amazon Linux ottimizzate per Amazon EKS. Devi configurare i dati utente solo se utilizzi AMI personalizzate per avviare i nodi worker tramite gruppi di nodi gestiti.

Se utilizzi gruppi di nodi gestiti da Amazon con modello di avvio personalizzato, specifica i dati utente corretti nel modello di avvio. Se il cluster Amazon EKS è un cluster completamente privato che utilizza endpoint VPC per creare connessioni, specifica i dati utente seguenti:

  • certificate-authority
  • api-server-endpoint
  • IP del cluster DNS

Se necessario, fornisci i dati utente per passare argomenti al file bootstrap.sh incluso nell'AMI Linux/Bottlerocket ottimizzata per Amazon EKS.

Per configurare i dati utente per i nodi worker, specifica i dati utente all'avvio delle istanze Amazon EC2.

Ad esempio, se utilizzi uno strumento di terze parti come Terraform, aggiorna il campo Dati utente per avviare i nodi worker EKS:

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}

Importante:

  • Sostituisci ${ClusterName} con il nome del cluster EKS.
  • Sostituisci ${BootstrapArguments} con valori bootstrap aggiuntivi o lascia vuota questa proprietà.

Verificare che la rete sia configurata correttamente per le sottoreti Amazon VPC

  • Se utilizzi un gateway Internet, assicurati che sia collegato correttamente alla tabella di routing senza blackhole.
  • Se utilizzi un gateway NAT, assicurati che sia configurato correttamente in una sottorete pubblica. Inoltre, verifica che la tabella di routing non contenga blackhole.
  • Se utilizzi endpoint VPC privati per un cluster completamente privato, assicurati di disporre dei seguenti endpoint:
    com.amazonaws.region.ec2 (endpoint dell'interfaccia)
    com.amazonaws.region.ecr.api (endpoint dell'interfaccia)
    com.amazonaws.region.ecr.dkr (endpoint dell'interfaccia)
    com.amazonaws.region.s3 (endpoint del gateway)
    com.amazonaws.region.sts (endpoint dell'interfaccia)
  • I pod configurati con ruoli IAM per gli account di servizio richiedono credenziali da una chiamata API del Servizio di token di sicurezza AWS (AWS STS). Se non è disponibile un accesso a internet in uscita, devi creare e utilizzare un endpoint VPC AWS STS nel VPC.
  • Il gruppo di sicurezza per l'endpoint VPC deve disporre di una regola in entrata che consenta il traffico dalla porta 443. Per ulteriori informazioni, consulta Controlla il traffico verso le risorse utilizzando gruppi di sicurezza.
  • Assicurati che la policy associata all'endpoint VPC disponga delle autorizzazioni richieste.

Nota: Se utilizzi un altro servizio AWS, devi creare tali endpoint. Per alcuni servizi ed endpoint utilizzati comunemente, consulta Requisiti per un cluster privato. Inoltre, potresti creare un servizio endpoint in base al caso d'uso.

Verificare che i nodi worker si trovino nello stesso Amazon VPC del cluster EKS

  1. Apri la console Amazon EKS.
  2. Scegli Cluster, quindi seleziona il tuo cluster.
  3. Nella sezione Rete, identifica le sottoreti associate al cluster.

Nota: È possibile configurare diverse sottoreti in cui avviare i nodi worker. Le sottoreti devono esistere nello stesso Amazon VPC ed avere i tag appropriati. Amazon EKS gestisce automaticamente i tag solo per le sottoreti configurate durante la creazione del cluster. Pertanto, assicurati di applicare i tag alle sottoreti in modo appropriato.

Per ulteriori informazioni, consulta Considerazioni e requisiti relativi alla sottorete.

Aggiornare la ConfigMap aws-auth con il NodeInstanceRole dei nodi worker

Verifica che la ConfigMap aws-auth sia configurata correttamente con i ruoli IAM del nodo worker e non con il profilo dell'istanza.

Per verificare il file della ConfigMap aws-auth, esegui il seguente comando:

kubectl describe configmap -n kube-system aws-auth

Se la ConfigMap aws-auth non è configurata correttamente, comparirà il seguente errore:

571 reflector.go:153\] k8s.io/kubernetes/pkg/kubelet/kubelet.go:458 : Failed to list \*v1.Node: Unauthorized

Soddisfare i requisiti del gruppo di sicurezza dei nodi worker

Verifica che il piano di controllo (control-plane) del gruppo di sicurezza e il gruppo di sicurezza del nodo worker siano configurati con le impostazioni corrispondenti alle best practice per il traffico in entrata e in uscita. Inoltre, verifica che le regole della lista di controllo degli accessi (ACL) alla rete siano configurate per consentire il traffico da e per 0.0.0.0/0 per le porte 80, 443 e 1025-65535.

Impostare i tag per i nodi worker

Per la proprietà Tag dei nodi worker, imposta la Chiave su kubernetes.io/cluster/clusterName e imposta il Valore su owned.

Per ulteriori informazioni, consulta Considerazioni e requisiti relativi al VPC.

Verificare che i nodi worker possano raggiungere l'endpoint del server API del cluster EKS

Considera i seguenti aspetti:

  • È possibile avviare nodi worker in una sottorete associata a una tabella di routing che indirizza all'endpoint API tramite un gateway NAT o un gateway Internet.
  • Se avvii i tuoi nodi worker in una rete privata con restrizioni, verifica che i nodi worker possano raggiungere l'endpoint del server API EKS.
  • Se avvii nodi worker con un Amazon VPC che utilizza un DNS personalizzato invece di un AmazonProvidedDNS, l'endpoint potrebbe non essere risolto. Un endpoint non risolto si verifica quando l'accesso pubblico all'endpoint viene disattivato e viene attivato solo l'accesso privato. Per ulteriori informazioni, consulta Attivare la risoluzione DNS per gli endpoint del cluster Amazon EKS.

Verificare che il ruolo del cluster sia configurato correttamente per il cluster

Il cluster deve avere un ruolo del cluster con l'autorizzazione AmazonEKSClusterPolicy minima. Inoltre, la relazione di attendibilità del cluster deve consentire il servizio eks.amazonaws.com per sts:AssumeRole.

Esempio:

{
  "Version": "2012-10-17",
  "Statement": \[
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  \]
}

Per ulteriori informazioni, consulta Ruolo IAM del cluster Amazon EKS.

Verificare che gli endpoint STS regionali siano attivati

Se il cluster si trova in una regione che supporta gli endpoint STS, attiva l'endpoint STS regionale per autenticare il kubelet. kubelet può quindi creare l'oggetto nodo.

Assicurarsi che l'AMI sia configurata in modo da funzionare con EKS e che includa i componenti necessari

Se l'AMI utilizzata per i nodi worker non è l'AMI Amazon Linux ottimizzata per Amazon EKS, verifica che i seguenti componenti di Kubernetes siano attivi:

  • kubelet
  • AWS IAM Authenticator
  • Docker (Amazon EKS versione 1.23 e precedenti)
  • containerd

Connettere l'istanza EKS del nodo worker a SSH e verifica i log dell'agente kubelet

L'agente kubelet è configurato come servizio systemd.

1.    Per convalidare i log di kubelet, esegui il seguente comando:

journalctl -f -u kubelet

2.    Per risolvere eventuali problemi, consulta la guida Risoluzione dei problemi di Amazon EKS per risolvere gli errori più comuni.

Utilizzare lo script di raccolta di log di Amazon EKS per risolvere gli errori

Puoi utilizzare i file di log e i log del sistema operativo per risolvere i problemi di Amazon EKS.

È necessario utilizzare SSH per connettersi al nodo worker che presenta il problema ed eseguire il seguente script:

curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/log-collector-script/linux/eks-log-collector.sh

sudo bash eks-log-collector.sh

Informazioni correlate

Come posso risolvere gli errori di creazione di gruppi di nodi gestiti da Amazon EKS?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa