# # Kubeshark:Kubernetes 网络数据包和 API 层面分析
Kubeshark 是一个用于 Kubernetes 集群中流量深度监控和分析的工具,它结合了 Wireshark 的功能以及网络数据包层面(L2–L3)和应用调用(L7)的调试能力。它允许开发者和 SRE 工程师可视化 pod 之间的交互,跟踪 Kubernetes API 调用,并实时检测异常。
Kubeshark 架构和工作原理
Kubeshark 使用 eBPF 直接在 Linux 内核中捕获网络流量,无需代理或应用修改。这确保了对集群性能的最小影响,同时保留完整的数据保真度。与仅显示 API 服务器 HTTP 请求的工具如 kubectl -v 不同,Kubeshark 捕获整个栈:从 Ethernet 帧到 HTTP/HTTPS 消息内容(当 TLS 密钥可用时)。
该工具以一组 DaemonSet pod 的形式部署,每个 pod 运行在集群节点上以收集本地流量。数据聚合到一个中央 Web 界面,在运行 CLI 命令后可通过 http://localhost:8899 访问。它支持按命名空间、服务、URL 路径、HTTP 方法和其他参数过滤。
工程师的关键功能
Kubeshark 的主要价值在于将详细分析与直观可视化相结合。以下是主要使用场景:
- 调试服务间交互:跟踪微服务之间的所有请求,包括头部、正文和响应码。
- 分析 Kubernetes API 调用:识别频繁或错误的 API 服务器访问(例如,未经权限尝试读取 secrets)。
- 监控云提供商元数据:检测对 AWS EC2 等端点如
/latest/meta-data的调用,这可能表明系统被入侵。 - 创建 PCAP 存档:将捕获的流量导出为标准格式,以便在 Wireshark 或自动化系统中后续分析。
- 与告警系统集成:基于流量模式设置触发器(例如,secrets 访问时的 403 错误)。
实际使用:示例
启动 Kubeshark 只需运行一条命令:
sh <(curl -Ls https://kubeshark.co/install)
kubeshark tap -A
-A 标志启用所有命名空间的监控。要限制范围,请指定命名空间:
kubeshark tap -n production
启动后,会打开一个 Web 仪表板,包含三个主要视图:
- Streams 表格 — 所有捕获连接的列表,可按协议、IP、端口、方法和路径过滤。
- 服务地图 — 服务和 pod 之间依赖关系的图形视图。
- 请求/响应详情 — 解码的 HTTP 流量内容,包括头部和正文。
有用的过滤器示例:
http.path == "/latest/meta-data"— 检测 AWS 元数据调用。k8s.method == "GET" && k8s.resource == "secrets"— 显示所有 secrets 读取尝试。net.host == "10.0.1.5"— 聚焦于一个节点上的流量。
与替代方案的比较及局限性
虽然 Kubeshark 与 Cilium Tetragon 或 Falco 一样使用 eBPF,但其目标不是威胁检测,而是理解系统行为。它无法取代运行时安全解决方案,但可以通过提供事件分析上下文来补充它们。
局限性:
- 没有证书或密钥无法解密 TLS 流量。
- 在高流量集群的长期监控中可能产生大量存储负载。
- 无法跟踪容器内的系统调用(与 Falco 不同)。
尽管如此,对于调试、培训和审计通信,Kubeshark 仍是 Kubernetes 生态中最有效的工具之一。
关键要点
- Kubeshark 在 L2–L7 层面捕获流量,包括网络数据包和 HTTP 调用。
- 使用 eBPF 进行非侵入式数据收集,无需应用更改。
- 支持 PCAP 导出以及与外部存储(S3 等)的集成。
- 适用于调试和分析,但不是运行时安全替代品。
- 可视化服务地图和强大过滤功能加速问题诊断。
— Editorial Team
暂无评论。