Risoluzione di base dei problemi di connessione del cluster con il server API

Sommario

Questo articolo aiuta a risolvere i problemi di connessione del cluster AKS con il server API quando kubectl o i client REST non possono connettersi. Usare questi passaggi per identificare rapidamente le cause radice e ripristinare l'accesso.

Prerequisiti

Causa radice e soluzioni

I problemi di connessione al server API possono verificarsi per molti motivi, ma la causa radice è spesso correlata a un errore con uno di questi elementi:

  • Rete
  • Autenticazione
  • Autorizzazione

È possibile eseguire questi passaggi comuni per la risoluzione dei problemi per verificare la connettività al server API del cluster del servizio Azure Kubernetes:

  1. Immettere il comando az aks show seguente nell'interfaccia della riga di comando di Azure. Questo comando ottiene il nome di dominio completo (FQDN) del cluster AKS.

    Prima di tutto, esportare i nomi delle risorse nelle variabili di ambiente e aggiungere un suffisso casuale al gruppo di risorse e ai nomi del cluster per i test univoci.

    export RANDOM_SUFFIX=$(head -c 3 /dev/urandom | xxd -p)
    export RESOURCE_GROUP="my-aks-rg$RANDOM_SUFFIX"
    export AKS_CLUSTER="myakscluster$RANDOM_SUFFIX"
    az aks show --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --query fqdn
    

    Risultati:

    "xxxxxx-xxxxxxxx.hcp.eastus2.azmk8s.io"
    
  2. Con il nome di dominio completo verificare se il server API è raggiungibile dal computer client usando la ricerca del server dei nomi (nslookup), l'URL client (curl) e i comandi telnet:

    Sostituire <cluster-fqdn> con il nome di dominio completo effettivo restituito dal passaggio precedente. Per una dimostrazione, viene usata una variabile.

    export CLUSTER_FQDN=$(az aks show --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --query fqdn -o tsv)
    
    # Check if the DNS Resolution is working:
    nslookup $CLUSTER_FQDN  
    
    # Then check if the API Server is reachable:
    curl -k -Iv https://$CLUSTER_FQDN
    
    # Test raw TCP connectivity (output will vary depending on environment)
    timeout 5 telnet $CLUSTER_FQDN 443 || echo "Connection test completed"
    

    Annotazioni

    Quando si arresta e si avvia un cluster AKS, l'indirizzo IP del server API può cambiare. Se si verificano problemi di connessione dopo un'operazione di arresto/avvio, scaricare la cache DNS e verificare che l'indirizzo IP venga risolto correttamente. Per altre informazioni, vedere Arrestare e avviare un cluster del servizio Azure Kubernetes.

  3. Se il cluster del servizio Azure Kubernetes è privato, assicurarsi di eseguire il comando da una macchina virtuale (VM) che possa accedere al Rete virtuale di Azure del cluster del servizio Azure Kubernetes. Vedere Opzioni per la connessione al cluster privato.

  4. Se necessario, seguire i passaggi nell'articolo L'indirizzo IP del client non può accedere al server API, affinché il server API aggiunga l'indirizzo IP del tuo client agli intervalli IP autorizzati.

  5. Assicurarsi che la versione di kubectl nel computer client non sia indietro di due o più versioni secondarie rispetto alla versione del cluster AKS di quello strumento. Per installare la versione più recente di kubectl, eseguire il comando az aks install-cli nell'interfaccia della riga di comando di Azure. È quindi possibile eseguire il comando kubectl version per controllare il numero di versione della nuova installazione.

    Ad esempio, in Linux si eseguirebbero questi comandi:

    sudo az aks install-cli
    kubectl version --client
    

    Per altri sistemi operativi client, usare queste istruzioni di installazione kubectl.

  6. Se necessario, seguire la procedura descritta nell'articolo Risoluzione dei problemi File di configurazione non disponibile durante la connessione, quindi il file di configurazione di Kubernetes (configurazione) è valido e può essere trovato in fase di connessione.

  7. Se necessario, seguire la procedura descritta nell'articolo Utente non può ottenere risorse del cluster sulla risoluzione dei problemi, quindi è possibile elencare i dettagli dei nodi del cluster.

  8. Se si utilizza un firewall per controllare il traffico in uscita dai nodi di lavoro di AKS, assicurarsi che il firewall consenta le regole di uscita minime necessarie per AKS.

  9. Assicurarsi che il gruppo di sicurezza di rete associato ai nodi del servizio Azure Kubernetes consenta la comunicazione sulla porta TCP 10250 all'interno dei nodi del servizio Azure Kubernetes.

Per altri passaggi comuni per la risoluzione dei problemi, vedere Timeout TCP quando kubectl o altri strumenti di terze parti si connettono al server API.