从 AKS 群集上的 Pod 捕获 TCP 数据包
本文讨论如何在 Azure Kubernetes 服务 (AKS) 群集的 Pod 上捕获 TCP 流量,并将捕获下载到本地计算机。
先决条件
必须运行 Azure CLI 版本 2.0.59 或更高版本。
运行 az --version
以验证版本。 若要安装最新版本的 Azure CLI,请参阅 安装 Azure CLI。
标识 Pod 并安装 TCPdump
标识要从中捕获 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 的列表。连接到在上一步中标识的 Pod。 以下命令使用“azure-vote-front-848767080-tf34m”作为 Pod 名称。 将它们替换为正确的 Pod 名称。 如果 Pod 不在默认命名空间中,则必须将 参数添加到
--namespace
命令中kubectl exec
。kubectl exec azure-vote-front-848767080-tf34m -it -- /bin/bash
连接到 Pod 后,运行
tcpdump --version
以确定是否安装了 TCP 转储。 如果收到“找不到命令”消息,请运行以下命令,在 Pod 中安装 TCP 转储:apt-get update && apt-get install tcpdump
如果 Pod 使用 Alpine Linux,请运行以下命令以安装 TCPdump:
apk add tcpdump
捕获 TCP 数据包并将其保存到本地目录
运行
tcpdump -s 0 -vvv -w /capture.cap
以开始捕获 Pod 上的 TCP 数据包。数据包捕获完成后,退出 Pod shell 会话。
运行以下命令,将数据包保存到当前目录:
kubectl cp azure-vote-front-848767080-tf34m:/capture.cap capture.cap
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。