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

简介: 本文基于微软官方文档,介绍如何在Azure Kubernetes服务(AKS)中从Pod级别捕获TCP网络数据包。内容涵盖通过kubectl连接Pod、安装tcpdump工具、捕获并下载数据包的操作步骤,同时提供了命令示例及常见问题解决方案,如路径权限问题和文件复制错误的处理方法。

问题描述

根据官方文档(从 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

第二步: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 来实现

 

附录:完整的命令

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





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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7月前
|
边缘计算 资源调度 监控
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
431 3
|
存储 缓存 应用服务中间件
Docker 镜像解密:分层存储与镜像构建原理
Docker 镜像解密:分层存储与镜像构建原理
984 0
|
7月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
482 99
|
Kubernetes 网络协议 Docker
基于kubernetes部署jaeger
基于kubernetes部署jaeger,采用非all-in-one的方式分别部署query,collector,elasticsearch和agent
7472 0
|
12月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
325 22
|
2月前
|
JSON 算法 安全
JWT编码解码 在线工具分享
一款基于Vue3开发的轻量级JWT在线编码/解码工具,支持HS256/RS256/ES256等主流算法,自动解析Header/Payload/Signature三部分并高亮显示,内置签名验证与示例一键加载功能。全程本地运算,密钥不上传,安全高效,调试开发更便捷。
1141 3
JWT编码解码 在线工具分享
|
7月前
|
算法 安全 Python
【顶级EI复现】分布式电源选址定容的多目标优化算法(Matlab代码实现)
【顶级EI复现】分布式电源选址定容的多目标优化算法(Matlab代码实现)
217 1
|
7月前
|
分布式计算 Java 关系型数据库
SpringBoot集成powerJob实战派
PowerJob 是全新一代分布式任务调度与计算框架,支持可视化管理、多种定时策略、丰富的执行模式(如单机、广播、Map/MapReduce),并提供工作流编排、在线日志、高可用及分布式计算能力,适用于定时任务、集群执行、延迟处理等场景。
1173 1
SpringBoot集成powerJob实战派
|
8月前
|
运维 关系型数据库 数据库
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
随着云原生发展,部署工具从 Bitnami 转向 Websoft9。后者基于官方镜像,提供多应用编排与统一运维,提升部署效率与维护能力,适合多系统协同场景。
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
|
存储 JSON 数据格式
docker load 后镜像名称为空的问题解决
Docker在容器化应用程序时提供了强大的镜像管理功能,但也可能在某些操作中遇到如镜像名称为空的问题。通过理解问题的成因并采取适当的解决方案,如正确保存和加载镜像、手动修复标签等,可以有效避免和解决这一问题。通过本文提供的指导,您可以确保在使用Docker进行镜像操作时更为顺利,并提高容器管理的效率。
900 82