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
- Strumento Kubernetes kubectl . Per installare kubectl usando l'interfaccia della riga di comando di Azure, eseguire il comando az aks install-cli .
- 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.
- Strumento da riga di comando tcpdump installato nel nodo Linux.
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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per