Przechwytywanie zrzutu TCP z węzła systemu Linux w klastrze usługi AKS
Problemy z siecią mogą wystąpić, gdy używasz klastra usługi Microsoft Azure Kubernetes Service (AKS). Aby pomóc w zbadaniu tych problemów, w tym artykule wyjaśniono, jak przechwycić zrzut TCP z węzła systemu Linux w klastrze usługi AKS, a następnie pobrać przechwytywanie na maszynę lokalną.
Wymagania wstępne
- Narzędzie Kubernetes kubectl . Aby zainstalować narzędzie kubectl przy użyciu interfejsu wiersza polecenia platformy Azure, uruchom polecenie az aks install-cli .
- Klaster usługi AKS. Jeśli nie masz klastra usługi AKS, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure lub za pośrednictwem Azure Portal.
- Narzędzie wiersza polecenia tcpdump zainstalowane w węźle systemu Linux.
Uwaga
Przechwytywanie TCP można zautomatyzować za pomocą wykresu helm, który może być uruchamiany w tle jako DemonSet. Aby uzyskać więcej informacji, zobacz to niestandardowe narzędzie GitHub do przechwytywania zrzutów TCP lub wykonaj kroki opisane w poniższych sekcjach.
Krok 1. Znajdowanie węzłów do rozwiązywania problemów
Jak określić, z którego węzła ściągnąć zrzut TCP? Najpierw uzyskasz listę węzłów w klastrze usługi AKS przy użyciu klienta wiersza polecenia Kubernetes kubectl. Postępuj zgodnie z instrukcjami, aby nawiązać połączenie z klastrem i uruchomić kubectl get nodes --output wide
polecenie przy użyciu Azure Portal lub interfejsu wiersza polecenia platformy Azure. Zostanie wyświetlona lista węzłów podobna do następujących danych wyjściowych:
$ kubectl get nodes --output wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
aks-agentpool-34796016-vmss000000 Ready agent 45h v1.20.9 10.240.1.81 <none> Ubuntu 18.04.6 LTS 5.4.0-1062-azure containerd://1.4.9+azure
aks-agentpool-34796016-vmss000002 Ready agent 45h v1.20.9 10.240.2.47 <none> Ubuntu 18.04.6 LTS 5.4.0-1062-azure containerd://1.4.9+azure
Krok 2. Nawiązywanie połączenia z węzłem systemu Linux
Następnym krokiem jest nawiązanie połączenia z węzłem klastra usługi AKS, z których chcesz przechwycić ślad sieci. Aby uzyskać więcej informacji, zobacz Tworzenie interaktywnego połączenia powłoki z węzłem systemu Linux.
Krok 3. Upewnij się, że zainstalowano protokół tcpdump
Po nawiązaniu połączenia z węzłem systemu Linux usługi AKS sprawdź, czy narzędzie tcpdump zostało wcześniej zainstalowane w węźle, uruchamiając polecenie tcpdump --version
. Jeśli tcpdump nie został zainstalowany, zostanie wyświetlony następujący tekst błędu:
# tcpdump --version
bash: tcpdump: command not found
Następnie zainstaluj narzędzie tcpdump na zasobniku, uruchamiając narzędzie do obsługi pakietów narzędzia Advanced Package Tool, apt-get:
apt-get update && apt-get install tcpdump
Jeśli tcpdump jest zainstalowany, zostanie wyświetlony tekst podobny do następującego:
# tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.1.1 11 Sep 2018
Krok 4. Tworzenie przechwytywania pakietów
Aby przechwycić zrzut, uruchom polecenie tcpdump w następujący sposób:
# tcpdump --snapshot-length=0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 6
Gdy śledzenie jest uruchomione, wielokrotnie replikuj problem. Ta akcja gwarantuje, że problem został przechwycony w ramach zrzutu TCP. Zwróć uwagę na sygnaturę czasową podczas replikowania problemu. Aby zatrzymać przechwytywanie pakietów po zakończeniu, naciśnij klawisze Ctrl+C:
# tcpdump -s 0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C526 packets captured
526 packets received by filter
0 packets dropped by kernel
Krok 5. Przenoszenie przechwytywania lokalnie
Po zakończeniu przechwytywania pakietów zidentyfikuj zasobnik pomocnika, aby można było skopiować zrzut lokalnie. Otwórz drugą konsolę, a następnie uzyskaj listę zasobników, uruchamiając polecenie kubectl get pods
, jak pokazano poniżej.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
azure-vote-back-6c4dd64bdf-m4nk7 1/1 Running 0 3m29s
azure-vote-front-85b4df594d-jhpzw 1/1 Running 0 3m29s
node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2 1/1 Running 0 60s
Zasobnik pomocnika ma prefiks , node-debugger-aks
jak pokazano w trzecim wierszu. Zastąp nazwę zasobnika, a następnie uruchom następujące polecenie kubectl. Te polecenia pobierają przechwytywanie pakietów dla węzła systemu Linux.
kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap
Zastrzeżenie dotyczące innych firm
Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.
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 platformy Azure.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla