Rozwiązywanie problemów z połączeniami z punktami końcowymi spoza sieci wirtualnej
W tym artykule omówiono sposób rozwiązywania problemów z połączeniami z punktami końcowymi spoza sieci wirtualnej (czyli za pośrednictwem publicznego Internetu) z klastra usługi Microsoft Azure Kubernetes Service (AKS).
Wymagania wstępne
Narzędzie adresu URL klienta (curl).
Narzędzie Kubernetes kubectl lub podobne narzędzie do nawiązywania połączenia z klastrem. Aby zainstalować narzędzie kubectl przy użyciu interfejsu wiersza polecenia platformy Azure, uruchom polecenie az aks install-cli .
Lista kontrolna rozwiązywania problemów
Czy problem jest trwały?
Krok 1. Podstawowe kroki rozwiązywania problemów
Upewnij się, że możesz nawiązać połączenie z publicznymi punktami końcowymi w Internecie. Aby uzyskać instrukcje, zobacz Podstawowe rozwiązywanie problemów z wychodzących połączeń klastra usługi AKS.
Krok 2. Określanie typu ruchu wychodzącego dla klastra usługi AKS
Aby zidentyfikować typ ruchu wychodzącego klastra usługi AKS, uruchom polecenie az aks show :
az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"
Jeśli typ ruchu wychodzącego to loadBalancer
, nie ma tabeli tras, chyba że używasz sieci kubenet . Jeśli używasz usługi kubenet, upewnij się, że domyślna tabela tras nie ma dodatkowej konfiguracji blokującej wychodzące połączenie internetowe. Jeśli używasz innej sieci, takiej jak Azure CNI, alokacja dynamiczna lub nakładka usługi Azure CNI, domyślnie nie jest tworzona żadna tabela tras. W takim przypadku upewnij się, że sieciowa grupa zabezpieczeń (sieciowa grupa zabezpieczeń) nie ma niestandardowej konfiguracji blokującej wychodzące połączenie internetowe.
Jeśli typ ruchu wychodzącego to userDefinedRouting
, upewnij się, że spełnione są następujące warunki:
Urządzenie wychodzące (zapora lub serwer proxy) jest osiągalne.
Urządzenie wychodzące zezwala na wymagany ruch wychodzący z klastra.
Aby uzyskać listę nazw FQDN dozwolonych dla klastra usługi AKS, uruchom polecenie az aks egress-endpoints list :
az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
Jeśli typ ruchu wychodzącego to managedNATGateway
, sprawdź, czy podsieć usługi AKS jest skojarzona z bramą translatora adresów sieciowych, uruchamiając polecenie az network nat gateway show :
az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"
Aby uzyskać więcej informacji na temat używania bramy translatora adresów sieciowych razem z usługą AKS, zobacz Zarządzana brama translatora adresów sieciowych.
Krok 3. Sprawdzanie danych wyjściowych narzędzia curl podczas nawiązywania połączenia z zasobnikiem aplikacji
Kody odpowiedzi curl mogą pomóc w zidentyfikowaniu typu problemu. Po udostępnieniu kodu odpowiedzi spróbuj lepiej zrozumieć, jak działa problem. Aby uzyskać więcej informacji na temat kodów stanu HTTP i podstawowego zachowania problemu, zapoznaj się z poniższą tabelą.
Źródło informacji | Link |
---|---|
Urząd numerów przypisanych do Internetu (IANA) | Rejestr kodu stanu protokołu HTTP (Hypertext Transfer Protocol) |
Mozilla | Kody stanu odpowiedzi HTTP |
Wikipedia | Lista kodów stanu HTTP |
Poniższe kody stanu HTTP mogą wskazywać wymienione problemy.
Kod stanu HTTP | Problem | Przykład |
---|---|---|
4xx |
|
|
5xx |
Problem dotyczy serwera. | Aplikacja nie działa lub brama nie działa. |
Możesz spróbować nawiązać połączenie z punktem końcowym aplikacji przy użyciu narzędzia curl. Oto przykładowe polecenie i dane wyjściowe:
# 404 error code example
$ curl -vv <host IP address>/test.index
* Trying <host IP address>:80...
* TCP_NODELAY set
* Connected to <host IP address> (<host IP address>) port 80 (#0)
> GET /test.index HTTP/1.1
> Host: <host IP address>
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
...
* Connection #0 to host <host IP address> left intact
Krok 4. Sprawdzanie, co się stanie, jeśli ruch wychodzący tymczasowo pomija urządzenie wirtualne
W celu szybkiego testowania w celu określenia, czy urządzenie wychodzące (urządzenie wirtualne) powoduje problem, możesz tymczasowo zezwolić na ruch przez Internet. Aby skonfigurować tę konfigurację, możesz zmienić domyślny adres IP i trasę 0.0.0.0
/0
portu za pośrednictwem urządzenia wirtualnego, aby przejść przez Internet.
Jeśli urządzenie wychodzące działa dobrze podczas pomijania urządzenia wirtualnego, sprawdź dzienniki urządzenia wirtualnego, aby sprawdzić, które pakiety są odrzucane, i odpowiednio dodać reguły zezwalania na urządzenie wirtualne.
Czy problem występuje sporadycznie?
Z wielu powodów mogą wystąpić sporadyczne problemy z liczbą ruchu wychodzącego. Aby rozwiązać sporadyczne problemy z połączeniem wychodzącym, spróbuj wykonać następujące czynności:
Krok 1. Sprawdzanie, czy zasoby zasobnika lub węzła są wyczerpane
Uruchom następujące polecenia, aby sprawdzić, ile zasobów są używane:
kubectl top pods
kubectl top nodes
Krok 2. Sprawdzanie, czy dysk systemu operacyjnego jest intensywnie używany
Aby sprawdzić, czy dysk systemu operacyjnego jest intensywnie używany, wykonaj następujące kroki:
W witrynie Azure Portal wyszukaj i wybierz pozycję Zestawy skalowania maszyn wirtualnych.
Na liście zestawów skalowania wybierz zestaw skalowania używany dla klastra usługi AKS.
W okienku nawigacji zestawu skalowania przejdź do sekcji Monitorowanie , a następnie wybierz pozycję Metryki.
Wyświetl metryki dysku dla zestawu skalowania w sekcji Metryki , wyszukując następujące pola.
Pole Wartość Zakres Nazwa usługi VMSS Przestrzeń nazw metryk Host maszyny wirtualnej Metryki Metryka dysku systemu operacyjnego i danych
Aby uzyskać więcej informacji na temat metryk, zobacz Metryki dysku systemu operacyjnego i dysku danych.
Aby wyświetlić zalecenia usługi AKS dotyczące wykorzystania dysku, wykonaj następujące kroki:
W witrynie Azure Portal wyszukaj i wybierz pozycję Usługi Kubernetes.
Na liście usług Kubernetes wybierz nazwę klastra usługi AKS.
W okienku nawigacji klastra usługi AKS przejdź do sekcji Monitorowanie , a następnie wybierz pozycję Zalecenia usługi Advisor.
Przejrzyj wymienione zalecenia dotyczące użycia dysku.
Jeśli dysk systemu operacyjnego jest intensywnie używany, rozważ użycie następujących środków zaradczych:
Zwiększ rozmiar dysku systemu operacyjnego.
Przełącz się na efemeryczne dyski systemu operacyjnego.
Jeśli te środki zaradcze nie rozwiążą problemu, przeanalizuj proces, który wykonuje duże operacje odczytu/zapisu na dysku. Następnie sprawdź, czy akcje można przenieść na dysk danych zamiast dysku systemu operacyjnego.
Krok 3. Sprawdzanie, czy źródłowy port tłumaczenia adresów sieciowych jest wyczerpany
Jeśli aplikacje tworzą wiele połączeń wychodzących, mogą wyczerpać liczbę dostępnych portów na adresie IP urządzenia wychodzącego. Postępuj zgodnie z diagnostyką modułu równoważenia obciążenia w warstwie Standardowa z metrykami, alertami i kondycją zasobów, aby monitorować użycie i alokację portu źródłowego translatora adresów sieciowych (SNAT) istniejącego modułu równoważenia obciążenia. Monitoruj, aby zweryfikować lub określić ryzyko wyczerpania portów SNAT.
Czy osiągasz lub przekraczasz maksymalną liczbę przydzielonych portów SNAT? W takim przypadku możesz sprawdzić aplikację, aby określić, czy używa ona istniejących połączeń. Aby uzyskać więcej informacji, zobacz Projektowanie aplikacji pod kątem wydajnego korzystania z połączeń.
Jeśli uważasz, że aplikacja jest poprawnie skonfigurowana i potrzebujesz więcej portów SNAT niż domyślna liczba przydzielonych portów, wykonaj następujące kroki:
Zwiększ liczbę publicznych adresów IP na urządzeniu ruchu wychodzącego. Jeśli urządzenie odpowiedzialne za ruch wychodzący jest modułem równoważenia obciążenia, możesz zwiększyć liczbę publicznych adresów IP w module równoważenia obciążenia.
Zwiększ liczbę portów na węzeł dla węzłów roboczych usługi AKS.
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.