Rozwiązywanie problemów z kodem błędu OutboundConnFailVMExtensionError (50)
W tym artykule opisano sposób identyfikowania i rozwiązywania błędu OutboundConnFailVMExtensionError
(znanego również jako kod ERR_OUTBOUND_CONN_FAIL
błędu , numer błędu 50), który może wystąpić, jeśli spróbujesz uruchomić lub utworzyć i wdrożyć klaster usługi Microsoft Azure Kubernetes Service (AKS).
Wymagania wstępne
Narzędzie wiersza polecenia Netcat (nc)
Narzędzie Adres URL klienta (cURL)
Symptomy
Podczas próby rozpoczęcia lub usunięcia klastra usługi AKS zostanie wyświetlony następujący komunikat o błędzie:
Nie można ustanowić połączenia wychodzącego z agentów, zobacz https://aka.ms/aks-required-ports-and-addresses , aby uzyskać więcej informacji.
Szczegóły: Code="VMExtensionProvisioningError"
Message="Maszyna wirtualna zgłosiła błąd podczas przetwarzania rozszerzenia "vmssCSE".
Komunikat o błędzie: "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 non-zero status
Szczegóły błędu: "vmssCSE error messages : {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}
Przyczyna
Niestandardowe rozszerzenie skryptu, które pobiera niezbędne składniki do aprowizacji węzłów, nie mogło ustanowić niezbędnej łączności wychodzącej w celu uzyskania pakietów. W przypadku klastrów publicznych węzły próbują komunikować się z punktem końcowym usługi Microsoft Container Registry (mcr.microsoft.com
MCR) na porcie 443.
Istnieje wiele powodów, dla których ruch może zostać zablokowany. W dowolnej z tych sytuacji najlepszym sposobem na przetestowanie łączności jest użycie protokołu SSH (Secure Shell Protocol) w celu nawiązania połączenia z węzłem. Aby nawiązać połączenie, postępuj zgodnie z instrukcjami w temacie Nawiązywanie połączenia z węzłami klastra usługi Azure Kubernetes Service (AKS) na potrzeby konserwacji lub rozwiązywania problemów. Następnie przetestuj łączność w klastrze, wykonując następujące kroki:
Po nawiązaniu połączenia z węzłem uruchom
nc
polecenia idig
:nc -vz mcr.microsoft.com 443 dig mcr.microsoft.com 443
Uwaga 16.
Jeśli nie możesz uzyskać dostępu do węzła za pośrednictwem protokołu SSH, możesz przetestować łączność wychodzącą, uruchamiając polecenie az vmss run-command invoke względem wystąpienia zestawu skalowania maszyn wirtualnych:
# 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"
Jeśli spróbujesz utworzyć klaster usługi AKS przy użyciu serwera proxy HTTP, uruchom
nc
polecenia ,curl
idig
po nawiązaniu połączenia z węzłem:# 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
Uwaga 16.
Jeśli nie możesz uzyskać dostępu do węzła za pośrednictwem protokołu SSH, możesz przetestować łączność wychodzącą, uruchamiając
az vmss run-command invoke
polecenie względem wystąpienia zestawu skalowania maszyn wirtualnych:# 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"
Rozwiązanie
W poniższej tabeli wymieniono konkretne przyczyny, dla których ruch może być blokowany, oraz odpowiednie rozwiązanie z każdego powodu.
| Problem | Rozwiązanie | | ----- | -------- | | Ruch jest blokowany przez reguły zapory, serwer proxy lub sieciową grupę zabezpieczeń | Ten problem występuje, gdy wymagane porty usługi AKS lub w pełni kwalifikowane nazwy domen (FQDN) są blokowane przez zaporę, serwer proxy lub sieciową grupę zabezpieczeń. Upewnij się, że te porty i nazwy FQDN są dozwolone. Aby określić, co jest zablokowane, sprawdź łączność podaną w sekcji Preceeding Cause (Przyczyna). Aby uzyskać więcej informacji na temat wymaganych portów i nazw FQDN usługi AKS, zobacz Reguły sieci wychodzącej i nazwy FQDN dla klastrów usługi Azure Kubernetes Service (AKS).| | Rekord AAAA (IPv6) jest zablokowany w zaporze | W zaporze sprawdź, czy w usłudze Azure DNS nie ma żadnych informacji, które uniemożliwią rozpoznawanie punktu końcowego w usłudze Azure DNS. | | Klaster prywatny nie może rozpoznać wewnętrznych zasobów platformy Azure | W klastrach prywatnych adres IP usługi Azure DNS (168.63.129.16
) należy dodać jako nadrzędny serwer DNS, jeśli jest używany niestandardowy system DNS. Sprawdź, czy adres jest ustawiony na serwerach DNS. Aby uzyskać więcej informacji, zobacz Tworzenie prywatnego klastra usługi AKS i Co to jest adres IP 168.63.129.16? |
Więcej informacji
Wyłączenie odpowiedzialności za kontakty z osobami trzecimi
Firma Microsoft udostępnia informacje kontaktowe innych firm, aby uzyskać dodatkowe informacje na temat tego tematu. Informacje te mogą zostać zmienione bez powiadomienia. Firma Microsoft nie gwarantuje dokładności informacji kontaktowych innych firm.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.