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 tenta di avviare o creare e distribuire un cluster di Microsoft servizio Azure Kubernetes (servizio Azure Kubernetes).

Prerequisiti

  • Strumento da riga di comando Netcat (nc)

  • Strumento da riga di comando di scavo

  • Strumento URL client (cURL)

Sintomi

Quando si tenta di avviare o creare un cluster del servizio Azure Kubernetes, viene visualizzato il messaggio di errore seguente:

Non è possibile stabilire la connessione in uscita dagli agenti. Per altre informazioni, vedere https://aka.ms/aks-required-ports-and-addresses .

Dettagli: Code="VMExtensionProvisioningError"

Message="La macchina virtuale ha segnalato un errore durante l'elaborazione dell'estensione 'vmssCSE'.

Messaggio di errore: "Enable failed: failed to execute command: command terminated 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 diverso da zero status

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

Causa

L'estensione script personalizzata che scarica i componenti necessari per effettuare il provisioning dei nodi non è in grado di 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) (mcr.microsoft.com) sulla porta 443.

Esistono molti motivi per cui il traffico potrebbe essere bloccato. In una di queste situazioni, il modo migliore per testare la connettività consiste nell'usare il protocollo Secure Shell (SSH) per connettersi al nodo. Per effettuare la connessione, seguire le istruzioni riportate 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 aver eseguito la connessione al nodo, eseguire i nc comandi e dig :

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

    Nota

    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
    

    Nota

    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"
    

Soluzione

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

Problema Soluzione
Il traffico è bloccato dalle regole del firewall o da un server proxy In questo scenario, un firewall o un server proxy applica filtri in uscita. Per verificare che tutti i domini e le porte necessari siano consentiti, vedere Controllare il traffico in uscita per i nodi del cluster in servizio Azure Kubernetes (servizio Azure Kubernetes).
Il traffico è bloccato da un gruppo di sicurezza di rete del cluster (NSG) In qualsiasi gruppo di sicurezza di rete collegato al cluster, verificare che non vi sia alcun blocco sulla porta 443, sulla porta 53 o su qualsiasi altra porta che potrebbe essere necessario usare per connettersi all'endpoint. Per altre informazioni, vedere Controllare il traffico in uscita per i nodi del cluster in servizio Azure Kubernetes (servizio Azure Kubernetes).
Il record AAAA (IPv6) è bloccato nel firewall Nel firewall verificare che non esista nulla che impedirebbe 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 si usa 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?

Ulteriori 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 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.