【AKS】实验在Azure K8S上的Pod中抓取 TCP 数据包

问题描述

根据官方文档(从 AKS 群集上的 Pod 捕获 TCP 数据包: https://learn.microsoft.com/zh-cn/troubleshoot/azure/azure-kubernetes/logs/packet-capture-pod-level)的内容,本文将实验如何从AKS Pod中下载网络数据包。

实验操作

第一步:使用kubectl连接到Pod中

  • 运行 kubectl get pods -A 以查看 AKS 群集上的 Pod 列表。
  • 运行 kubectl exec <pod name> -it -- /bin/bash 连接到Pod


    image.png

第二步:tcpdump是否已经安装

  • 运行 tcpdump --version 以确定是否安装了 TCPdump
  • 如果没有,运行 apt-get update && apt-get install tcpdump 安装

第三步:抓取文件并保存网络包到本地目录中

  • 运行 tcpdump -s 0 -vvv -w /capture.cap 以开始捕获 Pod 上的 TCP 数据包
    • 如果以上步骤遇见”tcpdump: /capture.cap: Permission denied“问题,可以把 /capture的路径修改到/var/tmp目录下。
  • 数据包捕获完成后,退出 Pod shell 会话
  • 运行 kubectl cp <pod name>:/<your path>/capture.cap capture.cap 将网络数据包保存到本地
    • 如果在cp时候,遇见错误“tar: removing leading '/' from member names,可以使用 kubectl exec <Pod Name> -- cat /var/tmp/capture.cap > mylocalcapture.cap 来实现


      image.png

附录:完整的命令


kubectl get pods

kubectl exec <pod name> -it -- /bin/bash

tcpdump --version

kubectl cp <pod name>:/<your path>/capture.cap capture.cap 

# Ctrl + C 

kubectl exec <Pod Name> -- cat /var/tmp/capture.cap > mylocalcapture.cap

附录:动图展示

aks pod tcpdump.gif

参考资料

从 AKS 群集上的 Pod 捕获 TCP 数据包: https://learn.microsoft.com/zh-cn/troubleshoot/azure/azure-kubernetes/logs/packet-capture-pod-level

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容