Condividi tramite


Risolvere i problemi relativi al codice di errore OutboundConnFailVMExtensionError (50)

Questo articolo descrive come identificare e risolvere l'errore OutboundConnFailVMExtensionError (noto anche come codice ERR_OUTBOUND_CONN_FAILdi errore , numero di errore 50) che potrebbe verificarsi se si crea, si avvia, si ridimensiona o si aggiorna un cluster del servizio Azure Kubernetes.

Prerequisites

  • Strumento da riga di comando Netcat (nc)

  • Strumento della riga di comando dig

  • Strumento URL client (cURL)

Symptoms

Quando si tenta di creare, ridimensionare o aggiornare un cluster del servizio Azure Kubernetes, è possibile che venga visualizzato il messaggio di errore seguente:

Impossibile stabilire una connessione in uscita dagli agenti. Per altre informazioni, vedere https://aka.ms/aks-required-ports-and-addresses .

Dettagli: Code="VMExtensionProvisioningError"

Message="Vm ha segnalato un errore durante l'elaborazione dell'estensione "vmssCSE".

Messaggio di errore: "Enable failed: failed to execute command: command terminate with exit status=50\n[stdout]\n\n[stderr]\nnc: connect to mcr.microsoft.com port 443 (tcp) failed: Connection timed out\nCommand exited with non-zero status

Dettagli errore: "messaggi di errore vmssCSE: {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}

Questo errore può anche causare che i nodi in esecuzione diventino NotReady o causi errori di pull delle immagini perché la connettività in uscita è bloccata da alcuni o tutti i nodi del cluster.

Cause

L'estensione per script personalizzati che scarica i componenti necessari per effettuare il provisioning dei nodi non è riuscita a stabilire la connettività in uscita necessaria per ottenere i pacchetti. Per i cluster pubblici, i nodi tentano di comunicare con l'endpoint del Registro Contenitori Microsoft (mcr.microsoft.comMCR) sulla porta 443.

Esistono molti motivi per cui il traffico in uscita potrebbe essere bloccato. Il modo migliore per risolvere gli errori di connettività in uscita consiste nell'eseguire un'analisi della connettività con Verifica rete virtuale di Azure (anteprima).The best way to troubleshoot outbound connectivity failures is running a connectivity analysis with Azure Virtual Network Verifier (Preview). Eseguendo un'analisi della connettività, è possibile visualizzare gli hop all'interno del flusso del traffico ed eventuali configurazioni errate all'interno delle risorse di rete di Azure che bloccano il traffico. Per risolvere manualmente gli errori di connettività in uscita, è possibile usare il protocollo SSH (Secure Shell Protocol) per connettersi al nodo. Questa sezione illustra le istruzioni per entrambi i tipi di indagini:

Controllare se le risorse di rete di Azure bloccano il traffico verso l'endpoint

Per determinare se il traffico viene bloccato all'endpoint a causa delle risorse di rete di Azure, eseguire un'analisi della connettività dai nodi del cluster AKS all'endpoint usando lo strumento Azure Virtual Network Verifier (Preview). L'analisi della connettività copre le risorse seguenti:

  • Bilanciatore di carico Azure
  • Azure Firewall
  • Un gateway NAT (Network Address Translation)
  • Gruppo di sicurezza di rete
  • Criteri di rete
  • Route definite dall'utente (tabelle di route)
  • Peering delle reti virtuali

Note

Verifica rete virtuale di Azure (anteprima) non può accedere ad alcuna risorsa di rete esterna o di terze parti, ad esempio un firewall personalizzato. Se l'analisi della connettività non rileva traffico bloccato, è consigliabile eseguire un controllo manuale di qualsiasi rete esterna per coprire tutti gli hop nel flusso di traffico.

Attualmente, i cluster che usano la sovrimpressione CNI di Azure non sono supportati per questa funzionalità. Il supporto per l'overlay CNI è previsto per agosto 2025.

  1. Passare al cluster nel portale di Azure. Nella barra laterale passare al pannello Impostazioni -> Pool di nodi.
  2. Identificare il pool di nodi da cui si vuole eseguire un'analisi della connettività. Fare clic sul pool di nodi per selezionarlo come ambito.
  3. Selezionare "Analisi della connettività (anteprima)" sulla barra degli strumenti nella parte superiore della pagina. Se non viene visualizzato, fare clic sui tre puntini "..." nella barra degli strumenti nella parte superiore della pagina per aprire il menu espanso. Un utente esegue l'analisi della connettività in un pool di nodi selezionato.
  4. Selezionare un'istanza del set di scalabilità di macchine virtuali (VMSS) come origine. Gli indirizzi IP di origine vengono popolati automaticamente.
  5. Selezionare un nome di dominio pubblico/endpoint come destinazione per l'analisi, un esempio è mcr.microsoft.com. Anche gli indirizzi IP di destinazione vengono popolati automaticamente.
  6. Eseguire l'analisi e attendere fino a 2 minuti per i risultati. Nel diagramma risultante identificare le risorse di rete di Azure associate e la posizione in cui viene bloccato il traffico. Per visualizzare l'output dettagliato dell'analisi, fare clic sulla scheda "Output JSON" o fare clic sulle frecce nel diagramma.

