Delen via


Een TCP-dump vastleggen vanaf een Windows-knooppunt in een AKS-cluster

Netwerkproblemen kunnen optreden wanneer u een AKS-cluster (Microsoft Azure Kubernetes Service) gebruikt. Om deze problemen te onderzoeken, wordt in dit artikel uitgelegd hoe u een TCP-dump van een Windows-knooppunt in een AKS-cluster vastlegt en vervolgens de opname downloadt naar uw lokale computer.

Voorwaarden

Stap 1: de knooppunten zoeken om problemen op te lossen

Hoe bepaalt u van welk knooppunt de TCP-dump moet worden opgehaald? U haalt eerst de lijst met knooppunten in het AKS-cluster op met behulp van de Kubernetes-opdrachtregelclient, kubectl. Volg de instructies om verbinding te maken met het cluster en voer de kubectl get nodes --output wide opdracht uit met behulp van Azure Portal of Azure CLI. Er wordt een knooppuntlijst weergegeven die vergelijkbaar is met de volgende uitvoer:

$ 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

Stap 2: Verbinding maken met een Windows-knooppunt

De volgende stap bestaat uit het tot stand brengen van een verbinding met het AKS-clusterknooppunt. U verifieert zich met behulp van een SSH-sleutel (Secure Shell) of met het Windows-beheerderswachtwoord in een RDP-verbinding (Remote Desktop Protocol). Voor beide methoden moet een tussenliggende verbinding worden gemaakt, omdat u momenteel niet rechtstreeks verbinding kunt maken met het AKS Windows-knooppunt. Of u nu verbinding maakt met een knooppunt via SSH of RDP, u moet de gebruikersnaam voor de AKS-knooppunten opgeven. Deze gebruikersnaam is standaard azureuser. Naast het gebruik van een SSH- of RDP-verbinding, kunt u verbinding maken met een Windows-knooppunt vanuit de HostProcess-container.

  1. Maak hostprocess.yaml met de volgende inhoud. Vervang door AKSWINDOWSNODENAME de naam van het AKS Windows-knooppunt.

    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        pod: hpc
      name: hpc
    spec:
      securityContext:
        windowsOptions:
          hostProcess: true
          runAsUserName: "NT AUTHORITY\\SYSTEM"
      hostNetwork: true
      containers:
        - name: hpc
          image: mcr.microsoft.com/windows/servercore:ltsc2022 # Use servercore:1809 for WS2019
          command:
            - powershell.exe
            - -Command
            - "Start-Sleep 2147483"
          imagePullPolicy: IfNotPresent
      nodeSelector:
        kubernetes.io/os: windows
        kubernetes.io/hostname: AKSWINDOWSNODENAME
      tolerations:
        - effect: NoSchedule
          key: node.kubernetes.io/unschedulable
          operator: Exists
        - effect: NoSchedule
          key: node.kubernetes.io/network-unavailable
          operator: Exists
        - effect: NoExecute
          key: node.kubernetes.io/unreachable
          operator: Exists
    
  2. Voer de kubectl apply -f hostprocess.yaml opdracht uit om de Windows HostProcess-container in het opgegeven Windows-knooppunt te implementeren.

  3. Voer de opdracht kubectl exec -it [HPC-POD-NAME] -- powershell uit.

  4. Voer PowerShell-opdrachten uit in de HostProcess-container om toegang te krijgen tot het Windows-knooppunt.

    Notitie

    Als u toegang wilt krijgen tot de bestanden in het Windows-knooppunt, schakelt u de hoofdmap over naar C:\ de HostProcess-container.

Stap 3: Een pakketopname maken

Wanneer u verbinding hebt met het Windows-knooppunt via SSH of RDP, of vanuit de HostProcess-container, wordt een vorm van de Windows-opdrachtprompt weergegeven:

azureuser@akswin000000 C:\Users\azureuser>

Open nu een opdrachtprompt en voer de onderstaande opdracht Network Shell (netsh) in voor het vastleggen van traceringen (netsh trace start). Met deze opdracht wordt het proces voor pakketopname gestart.

netsh trace start capture=yes tracefile=C:\temp\AKS_node_name.etl

De uitvoer lijkt op de volgende tekst:

Trace configuration:
-------------------------------------------------------------------
Status:             Running
Trace File:         AKS_node_name.etl
Append:             Off
Circular:           On
Max Size:           250 MB
Report:             Off

Terwijl de tracering wordt uitgevoerd, repliceert u het probleem vaak. Deze actie zorgt ervoor dat het probleem is vastgelegd in de TCP-dump. Noteer het tijdstempel tijdens het repliceren van het probleem. Als u de pakketopname wilt stoppen wanneer u klaar bent, voert u het volgende in 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:\temp\AKS_node_name.cab".
File location = C:\temp\AKS_node_name.etl
Tracing session was successfully stopped.

Stap 4: De opname lokaal overdragen

Nadat u de pakketopname hebt voltooid, identificeert u de HostProcess-pod, zodat u de dump lokaal kunt kopiëren.

  1. Open op uw lokale computer een tweede console en haal vervolgens een lijst met pods op door de opdracht uit te kubectl get pods voeren:

    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
    hpc                                                     1/1     Running   0          3m58s
    

    De standaardnaam van de HostProcess-pod is hpc, zoals wordt weergegeven in de derde regel.

  2. Kopieer de TCP-dumpbestanden lokaal door de volgende opdrachten uit te voeren. Vervang de podnaam door hpc.

    kubectl cp -n default hpc:/temp/AKS_node_name.etl ./AKS_node_name.etl
    tar: Removing leading '/' from member names
    kubectl cp -n default hpc:/temp/AKS_node_name.etl ./AKS_node_name.cab
    tar: Removing leading '/' from member names
    

    De .etl - en .cab-bestanden zijn nu aanwezig in uw lokale map.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.