从 AKS 群集上的 Pod 捕获 TCP 数据包

本文讨论如何在 Azure Kubernetes 服务 (AKS) 群集的 Pod 上捕获 TCP 流量,并将捕获下载到本地计算机。

先决条件

必须运行 Azure CLI 版本 2.0.59 或更高版本。

运行 az --version 以验证版本。 若要安装最新版本的 Azure CLI,请参阅 安装 Azure CLI

标识 Pod 并安装 TCPdump

  1. 标识要从中捕获 TCP 数据包的 Pod 的名称。 这应该是存在连接问题的 Pod。 为此,请运行 kubectl get pods -A 以查看 AKS 群集上的 Pod 列表。 下面是输出的一个示例:

    NAME                               READY     STATUS    RESTARTS   AGE
    azure-vote-back-2549686872-4d2r5   1/1       Running   0          31m
    azure-vote-front-848767080-tf34m   1/1       Running   0          31m
    

    如果知道运行 Pod 的命名空间,还可以运行 kubectl get pods -n <namespace> 以获取在该命名空间中运行的 Pod 的列表。

  2. 连接到在上一步中标识的 Pod。 以下命令使用“azure-vote-front-848767080-tf34m”作为 Pod 名称。 将它们替换为正确的 Pod 名称。 如果 Pod 不在默认命名空间中,则必须将 参数添加到 --namespace 命令中 kubectl exec

    kubectl exec azure-vote-front-848767080-tf34m -it -- /bin/bash
    
  3. 连接到 Pod 后,运行 tcpdump --version 以确定是否安装了 TCP 转储。 如果收到“找不到命令”消息,请运行以下命令,在 Pod 中安装 TCP 转储:

    apt-get update && apt-get install tcpdump
    

    如果 Pod 使用 Alpine Linux,请运行以下命令以安装 TCPdump:

     apk add tcpdump
    

捕获 TCP 数据包并将其保存到本地目录

  1. 运行 tcpdump -s 0 -vvv -w /capture.cap 以开始捕获 Pod 上的 TCP 数据包。

  2. 数据包捕获完成后,退出 Pod shell 会话。

  3. 运行以下命令,将数据包保存到当前目录:

    kubectl cp azure-vote-front-848767080-tf34m:/capture.cap capture.cap
    

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。