Risoluzione dei problemi manuali

Se lo strumento Verifica rete virtuale di Azure (anteprima) non fornisce informazioni sufficienti sul problema, è possibile risolvere manualmente gli errori di connettività in uscita usando il protocollo SSH (Secure Shell Protocol) per connettersi al nodo. Per stabilire la connessione, seguire le istruzioni in Connettersi ai nodi del cluster servizio Azure Kubernetes (servizio Azure Kubernetes) per la manutenzione o la risoluzione dei problemi. Testare quindi la connettività nel cluster seguendo questa procedura:

  1. Dopo la connessione al nodo, eseguire i nc comandi e dig :

    nc -vz mcr.microsoft.com 443 
    dig mcr.microsoft.com 443
    

    Note

    Se non è possibile accedere al nodo tramite SSH, è possibile testare la connettività in uscita eseguendo il comando az vmss run-command invoke sull'istanza del set di scalabilità di macchine virtuali:

    # Get the VMSS instance IDs.
    az vmss list-instances --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --output table
    
    # Use an instance ID to test outbound connectivity.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "nc -vz mcr.microsoft.com 443"
    
  2. Se si tenta di creare un cluster del servizio Azure Kubernetes usando un proxy HTTP, eseguire i nccomandi , curle dig dopo la connessione al nodo:

    # Test connectivity to the HTTP proxy server from the AKS node.
    nc -vz <http-s-proxy-address> <port>
    
    # Test traffic from the HTTP proxy server to HTTPS.
    curl --proxy http://<http-proxy-address>:<port>/ --head https://mcr.microsoft.com
    
    # Test traffic from the HTTPS proxy server to HTTPS.
    curl --proxy https://<https-proxy-address>:<port>/ --head https://mcr.microsoft.com
    
    # Test DNS functionality.
    dig mcr.microsoft.com 443
    

    Note

    Se non è possibile accedere al nodo tramite SSH, è possibile testare la connettività in uscita eseguendo il az vmss run-command invoke comando sull'istanza del set di scalabilità di macchine virtuali:

    # Get the VMSS instance IDs.
    az vmss list-instances --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --output table
    
    # Use an instance ID to test connectivity from the HTTP proxy server to HTTPS.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "curl --proxy http://<http-proxy-address>:<port>/ --head https://mcr.microsoft.com"
    
    # Use an instance ID to test connectivity from the HTTPS proxy server to HTTPS.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "curl --proxy https://<https-proxy-address>:<port>/ --head https://mcr.microsoft.com"
    
    # Use an instance ID to test DNS functionality.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "dig mcr.microsoft.com 443"
    

Solution

La tabella seguente elenca i motivi specifici per cui il traffico potrebbe essere bloccato e la soluzione corrispondente per ogni motivo:

Issue Solution
Il traffico è bloccato dalle regole del firewall, da un server proxy o da un gruppo di sicurezza di rete (NSG) Questo problema si verifica quando le porte richieste del servizio Azure Kubernetes o i nomi di dominio completi (FQDN) sono bloccati da un firewall, un server proxy o un gruppo di sicurezza di rete. Verificare che queste porte e FQDN siano consentite. Per determinare cosa è bloccato, controllare la connettività fornita nella sezione Causa precedente. Per altre informazioni sulle porte e i nomi di dominio completi necessari per il servizio Azure Kubernetes, vedere Regole di rete in uscita e FQDN per cluster servizio Azure Kubernetes (AKS).
Il record AAAA (IPv6) è bloccato nel firewall Nel firewall verificare che non esista nulla che impedisca la risoluzione dell'endpoint in DNS di Azure.
Il cluster privato non è in grado di risolvere le risorse interne di Azure Nei cluster privati, l'indirizzo IP DNS di Azure (168.63.129.16) deve essere aggiunto come server DNS upstream se viene usato DNS personalizzato. Verificare che l'indirizzo sia impostato nei server DNS. Per altre informazioni, vedere Creare un cluster del servizio Azure Kubernetes privato e Che cos'è l'indirizzo IP 168.63.129.16?.

Maggiori informazioni

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, è possibile porre domande al supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.