☰
Kubeshark:Kubernetes 全流量捕获与分析,一条命令抓满整集群报文
2026/11/4 6:57:53 网站建设 项目流程

Kubeshark:Kubernetes 全流量捕获与分析,一条命令抓满整集群报文

【免费下载链接】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

线上接口突然变慢,你却抓不到两个容器之间到底发了什么。tcpdump要登到某个 Pod、还得猜端口,报文一多根本看不过来。Kubeshark 就是为这个场景做的:它用 eBPF 在内核层捕获整集群的网络流量,并自带 Kubernetes 上下文,把 HTTP、gRPC、Redis、Kafka 等协议直接解析成能读的结构,还能不用私钥解开 TLS。看完这篇,你会知道它是什么、怎么挑部署方式、第一次抓包怎么做,以及生产上要注意什么。

它是什么,跟谁比

一句话:Kubeshark 是 Kubernetes 时代的"Wireshark + tcpdump"。它不侵入业务、不给代码加探针,就能看清微服务之间的每一条通信。适合正在做微服务排障、安全审计、性能分析的 SRE 和后端开发,也适合想给 AI 助手喂网络数据做根因分析的场景。

它跑起来由三个角色组成,分工很清楚:

组件职责对应源码 / 配置
Worker DaemonSet每节点部署,在内核层抓包并解析协议Worker DaemonSet 模板
Hub聚合各节点流量、做 L7 索引与查询Hub 部署模板
FrontWeb 控制台,展示流量、拓扑与详情,默认 8899 端口Front 部署模板

CLI 侧的连接逻辑在 internal/connect/hub.go,与集群交互的代码集中在 kubernetes/ 目录。

部署选型:看你的环境是哪一种

先判断你的处境,再挑方式,比背命令更有用:

  • 临时排查 / 开发环境→ 用安装脚本装个 CLI,一条tap就能把流量拉起来,最快。
  • 生产、多节点、长期留存→ 用 Helm,资源、TLS、Ingress、RBAC 都能改,最省心。
  • 要完全可控 / 离线定制 / 逐字段审计→ 用 Manifest,所有对象摊开在一份 YAML 里。

三种方式的关键命令:

# 方式一:脚本安装 CLI curl -fsSL https://gitcode.com/gh_mirrors/ku/kubeshark/-/raw/main/install.sh | sh kubeshark tap
# 方式二:Helm 部署 helm repo add kubeshark https://helm.kubeshark.co helm install kubeshark kubeshark/kubeshark -n kubeshark --create-namespace
# 方式三:Manifest 部署 kubectl apply -f manifests/complete.yaml

脚本会先检测系统架构再下载对应二进制,可选系统级安装和ks别名,逻辑见 install.sh。Helm 的完整配置项在 helm-chart/values.yaml;Manifest 方式包含 Namespace、RBAC、DaemonSet、Service、Ingress 在内的全部对象,建议先读 manifests/complete.yaml 按需改完再应用。

第一次抓包实战

按"启动 → 过滤 → 看协议 → 导出"四步走,每步只留一条必要的命令。

启动:起一个抓包,默认会打开控制台。

kubeshark tap

过滤:按命名空间和 Pod 正则收窄范围,别被无关流量淹没。

kubeshark tap -n sock-shop "(catalo*|front-end*)"

看协议详情:在控制台流量列表里点任意一条,右侧详情面板会给出请求/响应头、body 和时序,加密报文也能直接看到明文。

导出:需要留存或交给 Wireshark 时,把原始 PCAP 拉回本地。

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

所有参数可用kubeshark --help查看,命令定义在 cmd/ 目录。

控制台怎么用

控制台把"问题"拆成了四个区块,各答各的事:

  • 流量列表:实时流水,回答"现在到底有哪些请求在跑、谁最忙、哪个在报错"。支持按状态码、延迟、服务等多维排序。
  • 详情面板:点开单条流量,回答"这一跳的请求/响应头、body、耗时和 TLS 内容具体是什么"。
  • 筛选器:按命名空间、服务、协议等条件过滤,回答"我只想看某条链路、某个协议"。
  • 拓扑视图:把服务间的调用关系画成图,回答"谁依赖谁、哪条链路流量最大",不用自己脑补架构图。

排障时通常是先看列表定位可疑条目,再进详情面板确认,用拓扑视图补全链路视角。

生产落地清单

安全和性能放到一张 checklist 里,每条一行"动作 + 原因":

  • 给 Hub/Worker 设好resources限制与请求 —— 防止流量峰值时吃满节点,配置见 values.yaml 资源段。
  • 按需调低trafficSampleRate—— 相当于"抽样检查",大集群能显著降负载。
  • 设置数据 TTL(jsonTTL/pcapTTL)—— 自动清理过期流量,避免存储无限膨胀。
  • 用 RBAC 收窄权限 —— 默认只给 list/get/watch,别顺手放开写权限,见 RBAC 与 ClusterRole。
  • 开启 Ingress 并配 TLS —— 保护 8899 端口的 Web 访问,证书可参考 manifests/tls/。
  • 启用 NetworkPolicy —— 把组件间通信范围圈死,模板在 17-network-policies.yaml。
  • 只保留必要的 capabilities —— Worker 需要NET_RAW/NET_ADMIN等,按需裁剪而非全开,见 capabilities 段。
  • 按需启用鉴权(auth)—— 多人访问时避免裸奔,配置在 values.yaml 的auth块。
  • 打开 metrics 接入 Prometheus —— 默认 49100 端口,方便监控自身,示例在 manifests/prometheus/。

排障速查

  • 抓不到流量→ 查节点是否因污点没调度上 Worker:kubectl describe nodes | grep Taint;确认内核模块加载:lsmod | grep eBPF。
  • Web UI 打不开→ 看前端 Pod 是否就绪:kubectl get pods -l app.kubeshark.com/app=front;再确认服务与端口:kubectl describe service。
  • 某命名空间没数据→ 核对 tap 的-n是否覆盖到它,以及 Pod 正则有没有匹配上。
  • 组件 CPU/内存偏高→ 先降trafficSampleRate,再上调资源限制,必要时关闭不用的协议解析器。
  • 行为诡异需要留证→ 用kubeshark logs打包日志给排查,命令见 cmd/logs.go;下线用kubeshark clean。

写在最后

Kubeshark 把"抓容器间报文"这件原本靠人肉拼的事,变成了一条命令加一个控制台,并且对人和 AI 都开放查询。想深入可以看 README.md 的完整能力清单、skills/ 里的网络根因分析与 KFL 过滤技能,以及 CONTRIBUTING.md 了解如何参与。有具体场景可以直接从上面"第一次抓包实战"跑起来试。

【免费下载链接】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),仅供参考

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

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

立即咨询