Udostępnij za pośrednictwem


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

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
  1. Problem dotyczy żądania klienta.
  2. Bloker sieciowy istnieje między klientem a serwerem.
  1. Żądana strona nie istnieje lub klient nie ma uprawnień dostępu do strony.
  2. Ruch jest blokowany przez sieciową grupę zabezpieczeń lub zaporę.
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:

  1. W witrynie Azure Portal wyszukaj i wybierz pozycję Zestawy skalowania maszyn wirtualnych.

  2. Na liście zestawów skalowania wybierz zestaw skalowania używany dla klastra usługi AKS.

  3. W okienku nawigacji zestawu skalowania przejdź do sekcji Monitorowanie , a następnie wybierz pozycję Metryki.

  4. 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:

  1. W witrynie Azure Portal wyszukaj i wybierz pozycję Usługi Kubernetes.

  2. Na liście usług Kubernetes wybierz nazwę klastra usługi AKS.

  3. W okienku nawigacji klastra usługi AKS przejdź do sekcji Monitorowanie , a następnie wybierz pozycję Zalecenia usługi Advisor.

  4. 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:

  1. 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.

  2. 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.