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

7 minuti di lettura
0

La creazione del gruppo di nodi gestito da Amazon Elastic Kubernetes Service (Amazon EKS) non è riuscita. I nodi non possono entrare nel cluster e ho ricevuto un errore simile al seguente: "Le istanze non sono riuscite a entrare nel cluster kubernetes".

Breve descrizione

Per risolvere gli errori di creazione di gruppi di nodi gestiti da Amazon EKS, segui questi passaggi:

  • Usa il runbook di Automazione AWS Systems Manager per identificare i problemi più comuni.
  • Conferma i requisiti di traffico del gruppo di sicurezza del nodo worker.
  • Verifica le autorizzazioni di Identity and Access Management (IAM) del nodo worker.
  • Verifica che l'Amazon Virtual Private Cloud (Amazon VPC) del tuo cluster supporti un nome host e una risoluzione DNS.
  • Aggiorna la ConfigMap aws-auth con il NodeInstanceRole dei tuoi nodi worker.
  • Imposta i tag per i tuoi nodi worker.
  • Verifica che le sottoreti Amazon VPC per il nodo worker abbiano indirizzi IP disponibili.
  • Verifica che i nodi worker possano raggiungere l'endpoint del server API per il tuo cluster.
  • Verifica che gli endpoint API Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Registry (Amazon ECR) e Amazon Simple Storage Service (Amazon S3) possano raggiungere la tua regione AWS.

Soluzione

Nota: se ricevi errori durante l'esecuzione dei comandi dell'Interfaccia della linea di comando (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia AWS CLI.

Usa 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: affinché l'automazione funzioni, i nodi worker devono disporre dell'autorizzazione ad accedere a Systems Manager e quest'ultimo deve essere in esecuzione. Per concedere l'autorizzazione, allega la policy gestita da AWS di AmazonSSMManagedInstanceCore al ruolo IAM che corrisponde al profilo della tua istanza EC2. Questa è la configurazione predefinita per i gruppi di nodi gestiti da EKS creati tramite eksctl.

  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 nel campo WorkerID.
  4. (Facoltativo) Nel campo AutomationAssumeRole, specifica il ruolo IAM per consentire a Systems Manager di eseguire azioni. Se non specificato, le autorizzazioni IAM dell'attuale entità IAM vengono utilizzate per eseguire le azioni nel runbook.
  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.

Conferma i requisiti di traffico del gruppo di sicurezza del nodo worker

Verifica che il gruppo di sicurezza del tuo piano di controllo e il gruppo di sicurezza del nodo worker siano configurati con le impostazioni consigliate per il traffico in entrata e in uscita. Per impostazione predefinita, Amazon EKS applica il gruppo di sicurezza del cluster alle istanze del gruppo di nodi per facilitare la comunicazione tra i nodi e il piano di controllo. Se specifichi gruppi di sicurezza personalizzati nel modello di avvio per il tuo gruppo di nodi gestito, Amazon EKS non aggiunge il gruppo di sicurezza del cluster.

Verifica le autorizzazioni IAM del nodo worker

Assicurati che al ruolo dell'istanza IAM associato al nodo di lavoro siano allegate le policy AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly.

Nota: devi associare la policy gestita di Amazon AmazonEKS_CNI_Policy a un ruolo IAM. Puoi collegarlo al ruolo dell'istanza del nodo. Tuttavia, è consigliabile associare la policy a un ruolo associato all'account del servizio Kubernetesaws-node nello spazio dei nomi kube-system. Per ulteriori informazioni, consulta Configurazione del plugin Amazon VPC CNI per Kubernetes per l'utilizzo dei ruoli IAM per gli account di servizio.

Verifica che l'Amazon VPC per il tuo cluster supporti un nome host DNS e una risoluzione

Dopo aver configurato l'accesso privato per l'endpoint del cluster EKS, devi attivare un nome host DNS e una risoluzione DNS per il tuo Amazon VPC. Quando attivi l'accesso privato agli endpoint, Amazon EKS crea per te una zona ospitata privata di Amazon Route 53. Quindi, Amazon EKS lo associa all'Amazon VPC del cluster. Per ulteriori informazioni, consulta Controllo degli accessi agli endpoint del cluster di Amazon EKS.

Aggiorna aws-auth ConfigMap con il NodeInstanceRole dei tuoi nodi worker

Verifica che aws-auth ConfigMap sia configurata correttamente con il ruolo IAM dei tuoi nodi worker, non con il profilo dell'istanza.

Imposta i tag per i tuoi nodi worker

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

Verifica che le sottoreti Amazon VPC per il nodo worker abbiano indirizzi IP disponibili

Se il tuo Amazon VPC sta esaurendo gli indirizzi IP, puoi associare un CIDR secondario al tuo Amazon VPC esistente. Per ulteriori informazioni, consulta Requisiti e considerazioni di Amazon EKS VPC e sottoreti.

Verifica che i tuoi nodi worker Amazon EKS possano raggiungere l'endpoint del server API per il tuo cluster

Puoi avviare nodi worker in qualsiasi sottorete all'interno del tuo cluster VPC o sottorete in peering se esiste un percorso internet attraverso i seguenti gateway:

  • NAT
  • Internet
  • Transit

Se i tuoi nodi worker vengono avviati in una rete privata con restrizioni, verifica che i nodi worker possano raggiungere l'endpoint del server API Amazon EKS. Per ulteriori informazioni, consulta i requisiti per eseguire Amazon EKS in un cluster privato senza accesso a internet in uscita.

Nota: Per i nodi che si trovano in una sottorete privata supportata da un gateway NAT, è consigliabile creare il gateway NAT in una sottorete pubblica.

Se non utilizzi gli endpoint AWS PrivateLink, verifica l'accesso agli endpoint API tramite un server proxy per i seguenti servizi AWS:

  • Amazon EC2
  • Amazon ECR
  • Amazon S3

Per verificare che il nodo worker abbia accesso al server API, connettiti al tuo nodo worker tramite SSH ed esegui il seguente comando netcat:

nc -vz 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com 443

Nota: sostituisci 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com con l'endpoint del tuo server API.

Controlla i log di kubelet mentre sei ancora connesso alla tua istanza:

journalctl -f -u kubelet

Se i log kubelet non forniscono informazioni sull'origine del problema, controlla lo stato di kubelet sul nodo worker:

sudo systemctl status kubelet

Raccogli i log di Amazon EKS e i log del sistema operativo per un'ulteriore risoluzione dei problemi.

Verifica che gli endpoint delle API Amazon EC2, Amazon ECR e Amazon S3 possano raggiungere la tua regione AWS

Usa SSH per connetterti a uno dei nodi worker, quindi esegui i seguenti comandi per ogni servizio:

$ nc -vz ec2.region.amazonaws.com 443
$ nc -vz ecr.region.amazonaws.com 443
$ nc -vz s3.region.amazonaws.com 443

Nota: sostituisci la regione con la regione AWS per il tuo nodo worker.

Configura i dati utente per il tuo nodo worker

Per i modelli di avvio di gruppi di nodi gestiti con un'AMI specificata, è necessario fornire comandi bootstrap per consentire ai nodi worker di unirsi al cluster. Amazon EKS non unisce i comandi bootstrap predefiniti nei dati utente. Per ulteriori informazioni, consulta Introduzione al modello di lancio e al supporto AMI personalizzato nei gruppi di nodi gestiti di Amazon EKS e Specificare un'AMI.

Esempio di modello di avvio con comandi bootstrap:

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

Nota: sostituisci ${ClusterName} con il nome del tuo cluster Amazon EKS. Sostituisci ${BootstrapArguments} con valori bootstrap aggiuntivi, se necessario.

Informazioni correlate

Risoluzione dei problemi di Amazon EKS

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