Condividi tramite


Risolvere i problemi relativi alle connessioni agli endpoint all'esterno della rete virtuale

Questo articolo illustra come risolvere i problemi relativi alle connessioni agli endpoint all'esterno della rete virtuale, ovvero tramite la rete Internet pubblica, da un cluster del servizio Azure Kubernetes di Microsoft servizio Azure Kubernetes.

Prerequisiti

Elenco di controllo per la risoluzione dei problemi

Il problema è persistente?

Passaggio 1: Eseguire la risoluzione dei problemi di base

Assicurarsi di potersi connettere agli endpoint pubblici su Internet. Per istruzioni, vedere Risoluzione dei problemi di base delle connessioni cluster del servizio Azure Kubernetes in uscita.

Passaggio 2: Determinare il tipo in uscita per il cluster del servizio Azure Kubernetes

Per identificare il tipo in uscita del cluster del servizio Azure Kubernetes, eseguire il comando az aks show :

az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"

Se il tipo in uscita è loadBalancer, non esiste alcuna tabella di route a meno che non si usi la rete kubenet . Se si usa kubenet, assicurarsi che la tabella di route predefinita non abbia una configurazione aggiuntiva che blocca la connessione Internet in uscita. Se si usa un'altra rete, ad esempio Azure CNI, Allocazione dinamica o Sovrapposizione CNI di Azure, per impostazione predefinita non viene creata alcuna tabella di route. In questo caso, assicurarsi che il gruppo di sicurezza di rete (gruppo di sicurezza di rete) non abbia una configurazione personalizzata che blocca la connessione Internet in uscita.

Se il tipo in uscita è userDefinedRouting, verificare che siano soddisfatte le condizioni seguenti:

  • Il dispositivo in uscita (firewall o proxy) è raggiungibile.

  • Il dispositivo in uscita consente il traffico in uscita richiesto dal cluster.

    Per ottenere l'elenco di nomi di dominio completi consentiti per il cluster del servizio Azure Kubernetes, eseguire il comando az aks egress-endpoints list :

    az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
    

Se il tipo in uscita è managedNATGateway, verificare se la subnet del servizio Azure Kubernetes è associata al gateway NAT eseguendo il comando az network nat gateway show :

az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"

Per altre informazioni su come usare un gateway NAT insieme al servizio Azure Kubernetes, vedere Gateway NAT gestito.

Passaggio 3: Esaminare l'output curl quando ci si connette al pod dell'applicazione

I codici di risposta curl consentono di identificare il tipo di problema. Dopo aver reso disponibile il codice di risposta, provare a comprendere meglio il comportamento del problema. Per altre informazioni sui codici di stato HTTP e sul comportamento sottostante del problema, vedere la tabella seguente.

Origine informazioni Collega
Internet Assigned Numbers Authority (IANA) Registro di sistema del codice di stato HTTP (Hypertext Transfer Protocol)
Mozilla Codici di stato della risposta HTTP
Wikipedia Elenco di codici di stato HTTP

I codici di stato HTTP seguenti potrebbero indicare i problemi elencati.

Codice di stato HTTP Problema Esempio
4xx
  1. Un problema influisce sulla richiesta client.
  2. Esiste un blocco di rete tra il client e il server.
  1. La pagina richiesta non esiste o il client non dispone dell'autorizzazione per accedere alla pagina.
  2. Il traffico viene bloccato da un gruppo di sicurezza di rete o da un firewall.
5xx Un problema riguarda il server. L'applicazione è inattiva o un gateway non funziona.

È possibile provare a connettersi all'endpoint dell'applicazione usando curl. Ecco un esempio di comando e output:

# 404 error code example
$ curl -vv <host IP address>/test.index

*   Trying <host IP address>:80...
* TCP_NODELAY set
* Connected to <host IP address> (<host IP address>) port 80 (#0)
> GET /test.index HTTP/1.1
> Host: <host IP address>
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
...
* Connection #0 to host <host IP address> left intact

Passaggio 4: Controllare cosa accade se il traffico in uscita ignora temporaneamente l'appliance virtuale

Per eseguire test rapidi per determinare se il dispositivo in uscita (appliance virtuale) causa il problema, è possibile consentire temporaneamente a tutto il traffico di passare attraverso Internet. Per configurare questa configurazione, è possibile modificare l'indirizzo IP predefinito e la route di porta di 0.0.0.0/0 tramite l'appliance virtuale per passare attraverso Internet.

Se il dispositivo in uscita funziona correttamente quando si ignora l'appliance virtuale, controllare i log dell'appliance virtuale per verificare quali pacchetti vengono negati e aggiungere regole di autorizzazione nell'appliance virtuale di conseguenza.

Il problema si verifica a intermittenza?

È possibile che si verifichino problemi intermittenti in uscita per molti motivi. Per la risoluzione dei problemi di connessione in uscita intermittenti, seguire questa procedura:

Passaggio 1: Verificare se le risorse del pod o del nodo sono esaurite

Eseguire i comandi seguenti per verificare la quantità di risorse usate:

kubectl top pods
kubectl top nodes

Passaggio 2: Verificare se il disco del sistema operativo viene usato pesantemente

Per verificare se il disco del sistema operativo viene usato pesantemente, seguire questa procedura:

  1. Nella portale di Azure cercare e selezionare Set di scalabilità di macchine virtuali.

  2. Nell'elenco dei set di scalabilità selezionare il set di scalabilità usato per il cluster del servizio Azure Kubernetes.

  3. Nel riquadro di spostamento del set di scalabilità passare alla sezione Monitoraggio e quindi selezionare Metriche.

  4. Visualizzare le metriche del disco per il set di scalabilità dalla sezione Metriche cercando i campi seguenti.

    Campo Valore
    Ambito Nome set di scalabilità di macchine virtuali
    Spazio dei nomi delle metriche Host macchina virtuale
    Metriche Metrica del disco dati e del sistema operativo

Per altre informazioni sulle metriche, vedere Metriche del disco del sistema operativo e disco dati.

Per visualizzare le raccomandazioni del servizio Azure Kubernetes sull'utilizzo del disco, seguire questa procedura:

  1. Nella portale di Azure cercare e selezionare Servizi Kubernetes.

  2. Nell'elenco dei servizi Kubernetes selezionare il nome del cluster del servizio Azure Kubernetes.

  3. Nel riquadro di spostamento del cluster del servizio Azure Kubernetes passare alla sezione Monitoraggio e quindi selezionare Consigli di Advisor.

  4. Esaminare le raccomandazioni elencate sull'utilizzo del disco.

Se il disco del sistema operativo viene usato molto, prendere in considerazione l'uso dei rimedi seguenti:

  • Aumentare le dimensioni del disco del sistema operativo.

  • Passare ai dischi temporanei del sistema operativo.

Se questi rimedi non risolvono il problema, analizzare il processo che esegue operazioni di lettura/scrittura pesanti sul disco. Controllare quindi se è possibile spostare le azioni in un disco dati invece del disco del sistema operativo.

Passaggio 3: Verificare se la porta di conversione degli indirizzi di rete di origine è esaurita

Se le applicazioni effettuano molte connessioni in uscita, possono esaurire il numero di porte disponibili nell'indirizzo IP del dispositivo in uscita. Seguire la diagnostica del servizio di bilanciamento del carico Standard con metriche, avvisi e integrità delle risorse per monitorare l'utilizzo e l'allocazione della porta SNAT (Source Network Address Translation) del servizio di bilanciamento del carico esistente. Monitorare per verificare o determinare il rischio di esaurimento delle porte SNAT.

Si raggiunge o supera il numero massimo di porte SNAT allocate? In tal caso, è possibile controllare l'applicazione per determinare se sta riutilizzando le connessioni esistenti. Per altre informazioni, vedere Progettare le applicazioni per usare le connessioni in modo efficiente.

Se si ritiene che l'applicazione sia configurata correttamente e siano necessarie più porte SNAT rispetto al numero predefinito di porte allocate, seguire questa procedura:

  1. Aumentare il numero di indirizzi IP pubblici nel dispositivo in uscita. Se il dispositivo in uscita è il servizio di bilanciamento del carico, è possibile aumentare il numero di indirizzi IP pubblici nel servizio di bilanciamento del carico.

  2. Aumentare le porte per nodo per i nodi del ruolo di lavoro del servizio Azure Kubernetes.

Dichiarazione di non responsabilità di contatti di terze parti

Microsoft fornisce informazioni di contatto di terze parti per aiutarti a trovare ulteriori informazioni su questo argomento. Queste informazioni di contatto sono soggette a modifica senza preavviso. Microsoft non garantisce l'accuratezza delle informazioni di contatto di terze parti.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.