Erfassen eines TCP-Speicherabbilds von einem Windows-Knoten in einem AKS-Cluster
Netzwerkprobleme können auftreten, wenn Sie einen AKS-Cluster (Microsoft Azure Kubernetes Service) verwenden. Um diese Probleme zu untersuchen, wird in diesem Artikel erläutert, wie Sie ein TCP-Speicherabbild von einem Windows-Knoten in einem AKS-Cluster erfassen und dann die Erfassung auf Ihren lokalen Computer herunterladen.
Voraussetzungen
- Azure CLI, Version 2.0.59 oder höher. Sie können Azure Cloud Shell im Webbrowser öffnen, um Azure CLI-Befehle einzugeben. Alternativ können Sie die Azure CLI auf Ihrem lokalen Computer installieren oder aktualisieren. Führen
az --version
Sie aus, um die version zu finden, die auf Ihrem Computer installiert ist. - Ein AKS-Cluster. Wenn Sie nicht über einen AKS-Cluster verfügen, erstellen Sie einen Cluster mithilfe der Azure CLI oder über den Azure-Portal.
Schritt 1: Suchen der Knoten für die Problembehandlung
Wie bestimmen Sie, von welchem Knoten das TCP-Speicherabbild abgerufen werden soll? Zuerst rufen Sie die Liste der Knoten im AKS-Cluster mithilfe des Kubernetes-Befehlszeilenclients kubectl ab. Befolgen Sie die Anweisungen zum Herstellen einer Verbindung mit dem Cluster, und führen Sie den kubectl get nodes --output wide
Befehl mithilfe des Azure-Portal oder derAzure CLI aus. Eine Knotenliste, die der folgenden Ausgabe ähnelt, wird angezeigt:
$ kubectl get nodes --output wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
akswin000000 Ready agent 3m8s v1.20.9 10.240.0.4 <none> Windows Server 2019 Datacenter 10.0.17763.2237 docker://20.10.6
akswin000001 Ready agent 3m50s v1.20.9 10.240.0.115 <none> Windows Server 2019 Datacenter 10.0.17763.2237 docker://20.10.6
akswin000002 Ready agent 3m32s v1.20.9 10.240.0.226 <none> Windows Server 2019 Datacenter 10.0.17763.2237 docker://20.10.6
Schritt 2: Herstellen einer Verbindung mit einem Windows-Knoten
Der nächste Schritt besteht darin, eine Verbindung mit dem AKS-Clusterknoten herzustellen. Sie authentifizieren sich entweder mit einem SSH-Schlüssel (Secure Shell) oder mit dem Windows-Administratorkennwort in einer RDP-Verbindung (Remotedesktopprotokoll). Beide Methoden erfordern das Erstellen einer Zwischenverbindung, da Sie derzeit keine direkte Verbindung mit dem AKS-Windows-Knoten herstellen können. Unabhängig davon, ob Sie über SSH oder RDP eine Verbindung mit einem Knoten herstellen, müssen Sie den Benutzernamen für die AKS-Knoten angeben. Standardmäßig lautet dieser Benutzername azureuser.
Wenn Sie über einen SSH-Schlüssel verfügen, erstellen Sie eine SSH-Verbindung mit dem Windows-Knoten. Der SSH-Schlüssel bleibt auf Ihren AKS-Knoten nicht erhalten. Der SSH-Schlüssel wird auf das zurückgesetzt, was ursprünglich im Cluster installiert wurde, während:
- Neustart
- Versionsupgrade
- Upgrade des Knotenimages
Schritt 3: Erstellen einer Paketerfassung
Wenn Sie über SSH oder RDP mit dem Windows-Knoten verbunden sind, wird eine Form der Windows-Eingabeaufforderung angezeigt:
azureuser@akswin000000 C:\Users\azureuser>
Öffnen Sie nun eine Eingabeaufforderung, und geben Sie den folgenden Befehl für die Netzwerkshell (netsh) ein, um Ablaufverfolgungen zu erfassen (netsh trace start). Dieser Befehl startet den Paketerfassungsprozess.
netsh trace start capture=yes tracefile=C:\Users\azureuser\AKS_node_name.etl
Die Ausgabe ähnelt dem folgenden Text:
Trace configuration:
-------------------------------------------------------------------
Status: Running
Trace File: AKS_node_name.etl
Append: Off
Circular: On
Max Size: 250 MB
Report: Off
Replizieren Sie Ihr Problem mehrmals, während die Ablaufverfolgung ausgeführt wird. Durch diese Aktion wird sichergestellt, dass das Problem innerhalb des TCP-Speicherabbilds erfasst wurde. Notieren Sie sich den Zeitstempel, während Sie das Problem replizieren. Um die Paketerfassung zu beenden, wenn Sie fertig sind, geben Sie ein netsh trace stop
:
azureuser@akswin000000 C:\Users\azureuser>netsh trace stop
Merging traces ... done
Generating data collection ... done
The trace file and additional troubleshooting information have been compiled as "C:\Users\azureuser\AKS_node_name.cab".
File location = C:\Users\azureuser\AKS_node_name.etl
Tracing session was successfully stopped.
Schritt 4: Lokales Übertragen der Erfassung
Nachdem Sie die Paketerfassung abgeschlossen haben, identifizieren Sie den Hilfspod, damit Sie den Speicherabbild lokal kopieren können. Öffnen Sie eine zweite Konsole, und rufen Sie dann eine Liste der Pods ab, indem Sie ausführen kubectl get pods
, wie unten gezeigt.
kubectl get pods
NAME READY STATUS RESTARTS AGE
azure-vote-back-6c4dd64bdf-m4nk7 1/1 Running 2 3d21h
azure-vote-front-85b4df594d-jhpzw 1/1 Running 2 3d21h
node-debugger-aks-nodepool1-38878740-vmss000000-6ztp6 1/1 Running 0 3m58s
Der Hilfspod hat das Präfix , node-debugger-aks
wie in der dritten Zeile gezeigt. Ersetzen Sie den Podnamen, und führen Sie dann die folgenden scp-Befehle (Secure Copy) aus. Diese Befehle rufen die Ereignisablaufverfolgungsprotokolldateien (ETL) und Archivdateien (.cab) ab, die für die Paketerfassung generiert werden.
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .
Eine Ausgabe ähnlich dem folgenden Text wird angezeigt:
$ scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
Authorized uses only. All activity may be monitored and reported.
AKS_node_name.cab 100% 571KB 984.0KB/s 00:00
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .
Authorized uses only. All activity may be monitored and reported.
AKS_node_name.etl 100% 1536KB 1.3MB/s 00:01
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.