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

Ultimo aggiornamento: 26/11/2021

Non è stato possibile creare il mio gruppo di nodi gestito Amazon Elastic Kubernetes Service (Amazon EKS). 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".

Risoluzione

Segui queste istruzioni per la risoluzione dei problemi per risolvere l'errore di creazione del gruppo di nodi gestiti di Amazon EKS.

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

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

Puoi avviare nodi worker Amazon EKS in una sottorete associata a una tabella di routing all'endpoint API tramite un gateway NAT o un gateway Internet.

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

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

  • Amazon Elastic Compute Cloud (Amazon EC2)
  • Amazon Elastic Container Registry (Amazon ECR)
  • Amazon Simple Storage Service (Amazon S3)

Per verificare che il nodo worker abbia accesso al server API, eseguire il seguente comando netcat dal nodo worker:

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

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

Connettiti all'istanza Amazon EC2 del nodo worker di Amazon EKS utilizzando SSH. Quindi, esegui il seguente comando per controllare i registri di kubelet:

journalctl -f -u kubelet

Se i registri di kubelet non forniscono informazioni sull'origine del problema, esegui il seguente comando per verificare lo stato di kubelet sul nodo worker:

sudo systemctl status kubelet

Raccogli i registri di Amazon EKS e i registri del sistema operativo per ulteriori risoluzioni dei problemi.

Verifica che gli endpoint API Amazon EC2, ECR e Amazon S3 siano raggiungibili

Usa SSH per connetterti a uno dei nodi worker.

Per verificare se gli endpoint API Amazon EC2, ECR e Amazon S3 per la tua Regione AWS sono raggiungibili, esegui il seguente comando:

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

Nota: sostituisci <region> con la Regione AWS per il tuo nodo worker.

Configura i dati utente per il nodo worker

L'AMI personalizzata sui modelli di avvio deve utilizzare l'invocazione bootstrap di Amazon EKS con i dati utente del modello di avvio. Amazon EKS non unirà le informazioni di bootstrap di default nei dati dell'utente. Per maggiori informazioni, consulta Presentazione del modello di avvio e del supporto AMI personalizzato nei gruppi di nodi gestiti di Amazon EKS.

Per configurare i dati utente per il nodo worker, puoi specificare i dati utente all'avvio delle istanze Amazon EC2.

Aggiorna il campo dati utente ai nodi worker in modo simile al seguente:

#!/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 di bootstrap aggiuntivi o lascia vuoto il valore.

Conferma che Amazon Virtual Private Cloud (Amazon VPC) per il tuo cluster Amazon EKS supporti un nome host DNS e una risoluzione DNS

Devi abilitare i nomi host DNS e la risoluzione DNS con i nodi worker dopo aver modificato l'accesso all'endpoint del cluster da pubblico a privato. Quando abiliti l'accesso privato degli endpoint per il tuo cluster, Amazon EKS crea una zona ospitata privata Route 53 per tuo conto e la associa al VPC del tuo cluster.

Per ulteriori informazioni, consulta controllo degli accessi endpoint del cluster di Amazon EKS.

Verifica le autorizzazioni dei nodi worker

Assicurati che al ruolo dell'istanza IAM associato al nodo worker siano associate le policy AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly.

Nota: la policy gestita di Amazon AmazonEKS_CNI_Policy deve essere associata al ruolo dell'istanza del nodo o a un ruolo diverso mappato all'account del servizio Kubernetes del nodo AWS. È consigliabile assegnare la policy al ruolo associato all'account del servizio Kubernetes invece di assegnarlo al ruolo.

Conferma i requisiti di traffico del gruppo di sicurezza dei nodi worker

Conferma che il gruppo di sicurezza del 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.

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

Se Amazon VPC sta esaurendo gli indirizzi IP, puoi associare un CIDR secondario al tuo Amazon VPC esistente. Per maggiori informazioni, consulta Aumenta gli indirizzi IP disponibili per Amazon VPC.