Come posso fare in modo che i miei nodi worker si uniscano al mio cluster Amazon EKS?

9 minuti di lettura
0

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

Risoluzione

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

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

Usare il runbook di Automazione Systems Manager per identificare i problemi più comuni

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

Importante: per il corretto funzionamento dell'automazione, AWS Systems Manager deve essere in esecuzione e i nodi worker devono disporre dell'autorizzazione per accedere a Systems Manager. Per concedere l'autorizzazione di accesso ad AWS Systems Manager, allega la policy AmazonSSMManagedInstanceCore al ruolo AWS Identity and Access Management (IAM). Questo ruolo IAM corrisponde al profilo dell'istanza Amazon Elastic Compute Cloud (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}$.

Completa i seguenti passaggi:

  1. Apri il runbook.
  2. Verifica che la regione AWS nella Console di gestione AWS sia impostata sulla stessa regione del tuo 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 scoprire perché il tuo nodo worker non si unisce al cluster e i passaggi che puoi intraprendere per risolverlo.

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 la pagina 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
  • Indirizzo 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 delle route senza un reindirizzamento a una route nulla.
  • 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 la sezione Controlla il traffico verso le tue risorse AWS 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 esaminare alcuni servizi ed endpoint di uso comune, consulta Implementare cluster privati con accesso a Internet limitato. 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

Completa i seguenti passaggi:

  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 aws-auth ConfigMap con il NodeInstanceRole dei tuoi 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

Verifica di poter avviare i nodi di lavoro in una sottorete associata a una tabella di routing. La tabella di routing deve essere indirizzata all'endpoint API tramite un 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:

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

Per ulteriori informazioni, consulta Amazon EKS cluster IAM role.

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.

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

journalctl -f -u kubelet

Per risolvere eventuali problemi, consulta la Amazon EKS troubleshooting guide 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 3 mesi fa