Problembehandlung beim Fehlercode OutboundConnFailVMExtensionError (50)
In diesem Artikel wird beschrieben, wie Sie den OutboundConnFailVMExtensionError
Fehler identifizieren und beheben (auch als Fehlercode ERR_OUTBOUND_CONN_FAIL
bezeichnet , Fehlernummer 50), der auftreten kann, wenn Sie versuchen, einen Microsoft Azure Kubernetes Service (AKS)-Cluster zu starten oder bereitzustellen.
Voraussetzungen
Das Befehlszeilentool Netcat (nc)
Das Client-URL-Tool (cURL)
Symptome
Wenn Sie versuchen, einen AKS-Cluster zu starten oder zu erstellen, erhalten Sie die folgende Fehlermeldung:
Die ausgehende Verbindung von Agents kann nicht hergestellt werden. Weitere Informationen finden Sie unter https://aka.ms/aks-required-ports-and-addresses .
Details: Code="VMExtensionProvisioningError"
Message="VM hat beim Verarbeiten der Erweiterung 'vmssCSE' einen Fehler gemeldet.
Fehlermeldung: "Fehler beim Ausführen des Befehls: Befehl wurde mit dem Beendigungsstatus =50\n[stdout]\n\n\n[stderr]\nnc: Herstellen einer Verbindung mit mcr.microsoft.com Port 443 (tcp) fehlgeschlagen: Fehler beim Beenden der Verbindung\nBefehl, der mit dem Status ungleich Null beendet wurde.
Fehlerdetails: "vmssCSE Fehlermeldungen : {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}
Ursache
Die benutzerdefinierte Skripterweiterung, die die erforderlichen Komponenten zum Bereitstellen der Knoten herunterlädt, konnte die erforderliche ausgehende Verbindung zum Abrufen von Paketen nicht einrichten. Bei öffentlichen Clustern versuchen die Knoten, mit dem Microsoft Container Registry (MCR)-Endpunkt (mcr.microsoft.com
) an Port 443 zu kommunizieren.
Es gibt viele Gründe, warum der Datenverkehr blockiert werden kann. In einem dieser Situationen besteht die beste Möglichkeit zum Testen der Konnektivität darin, das Secure Shell-Protokoll (SSH) zum Herstellen einer Verbindung mit dem Knoten zu verwenden. Um die Verbindung herzustellen, befolgen Sie die Anweisungen in "Herstellen einer Verbindung mit Azure Kubernetes Service (AKS)-Clusterknoten zur Wartung oder Problembehandlung". Testen Sie dann die Konnektivität auf dem Cluster, indem Sie die folgenden Schritte ausführen:
Führen Sie nach der Verbindung mit dem Knoten die
nc
folgendendig
Befehle aus:nc -vz mcr.microsoft.com 443 dig mcr.microsoft.com 443
Notiz
Wenn Sie nicht über SSH auf den Knoten zugreifen können, können Sie die ausgehende Konnektivität testen, indem Sie den Befehl "az vmss run-command invoke " für die Vm Scale Set-Instanz ausführen:
# 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"
Wenn Sie versuchen, einen AKS-Cluster mithilfe eines HTTP-Proxys zu erstellen, führen Sie die
nc
Befehlecurl
unddig
Befehle aus, nachdem Sie eine Verbindung mit dem Knoten hergestellt haben:# 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
Notiz
Wenn Sie nicht über SSH auf den Knoten zugreifen können, können Sie die ausgehende Konnektivität testen, indem Sie den
az vmss run-command invoke
Befehl für die Vm Scale Set-Instanz ausführen:# 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ösung
In der folgenden Tabelle sind spezifische Gründe aufgeführt, warum Datenverkehr blockiert werden kann, und die entsprechende Lösung aus jedem Grund.
Problem | Lösung |
---|---|
Datenverkehr wird durch Firewallregeln oder einen Proxyserver blockiert. | In diesem Szenario führt eine Firewall oder ein Proxyserver die Filterung aus. Informationen zum Überprüfen, ob alle erforderlichen Domänen und Ports zulässig sind, finden Sie unter Steuern des Ausgehenden Datenverkehrs für Clusterknoten in Azure Kubernetes Service (AKS).To verify that all required domains and ports are allowed, see Control egress traffic for cluster nodes in Azure Kubernetes Service (AKS). |
Datenverkehr wird durch eine Clusternetzwerksicherheitsgruppe (NSG) blockiert. | Vergewissern Sie sich bei allen an Ihren Cluster angefügten NSGs, dass es keine Blockierung an Port 443, Port 53 oder einem anderen Port gibt, der unter Umständen zum Herstellen einer Verbindung mit dem Endpunkt verwendet werden muss. Weitere Informationen finden Sie unter Steuern des ausgehenden Datenverkehrs für Clusterknoten in Azure Kubernetes Service (AKS). |
Der AAAA-Eintrag (IPv6) wird in der Firewall blockiert. | Überprüfen Sie in Ihrer Firewall, ob nichts vorhanden ist, das die Auflösung des Endpunkts in Azure DNS blockiert. |
Privater Cluster kann interne Azure-Ressourcen nicht auflösen | In privaten Clustern muss die Azure DNS-IP-Adresse (168.63.129.16 ) als upstream-DNS-Server hinzugefügt werden, wenn benutzerdefiniertes DNS verwendet wird. Stellen Sie sicher, dass die Adresse auf Ihren DNS-Servern festgelegt ist. Weitere Informationen finden Sie unter Erstellen eines privaten AKS-Clusters und Was ist IP-Adresse 168.63.129.16? |
Weitere Informationen
Haftungsausschluss für Kontaktinformationen von Drittanbietern
Die Kontaktinformationen zu den in diesem Artikel erwähnten Drittanbietern sollen Ihnen helfen, zusätzliche Informationen zu diesem Thema zu finden. Diese Kontaktinformationen können ohne vorherige Ankündigung geändert werden. Sie werden von Microsoft ohne jede Gewähr weitergegeben.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.