☰
Kubeshark Kubernetes 流量抓包与排查从0到1:5分钟实战指南
2026/11/4 11:13:16 网站建设 项目流程

Kubeshark Kubernetes 流量抓包与排查从0到1:5分钟实战指南

【免费下载链接】kubesharkeBPF-powered network observability for Kubernetes. Indexes L4/L7 traffic with full K8s context, decrypts TLS without keys. Queryable by AI agents via MCP and humans via dashboard.项目地址: https://gitcode.com/gh_mirrors/ku/kubeshark

集群里一次服务间调用超时,调用方和被调方的日志都正常,指标上看不出慢在哪一段。这时候需要回到网络层看实际发生了什么。Kubeshark 是一款基于 eBPF(在内核中注入程序以观测系统行为的机制)做 Kubernetes 流量分析的工具:它在内核层捕获全集群流量,按协议解析后,每条请求的内容、状态码和时序都能直接在浏览器里看到。

把它理解为搬进 Kubernetes 的 tcpdump 加 Wireshark:不用登到每个节点手工抓包再自己对上 Pod 名,流量自动带上 Pod、命名空间、Service 的标签。它还能在不提供任何密钥的情况下解密 TLS 流量,适合 SRE 和开发在开发、预发环境排查服务调用问题。

从0到1:三条命令开始抓包

最短路径是用 Helm 部署(自动拉起每节点抓包的 Worker 和 Web UI),再用 port-forward 把页面转发到本机:

helm repo add kubeshark https://helm.kubeshark.com helm install kubeshark kubeshark/kubeshark kubectl port-forward svc/kubeshark-front 8899:80

浏览器打开 http://localhost:8899,即可看到实时流入的流量。如果不想手动执行这几条命令,通过安装脚本装好 CLI 后直接运行kubeshark tap,它会部署同一套资源并自动打开 UI。生产环境建议把 port-forward 换成 Ingress 对外暴露。

三个实战用例:按工作负载过滤、TLS 解密、导出 PCAP

用例一:只看问题服务的流量

目标:大集群全量流量太大,先收敛到具体命名空间和 Pod。

关键命令:清理既有部署后,按命名空间加 Pod 名正则捕获:

kubeshark clean kubeshark tap -n prod "checkout-.*"
参数作用
-n prod只捕获该命名空间,可传多个
checkout-.*(位置参数)Pod 名正则,匹配 checkout 系列工作负载
-e排除指定命名空间
--dry-run只预览匹配的 Pod,不真正部署

你会看到:终端先列出命中的 Targeted pod,随后自动打开浏览器;UI 左侧可按 workload、协议等再过滤,点击某一条即可看到完整请求头、body 和响应。

用例二:看清 HTTPS 流量明文

目标:服务间流量加密,不解密就看不到内容。

Kubeshark 在 eBPF 层直接解密 TLS,不需要密钥管理,也不用注入 sidecar;对 Go crypto/tls、OpenSSL 或 service mesh mTLS 加密的流量,需显式打开捕获开关:

kubeshark tap -n prod --tls --service-mesh "checkout-.*"

你会看到:列表里 https 流量与 http 一样以明文呈现,能直接看到 JSON 请求体和真实状态码——"超时但日志正常"的线索往往就藏在这一层。

用例三:留存现场,交给 Wireshark

目标:拿到可复现的抓包文件,转给同事继续分析。

kubeshark pcapdump --time 10m --dest ~/pcaps

你会看到:最近 10 分钟的 PCAP 文件被复制到本地目录(--dest目录需预先存在),用 Wireshark 打开即是完整包详情。流量与 PCAP 的保留时长由jsonTTL(默认 5 分钟)和storageLimit(默认每节点 10Gi)控制,均可在 values.yaml 中调整。

调优与排障速查

现象可能原因处理方法
UI 里看不到流量目标节点没有 Worker,或正则没匹配到 Podkubectl get pods -n default检查状态;kubeshark tap --dry-run验证正则
Pod 卡在 Pending节点不允许特权容器或资源不足查看节点污点,在 values 中调整tap.tolerations、tap.resources
终端关掉后 UI 打不开port-forward 连接断开运行kubeshark proxy重新建立转发
CPU、存储压力大默认 100% 采样全量捕获调低tap.misc.trafficSampleRate,缩小storageLimit
需要提交 issue—kubeshark logs -g "error"打包导出相关日志

适用边界与延伸阅读

Kubeshark 最适合开发、预发环境定位服务间调用问题、验证网络行为与留存证据;大规模生产集群要谨慎——每节点的特权 Worker 加上全量捕获是持续开销,先评估资源与存储预算。如果希望 AI 助手参与排查,kubeshark mcp命令能把流量查询接入 MCP 客户端,让 agent 直接回答"哪个服务错误率高"这类问题,见 MCP 说明。

  • 项目说明:README.md
  • 安装脚本:install.sh
  • Helm 配置项:helm-chart/values.yaml
  • 网络根因分析技能:skills/network-rca/SKILL.md
  • 本地克隆源码:git clone https://gitcode.com/gh_mirrors/ku/kubeshark

【免费下载链接】kubesharkeBPF-powered network observability for Kubernetes. Indexes L4/L7 traffic with full K8s context, decrypts TLS without keys. Queryable by AI agents via MCP and humans via dashboard.项目地址: https://gitcode.com/gh_mirrors/ku/kubeshark

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询