Felsök felkoden OutboundConnFailVMExtensionError (50)

Den här artikeln beskriver hur du identifierar och löser OutboundConnFailVMExtensionError felet (även kallat felkodERR_OUTBOUND_CONN_FAIL, felnummer 50) som kan inträffa om du försöker starta eller skapa och distribuera ett Microsoft Azure Kubernetes Service-kluster (AKS).

Förutsättningar

  • Kommandoradsverktyget Netcat (nc)

  • Kommandoradsverktyget dig

  • Verktyget Klient-URL (cURL)

Symptom

När du försöker starta eller skapa ett AKS-kluster får du följande felmeddelande:

Det går inte att upprätta utgående anslutning från agenter. https://aka.ms/aks-required-ports-and-addresses Mer information finns i.

Information: Code="VMExtensionProvisioningError"

Message="VM har rapporterat ett fel vid bearbetning av tillägget "vmssCSE".

Felmeddelande: "Aktivera misslyckades: det gick inte att köra kommandot: kommandot avslutades med slutstatus=50\n[stdout]\n\n[stderr]\nnc: anslut till mcr.microsoft.com port 443 (tcp) misslyckades: Anslutningens tidsgräns uppnåddes\nkommandot avslutades med statusen inte noll

Felinformation: "vmssCSE felmeddelanden: {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}

Orsak

Det anpassade skripttillägget som laddar ned nödvändiga komponenter för att etablera noderna kunde inte upprätta den nödvändiga utgående anslutningen för att hämta paket. För offentliga kluster försöker noderna kommunicera med MCR-slutpunktenmcr.microsoft.com (Microsoft Container Registry) på port 443.

Det finns många orsaker till att trafiken kan blockeras. I någon av dessa situationer är det bästa sättet att testa anslutningen att använda Secure Shell-protokollet (SSH) för att ansluta till noden. För att upprätta anslutningen följer du anvisningarna i Anslut till Azure Kubernetes Service -klusternoder (AKS) för underhåll eller felsökning. Testa sedan anslutningen i klustret genom att följa dessa steg:

  1. När du har anslutit till noden kör du kommandona nc och dig :

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

    Obs!

    Om du inte kan komma åt noden via SSH kan du testa den utgående anslutningen genom att köra kommandot az vmss run-command invoke mot vm-skalningsuppsättningsinstansen:

    # 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. Om du försöker skapa ett AKS-kluster med hjälp av en HTTP-proxy kör ncdu kommandona , curloch dig när du har anslutit till noden:

    # 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
    

    Obs!

    Om du inte kan komma åt noden via SSH kan du testa den utgående anslutningen genom att köra az vmss run-command invoke kommandot mot vm-skalningsuppsättningsinstansen:

    # 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"
    

Lösning

I följande tabell visas specifika orsaker till varför trafik kan blockeras och motsvarande lösning av varje orsak.

Fråga Lösning
Trafik blockeras av brandväggsregler eller en proxyserver I det här scenariot utför en brandvägg eller en proxyserver utgående filtrering. Information om hur du kontrollerar att alla nödvändiga domäner och portar är tillåtna finns i Kontrollera utgående trafik för klusternoder i Azure Kubernetes Service (AKS).
Trafiken blockeras av en nätverkssäkerhetsgrupp för kluster (NSG) På NSG:er som är anslutna till klustret kontrollerar du att det inte finns någon blockering på port 443, port 53 eller någon annan port som kan behöva användas för att ansluta till slutpunkten. Mer information finns i Kontrollera utgående trafik för klusternoder i Azure Kubernetes Service (AKS).
AAAA-posten (IPv6) blockeras i brandväggen Kontrollera att det inte finns något som hindrar slutpunkten från att matcha i Azure DNS i brandväggen.
Privata kluster kan inte lösa interna Azure-resurser I privata kluster måste Azure DNS IP-adressen (168.63.129.16) läggas till som en överordnad DNS-server om anpassad DNS används. Kontrollera att adressen har angetts på dns-servrarna. Mer information finns i Skapa ett privat AKS-kluster och Vad är IP-adress 168.63.129.16?

Mer information

Ansvarsfriskrivning för tredje part

Microsoft tillhandahåller kontaktinformation från tredje part som hjälper dig att hitta ytterligare information om det här ämnet. Denna kontaktinformation kan ändras utan föregående meddelande. Microsoft garanterar inte att kontaktinformation från tredje part är korrekt.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.