Kubeshark:K8S的API流量瑞士军刀,短小精悍

KubeShark: Kubernetes的Wireshark

Kubeshark

KubeShark 是一个开源的 Kubernetes 集群监控工具,它可以收集和分析 Kubernetes API Server、etcd、kubelet、kube-proxy 等组件的性能指标和状态信息,帮助用户了解集群的运行状况和性能瓶颈。

KubeShark 可以提供以下功能:

简介

Wireshark是著名的数据包抓取、分析和故障排除工具,可以实时捕获网络流量并在微观级别上实时分析,或者读取和处理保存的数据包文件。Wireshark可以解析和显示许多协议,并有强大的过滤系统过滤感兴趣的流量。https://www.wireshark.org/

TCPDump/Wireshark使我们能够在微观层面可视化和理解网络中发生的事情。想象一下,如果可以在k8s中做类似的事情,如果可以看到当前部署的工作负载、获取pod、创建服务帐户以及不同的工作负载如何相互交互时究竟发生了什么,那会怎么样。

k8s

集群的示例源代码可视化

现在缺少什么?

要查看启动kubectl命令时究竟发生了什么,可以简单的在kubectl命令中使用verbose标志,并设置一些详细级别,如kubectl get pods -v=6。verbose级别从0开始到9结束,0显示的信息最少,9显示最多的信息。这是当前已经存在的数据,但流程的清晰可视化并不存在。

带-v标志的kubectl可以查看L7 API调用,但不会让我们监视任何网络流量。而kubesshark抓取L3和L7,实际上它可以访问整个L2框架,可以将创建仪表板/视图来可视化,就像Wireshark一样。

Kubeshark仪表板

kubeshark解决了什么问题?

  1. 监控一切 —— 监控Pod到Pod的网络流量、API调用、监控单个节点、服务或特定路径,如/latest/meta-data/health等。
  2. 可视化 —— Kubeshark Viewer非常简单,但支持强大的实时流量查看、过滤、分析和问题排查功能,右侧窗口里的请求响应详细信息非常清晰。
  3. PCAP存储 —— 存储PCAP以供将来分析,可以轻松将其转储到S3或其他存储中,供稍后加载并可视化。
  4. 更容易调试 —— 无论是调试,还是加深对集群中各个组件之间通信的理解,都能获得极大支持。
  5. 实时告警 —— 可以使用kubesshark允许基于获取的数据为k8s构建真正强大的告警系统,例如获取密钥调用失败、实例元数据调用失败以及其他类似异常。

自己动手

安装Kubeshark,看看它是如何工作的,通过以下命令安装KubeShark:

sh <(curl -Ls https://kubeshark.co/install)

要支持特定版本和架构的,请从 https://github.com/kubeshark/kubeshark/releases/ 下载二进制文件。

启动Kubeshark:

kubeshark tap -A

tap -A表示监控所有命名空间,指定-n表示监控指定命名空间。

kubeshark tap -n kube-system

Kubeshark将开始监控/获取流量,并在本地主机的端口8899上启动查看器。

启动kubesshark,仪表盘暴露在8899端口上

我用KOPS部署了测试集群,注意Kubeshark二进制文件从~/.kube/config查看当前上下文,并用相同的凭据和集群来创建其资源并开始监控。

你可以创建一个本地kind集群来快速了解Kubeshark是如何工作的。

玩一会儿

让我们看看要监控什么,kubeshark的仪表板上有哪些功能,这些是用来测试kubesshark的过滤器样本。

单节点监控 ——

可视化服务地图 ——

监控AWS实例元数据安全凭证路径 ——

一些思考

  1. 有助于加深对集群中各个组件如何在尽可能低的级别上进行通信和协同工作的理解。
  2. 通过向流量添加适当的过滤器,调试/故障排除变得非常简单。
  3. 服务地图从可视化的角度提供了一个关于集群的高层次概述。
  4. 可以扩展数据做实时告警,包括操作和安全警报。
  5. 在适当规模上做性能基准测试,看看这个工具是如何扩展,如何影响计算和存储,因为流量基于集群规模呈指数级增长。
  6. 老实说,将它与Sysdig falco或Cilium Tetragon进行比较是不公平的,它捕获和调整数据的方式更关注实时检测方面,并考虑在与K8S API异常更相关的安全方面使用。
  7. 也许这是一个应该广泛使用的工具,以便更好理解底层调用,从而编写与控制平面更相关的更好的运行时安全策略,但对检测任何容器异常或与容器运行时AFAIK相关的异常没有多大帮助。

监控工具

结论

Kubeshark是个功能强大的工具,早期被称为Mizu,由UP9开发,作为API流量查看器,后来开源并改名为Kubeshark,以表明这是基于K8S重制的Wireshark。

虽然有一些复杂的k8s运行时安全工具,如Sysdig Falco、Cilium Tetragon,都是利用eBPF功能构建的,文档中提到Kubeshark也使用eBPF,但其更侧重于在微观层面提供可视化层,以更好的理解通信。Kubeshark提供的数据绝对可以用于运行时检测。

Github链接: https://github.com/kubeshark/kubeshark

官网: https://kubeshark.com

你好,我是冰点,在阿里做过研发,现在在菜鸟做技术相关工作,对通信、网络、后端架构、云原生、DevOps、CICD、微服务、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。微信公众号:java2fun。【架构师漫谈】

展开阅读全文

页面更新:2024-03-12

标签:仪表板   流量   短小精悍   微观   节点   集群   实时   瑞士军刀   级别   工具   数据   工作

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top