【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
相关文章
|
11月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
506 5
|
10月前
|
边缘计算 资源调度 监控
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
513 3
|
Kubernetes 应用服务中间件 网络安全
用Kubernetes(k8s)的ingress部署https应用
用Kubernetes(k8s)的ingress部署https应用
1019 0
|
10月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
561 99
|
10月前
|
算法 安全 Python
【顶级EI复现】分布式电源选址定容的多目标优化算法(Matlab代码实现)
【顶级EI复现】分布式电源选址定容的多目标优化算法(Matlab代码实现)
261 1
|
10月前
|
分布式计算 Java 关系型数据库
SpringBoot集成powerJob实战派
PowerJob 是全新一代分布式任务调度与计算框架,支持可视化管理、多种定时策略、丰富的执行模式(如单机、广播、Map/MapReduce),并提供工作流编排、在线日志、高可用及分布式计算能力,适用于定时任务、集群执行、延迟处理等场景。
1674 1
SpringBoot集成powerJob实战派
|
11月前
|
运维 关系型数据库 数据库
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
随着云原生发展,部署工具从 Bitnami 转向 Websoft9。后者基于官方镜像,提供多应用编排与统一运维,提升部署效率与维护能力,适合多系统协同场景。
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
|
12月前
|
存储 消息中间件 调度
Django+Celery 进阶:动态定时任务的添加、修改与智能调度实战
Celery Beat 是 Celery 的定时任务调度组件,支持固定间隔、CRON 表达式等规则,可实现任务的周期性执行。本文详解了其原理、配置方式、与 Django 的集成步骤及实战代码示例,适用于构建具备定时任务管理功能的后台系统。
912 0
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
1245 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
数据采集 NoSQL 调度
flask celery python 每月定时任务
flask celery python 每月定时任务