Felsök felkoden OutboundConnFailVMExtensionError (50)
I den här artikeln beskrivs hur du identifierar och löser felet OutboundConnFailVMExtensionError
(även kallat felkod ERR_OUTBOUND_CONN_FAIL
, felnummer 50) som kan inträffa om du försöker starta eller skapa och distribuera ett AkS-kluster (Microsoft Azure Kubernetes Service).
Förutsättningar
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. Mer https://aka.ms/aks-required-ports-and-addresses 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: ansluta till mcr.microsoft.com port 443 (tcp) misslyckades: Anslutningens tidsgräns uppnåddes\nKommandot avslutades utan nollstatus
Felinformation: "vmssCSE-felmeddelanden: {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}
Orsak
Det anpassade skripttillägget som hämtar de nödvändiga komponenterna för att tillhandahålla 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-slutpunkten (mcr.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 AKS-klusternoder (Azure Kubernetes Service) för underhåll eller felsökning. Testa sedan anslutningen i klustret genom att följa dessa steg:
När du har anslutit till noden kör du kommandona
nc
ochdig
:nc -vz mcr.microsoft.com 443 dig mcr.microsoft.com 443
Kommentar
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"
Om du försöker skapa ett AKS-kluster med hjälp av en HTTP-proxy kör
nc
du kommandona ,curl
ochdig
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
Kommentar
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.
Problem | 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 klusternätverkssäkerhetsgrupp (NSG) | På alla NSG:er som är anslutna till ditt kluster ska du kontrollera 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 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. |
Privat 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.