Come posso risolvere i problemi di connettività con l'endpoint del server API del cluster Amazon EKS?

4 minuti di lettura
0

Non riesco a eseguire i comandi kubectl. Inoltre, ho modificato l'impostazione di accesso agli endpoint da pubblica a privata sul mio cluster Amazon Elastic Kubernetes Service (Amazon EKS). Ora, il mio cluster è bloccato nello stato Failed.

Breve descrizione

A seconda del problema, completa la procedura indicata in una delle seguenti sezioni.

**Nota:**Per configurare l'accesso all'endpoint del server API Kubernetes, vedi Modifica dell'accesso agli endpoint del cluster.

Risoluzione

Non è possibile eseguire i comandi kubectl sul cluster nuovo o esistente

Verifica che il file kubeconfig si connetta al cluster

Completa i seguenti passaggi:

  1. Conferma che stai utilizzando il file kubeconfig corretto per connetterti al cluster. Per ulteriori informazioni, consultaOrganizing cluster access using kubeconfig files sul sito Web Kubernetes.
  2. Controlla che ogni cluster non presenti più contesti nei file kubeconfig.
    Esempio di output:
    $ kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
    Cluster name    Server
    new200.us-east-2.eksctl.io       https://D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com
    Se il file kubeconfig in uso non contiene i dettagli corretti del cluster, esegui il comando seguente per creare una nuova voce per il cluster:
    aws eks update-kubeconfig --name CLUSTER NAME --region REGION
    Nota: sostituisci CLUSTER NAME con il nome del tuo cluster e REGION con la tua regione AWS.
  3. Usa il telnet sulla porta 443 per controllare la connettività dell'endpoint del server API dal tuo dispositivo.
    Esempio di output:
    $ echo exit | telnet D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com 443
    Trying 18.224.160.210...
    Connected to D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com.
    Escape character is '^]'.
    Connection closed by foreign host.
    Se il comando telnet non funziona, completa i passaggi seguenti per risolvere il problema.

Controllo del resolver DNS

Se il server API non si risolve, significa che c'è un problema con il resolver DNS.

Esegui il seguente comando dallo stesso dispositivo in cui i comandi kubectl non sono riusciti:

nslookup APISERVER ENDPOINT

Nota: sostituisci APISERVER ENDPOINT con l'endpoint del server API del tuo cluster.

Verifica della limitazione dell'accesso pubblico all'endpoint del server API

Se hai specificato blocchi CIDR per limitare l'accesso pubblico all'endpoint del server API, è consigliabile attivare anche l'accesso privato all’endpoint.

Controlla il comportamento di accesso all'endpoint del server API. Consulta Modifying cluster endpoint access.

Non è possibile eseguire i comandi kubectl sul cluster dopo avere modificato l'accesso all'endpoint da pubblico a privato

Per risolvere questo problema, completa i seguenti passaggi:

  1. Conferma di utilizzare un host bastione o reti connesse, come cloud privato virtuale (VPC) peer-to-peer, AWS Direct Connect o VPN, per accedere all'endpoint dell'API Amazon EKS.
    Nota: in modalità di accesso privato, puoi accedere all'endpoint dell'API Amazon EKS solo dall'interno del VPC del cluster.
  2. Controlla se i gruppi di sicurezza o gli elenchi di controllo degli accessi alla rete bloccano le richieste al server API Kubernetes.
    Se accedi al cluster tramite un VPC peer-to-peer, conferma che i gruppi di sicurezza del piano di controllo (control plane) consentano l'accesso corretto. Devono consentire l'accesso dal VPC peer-to-peer ai gruppi di sicurezza del piano di controllo (control plane) Amazon EKS sulla porta 443.

Il cluster è bloccato nello stato Failed e non è possibile modificare l'impostazione di accesso all'endpoint da pubblica a privata

Il cluster potrebbe essere nello stato Failed a causa di un problema di autorizzazioni con AWS Identity and Access Management (IAM).

Per risolvere questo problema, completa i seguenti passaggi:

  1. Verifica che il ruolo IAM dell'utente sia autorizzato a eseguire l’azione AssociateVPCWithHostedZone.
    Nota: se l'azione non è bloccata, controlla se l'account dell'utente ha le policy AWS Organizations che bloccano le chiamate API causando l’errore del cluster.
  2. Verifica che l'autorizzazione dell'utente IAM non sia bloccata implicitamente o esplicitamente a nessun livello superiore all'account.
    **Nota:**L'autorizzazione utente IAM viene bloccata implicitamente se non è inclusa nell'informativa Consenti. È bloccato in modo esplicito se è incluso nell’informativa Rifiuta. L'autorizzazione è bloccata anche se l'amministratore dell'account allega l’informativa IAM AdministratorAccess con le autorizzazioni */* all'utente. Le autorizzazioni delle policy di AWS Organizations hanno la precedenza sulle autorizzazioni per le entità IAM.
AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa