【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
相关文章
|
存储 Linux
Linux系统LVM信息丢失处理方法
Linux的LVM会存储用户对PV/VG/LV的每一步操作,并自动把当前的VG的信息备份到一个文件里面,该文件为/etc/lvm/backup/VG名,本文描述了当信息丢失时如何找回的处理方法。
11482 60
Linux系统LVM信息丢失处理方法
|
存储 Prometheus 监控
K3S环境下接入Prometheus,grafana,等监控套件
因为常规的监控都是用K8S做的,而K3S上的监控方案少之又少,如果直接用rancher上的prometheus监控,会消耗至少2G的内存,于是我们就自己做了K3S和pg数据库的监控,并且通过我们自己做的监控,可以减少一些不必要的性能开销。主要监控容器资源消耗,宿主机资源消耗,pg数据库资源消耗
5407 0
K3S环境下接入Prometheus,grafana,等监控套件
|
Kubernetes 应用服务中间件 网络安全
用Kubernetes(k8s)的ingress部署https应用
用Kubernetes(k8s)的ingress部署https应用
1121 0
|
Kubernetes 网络协议 Docker
基于kubernetes部署jaeger
基于kubernetes部署jaeger,采用非all-in-one的方式分别部署query,collector,elasticsearch和agent
7762 0
|
9月前
|
运维 Kubernetes 应用服务中间件
一文讲解kubernetes的gateway Api的功能、架构、部署、管理及使用
Gateway API是Kubernetes官方推出的下一代L4/L7网络网关标准,面向角色(基础设施商、运维、开发)、可移植、表达力强且高度可扩展。它通过GatewayClass、Gateway、HTTPRoute等资源实现权限分离与策略即代码,替代Ingress短板,已获Istio、Envoy、ASM等主流支持。
2322 119
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
643 5
|
存储 Kubernetes 开发工具
k8s学习--ConfigMap详细解释与应用
ConfigMap 是 Kubernetes 中用于管理非机密配置数据的 API 对象,可将应用配置与容器分离,便于动态管理和更新。它支持四种创建方式:命令行参数、多个文件、文件内的键值对以及 YAML 资源清单文件。ConfigMap 可通过环境变量或挂载为卷的方式传递给 Pod,并且当通过卷挂载时支持热更新。这使得配置管理更加灵活和安全,无需重新部署应用即可更新配置。
1468 0
{"level":"warn","ts":"2023-11-07T00:35:53.400+0800","caller":"etcdserver/server.go:2048",&
{"level":"warn","ts":"2023-11-07T00:35:53.400+0800","caller":"etcdserver/server.go:2048",&
|
Kubernetes 网络安全 容器
在K8S中,有个服务使用service的nodeport进行暴露,发现访问不到如何排查?
在K8S中,有个服务使用service的nodeport进行暴露,发现访问不到如何排查?
|
jenkins Java 持续交付
jenkins学习笔记之十六:SonarSQube支持多分支
jenkins学习笔记之十六:SonarSQube支持多分支
1254 0