Condividi tramite


Acquisire un dump TCP da un nodo Windows in un cluster del servizio Azure Kubernetes

È possibile che si verifichino problemi di rete quando si usa un cluster microsoft servizio Azure Kubernetes (servizio Azure Kubernetes). Per analizzare questi problemi, questo articolo illustra come acquisire un dump TCP da un nodo Windows in un cluster del servizio Azure Kubernetes e quindi scaricare l'acquisizione nel computer locale.

Prerequisiti

  • Interfaccia della riga di comando di Azure, versione 2.0.59 o successiva. È possibile aprire Azure Cloud Shell nel Web browser per immettere i comandi dell'interfaccia della riga di comando di Azure. In alternativa , installare o aggiornare l'interfaccia della riga di comando di Azure nel computer locale. Per trovare la versione installata nel computer, eseguire az --version.
  • Un cluster del servizio Azure Kubernetes. Se non si dispone di un cluster del servizio Azure Kubernetes, crearne uno usandol'interfaccia della riga di comando di Azure o tramite il portale di Azure.

Passaggio 1: Trovare i nodi per la risoluzione dei problemi

Come si determina da quale nodo eseguire il pull del dump TCP? Per prima cosa si ottiene l'elenco dei nodi nel cluster del servizio Azure Kubernetes usando il client della riga di comando Kubernetes kubectl. Seguire le istruzioni per connettersi al cluster ed eseguire il kubectl get nodes --output wide comando usando il portale di Azure o l'interfaccia della riga di comando di Azure. Viene visualizzato un elenco di nodi simile all'output seguente:

$ 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

Passaggio 2: Connettersi a un nodo Windows

Il passaggio successivo consiste nel stabilire una connessione al nodo del cluster del servizio Azure Kubernetes. L'autenticazione viene eseguita usando una chiave SSH (Secure Shell) o la password di amministratore di Windows in una connessione RDP (Remote Desktop Protocol). Entrambi i metodi richiedono la creazione di una connessione intermedia, perché attualmente non è possibile connettersi direttamente al nodo Windows del servizio Azure Kubernetes. Sia che ci si connetta a un nodo tramite SSH o RDP, è necessario specificare il nome utente per i nodi del servizio Azure Kubernetes. Per impostazione predefinita, questo nome utente è azureuser.

Se si dispone di una chiave SSH, creare una connessione SSH al nodo Windows. La chiave SSH non viene mantenuta nei nodi del servizio Azure Kubernetes. La chiave SSH torna a ciò che è stato installato inizialmente nel cluster durante qualsiasi:

  • Riavviare
  • Aggiornamento della versione
  • Aggiornamento dell'immagine del nodo

Passaggio 3: Creare un'acquisizione di pacchetti

Quando si è connessi al nodo Windows tramite SSH o RDP, viene visualizzato un formato del prompt dei comandi di Windows:

azureuser@akswin000000 C:\Users\azureuser>

Aprire ora un prompt dei comandi e immettere il comando Network Shell (netsh) seguente per l'acquisizione delle tracce (avvio della traccia netsh). Questo comando avvia il processo di acquisizione pacchetti.

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

Viene visualizzato un output simile al testo seguente:

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

Mentre la traccia è in esecuzione, replicare il problema più volte. Questa azione garantisce che il problema sia stato acquisito all'interno del dump TCP. Prendere nota del timestamp durante la replica del problema. Per arrestare l'acquisizione di pacchetti al termine, immettere 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.

Passaggio 4: Trasferire l'acquisizione in locale

Dopo aver completato l'acquisizione dei pacchetti, identificare il pod helper in modo da poter copiare il dump in locale. Aprire una seconda console e quindi ottenere un elenco di pod eseguendo kubectl get pods, come illustrato di seguito.

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

Il pod helper ha il prefisso node-debugger-aks, come illustrato nella terza riga. Sostituire il nome del pod ed eseguire i comandi di copia sicura (scp) seguenti. Questi comandi recuperano i file di log di traccia eventi (con estensione etl) e di archivio (.cab) generati per l'acquisizione di pacchetti.

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 .

Viene visualizzato un output simile al testo seguente:

$ 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

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.