Freigeben über


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

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