Salta al contenuto

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.

Risoluzione

Nota: per configurare l'accesso all'endpoint del server API Kubernetes, consulta Modifica dell'accesso all'endpoint del cluster.

Risolvi gli errori dei comandi kubectl su un cluster nuovo o esistente

Verifica che il file kubeconfig si connetta al cluster

Completa i seguenti passaggi:

  1. Verifica di aver utilizzato il file kubeconfig corretto per connetterti al cluster. Per ulteriori informazioni, consulta Organizing cluster access using kubeconfig files (Come organizzare l'accesso al cluster utilizzando i file kubeconfig) sul sito web Kubernetes.

  2. Esegui questo comando per elencare i contesti del cluster nel file kubeconfig:

    kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'

    Esempio di output: 

    Cluster name Server "example-cluster-name" https://"example-cluster-endpoint".eks.amazonaws.com
  3. Verifica che i nomi dei cluster e gli endpoint nel file kubeconfig siano corretti. Se il nome o l'endpoint di un cluster non è corretto, esegui questo comando per aggiornare il contesto del cluster nel file kubeconfig:

    aws eks update-kubeconfig --name example-cluster-name --region example-region

    Nota: sostituisci example-cluster-name con il nome del cluster che stai aggiornando e example-region con la tua Regione AWS.

  4. Sul dispositivo, esegui questo comando telnet sulla porta 443 per verificare la connettività dell'endpoint del server API:

    telnet example-server-endpoint 443

    Nota: sostituisci example-server-endpoint con l'endpoint del tuo server API.
    Nel seguente esempio di output, la porta 433 può collegarsi all'endpoint del server D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com:

    $ 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 dispositivo non riesce a connettersi all'endpoint del server API tramite la porta 433, completa i passaggi di risoluzione nelle seguenti sezioni.

Controllo del risolutore DNS

Esegui questo comando dallo stesso dispositivo in cui i comandi kubectl hanno avuto esito negativo:

nslookup example-server-endpoint

Nota: sostituisci example-server-endpoint con l'endpoint del tuo server API.

Verifica se hai limitato l'accesso pubblico all'endpoint del server API

Esegui una di queste azioni in base alle esigenze:

  • Se hai limitato l'accesso all'endpoint del server API pubblico con blocchi CIDR, verifica che l'indirizzo IP del computer client rientri negli intervalli CIDR consentiti.
  • Se richiedi l'accesso dall'esterno di Amazon Virtual Private Cloud (Amazon VPC), utilizza un endpoint pubblico con restrizioni CIDR.

Assicurati che la combinazione di accesso dell'endpoint del server API soddisfi i requisiti di accesso.

Nota: è consigliabile impostare l'endpoint del server API su privato e configurare AWS VPN per l'accesso esterno. Per ulteriori informazioni, consulta Accesso a un server API solo privato.

Risolvi gli errori del comando kubectl su un cluster dopo che l'accesso all'endpoint è passato da pubblico a privato

Esegui queste azioni:

  • Accertati di utilizzare un host bastione o reti connesse per accedere all'endpoint dell'API Amazon EKS. Le reti connesse includono VPC in peering, AWS Direct Connect e VPN.
    Nota: in modalità di accesso privato, puoi accedere all'endpoint dell'API Amazon EKS solo dall'interno del VPC o delle reti connesse del cluster.
  • Verifica se i gruppi di sicurezza o le liste di controllo degli accessi alla rete (ACL) bloccano le richieste al server API Kubernetes.
    Nota: se utilizzi un VPC in peering, verifica che i gruppi di sicurezza del piano di controllo (control-plane) consentano l'accesso dal VPC peered sulla porta 443.

Risolvi i problemi relativi a un cluster bloccato nello stato Non riuscito quando non puoi modificare l'impostazione di accesso all'endpoint da pubblico a privato

Se è presente un problema di autorizzazioni con AWS Identity and Access Management (AWS IAM), il cluster passa allo stato Non riuscito.

Verifica che il ruolo IAM che utilizzi sia autorizzato a eseguire l'azione AssociateVPCWithHostedZone.

Se l'azione non è bloccata, controlla se l'account AWS ha policy di controllo dei servizi (SCP) di AWS Organizations che bloccano le chiamate API.Verifica che nessun diniego implicito o esplicito blocchi le autorizzazioni dell'utente IAM a livello di organizzazione o account. Le istruzioni Deny bloccano le autorizzazioni anche quando l'amministratore dell'account collega la policy IAM AdministratorAccess con le autorizzazioni */* all'utente. Le SCP di AWS Organizations sovrascrivono le autorizzazioni per le entità IAM.

AWS UFFICIALEAggiornata 5 mesi fa