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
Strumento URL client (curl).
Lo strumento Kubernetes kubectl o uno strumento simile per connettersi al cluster. Per installare kubectl usando l'interfaccia della riga di comando di Azure, eseguire il comando az aks install-cli .
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 |
|
|
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:
Nella portale di Azure cercare e selezionare Set di scalabilità di macchine virtuali.
Nell'elenco dei set di scalabilità selezionare il set di scalabilità usato per il cluster del servizio Azure Kubernetes.
Nel riquadro di spostamento del set di scalabilità passare alla sezione Monitoraggio e quindi selezionare Metriche.
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:
Nella portale di Azure cercare e selezionare Servizi Kubernetes.
Nell'elenco dei servizi Kubernetes selezionare il nome del cluster del servizio Azure Kubernetes.
Nel riquadro di spostamento del cluster del servizio Azure Kubernetes passare alla sezione Monitoraggio e quindi selezionare Consigli di Advisor.
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:
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.
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.