Condividi tramite


Acquisire un dump TCP da un nodo Linux 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 Linux in un cluster del servizio Azure Kubernetes e quindi scaricare l'acquisizione nel computer locale.

Prerequisiti

Nota

È possibile automatizzare l'acquisizione TCP tramite un grafico Helm, che può essere eseguito in background come DaemonSet. Per altre informazioni, vedere questo strumento GitHub personalizzato per l'acquisizione di dump TCP o seguire questa procedura nelle sezioni seguenti.

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

Passaggio 2: Connettersi a un nodo Linux

Il passaggio successivo consiste nel stabilire una connessione al nodo del cluster del servizio Azure Kubernetes da cui si vuole acquisire la traccia di rete. Per altre informazioni, vedere Creare una connessione della shell interattiva a un nodo Linux.

Passaggio 3: Assicurarsi che tcpdump sia installato

Dopo aver stabilito una connessione al nodo Linux del servizio Azure Kubernetes, verificare che lo strumento tcpdump sia stato installato in precedenza in un nodo eseguendo tcpdump --version. Se tcpdump non è stato installato, viene visualizzato il testo di errore seguente:

# tcpdump --version
bash: tcpdump: command not found

Installare quindi tcpdump nel pod eseguendo l'utilità di gestione dei pacchetti di Advanced Package Tool, apt-get:

apt-get update && apt-get install tcpdump

Se tcpdump è installato, viene visualizzato un testo simile al seguente:

# tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.1.1  11 Sep 2018

Passaggio 4: Creare un'acquisizione di pacchetti

Per acquisire il dump, eseguire il comando tcpdump come indicato di seguito:

# tcpdump --snapshot-length=0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 6

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, premere 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

Passaggio 5: 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   0          3m29s
azure-vote-front-85b4df594d-jhpzw                       1/1     Running   0          3m29s
node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2   1/1     Running   0          60s

Il pod helper ha il prefisso node-debugger-aks, come illustrato nella terza riga. Sostituire il nome del pod ed eseguire il comando kubectl seguente. Questi comandi recuperano l'acquisizione di pacchetti per il nodo Linux.

kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap

Dichiarazione di non responsabilità sulle informazioni di terze parti

I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti

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.