K8s Pod 怎么抓包
在编排环境里每个 Pod 都有自己的网络命名空间,抓包一般从节点侧入手:用临时的特权容器加入目标 Pod 的命名空间,或者直接在节点上进入该命名空间执行抓包命令。操作前要确认三件事:Pod 调度的节点、多容器场景下流量属于哪个容器、以及接口名称。抓包属于诊断动作,临时容器用完即删,不要让它常驻集群,否则既是资源占用也是安全风险。
基本信息
| 抓包位置 | 节点侧,进入目标 Pod 的网络命名空间 |
|---|---|
| 前提确认 | 所在节点、目标容器、接口名称 |
| 常用工具 | 节点上的容器运行时命令与命名空间工具 |
| 权限要求 | 节点侧的特权操作 |
| 清理要求 | 临时容器与落盘文件用完即删 |
典型使用场景
- Pod 流量排查:确认应用容器的真实收发情况
- 多容器场景:确认流量落在哪个容器的接口上
- 服务网格环境:区分边车容器与业务容器的流量
- 节点级定位:确认 Pod 与节点网络之间的关系
- 临时诊断:在不修改业务镜像的前提下采集数据
定位步骤
定位步骤
# 1) 先确认 Pod 调度在哪个节点
# 2) 节点上定位目标容器的运行实例
# 3) 取得其网络命名空间后执行抓包
# 4) 采集完成立即删除临时容器与落盘文件定位步骤与检查
| 步骤 | 目的 | 检查点 |
|---|---|---|
| 确认节点 | 知道去哪台机器操作 | Pod 是否发生过迁移 |
| 确认容器 | 多容器时选对目标 | 边车与业务容器要区分 |
| 确认接口 | 抓取正确的网卡 | 接口名与流量方向 |
| 清理 | 回收临时资源 | 临时容器与文件都要删 |
多容器 Pod(例如网关边车模式)必须先确认流量在哪个容器的接口上,抓错容器会得出应用没有收发数据的错误结论。
服务网格引流之后,抓到的大多是边车与业务容器之间的流量,形态与直连不同,解读前先明确链路结构。