为了账号安全,请及时绑定邮箱和手机立即绑定

KubeShark:Kubernetes集群的网络流量监控神器,就像Wireshark一样好用!

对集群发生的事情进行细致观察。

开头

Wireshark 是一个著名的数据包捕获、分析和故障排除工具。它可以实时捕获并细粒度分析网络流量,或者读取并处理保存的捕获文件。Wireshark 能解析并展示多种协议,并且拥有强大的过滤系统来缩小关注的流量范围。更多关于 Wireshark 的信息,请访问 Wireshark 官网

TCPDump/Wireshark 让我们能够可视化并理解网络中发生的一切,像是用显微镜观察一样。想象如果在 K8s 中也能做到这一点,当你部署工作负载、获取 pod、创建服务账户时,可以看到具体发生了什么,以及不同的工作负载之间是如何交互的等等。

Gource集群的样本可视化

现在还缺少什么呢?

要查看当你运行一个 kubectl 命令时具体发生了什么,你可以在你的 kubectl 命令中添加一个详细的标志,比如 -v=6,例如 kubectl get pods -v=6。详细级别从 0 到 9,0 最不详细,9 最详细。这个功能已经存在,但这个流程的可视化还不清楚。

使用 kubectl-v 标志可以让你查看 L7 API 调用,但并不能帮助你监控任何实际的网络流量。Kubeshark 会捕获 L3 和 L7,实际上它会捕获整个 L2 数据包。它会创建一个仪表板/视图来展示这些数据,就像 Wireshark 一样,帮助你查看数据。

库贝鲨控制面板

Kubeshark 是用来解决什么问题的?
  1. 监控一切 — 不论是监控Pod间网络流量,API调用,还是监控单个节点或服务,以及特定路径如 /latest/meta-data 或 /health。
  2. 可视化 — Kubeshark Viewer 简单而强大,可以实时查看流量,过滤,分析并排查任何问题。右侧详细信息中的请求响应详情非常清晰。
  3. PCAP存储 — 存储PCAP以便以后分析事件或情况,可以轻松地将其导出或存储到S3或其他存储中,之后加载并可视化查看。
  4. 更简单的调试 — 不论是调试问题还是深入理解集群中各个组件之间的通信,这都极大地使这一过程变得更容易。
  5. 实时告警 — 可以使用Kubeshark提供的数据构建或设置强大的K8s告警。想象一下获取密钥失败的请求,获取实例元数据失败的请求,以及其他许多异常情况。
亲自动手试试

亲自动手试试,开始亲自做一些实际的工作或尝试一些可能很复杂或困难的事情。

我们来安装 KubeShark 并看看它怎么用。你可以用这个命令来安装 KubeShark

运行以下命令来安装 Kubeshark:

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

你可以在这里下载适用于特定版本和架构类型的二进制文件

你可以在这里找到Kubeshark的最新版本:访问https://github.com/kubeshark/kubeshark/releases/

启动 Kubeshark 即可 —

运行此命令来监控所有网络流量:`kubeshark tap -A`

使用 tap -A 命令可以访问所有的命名空间,如果你想跟踪特定的命名空间,可以使用 -n 参数。

    kubeshark tap -n kube-system

Kubeshark 将监控并抓取流量,在你本地主机的 8899 端口启动一个查看器。

Kubeshark 启动了,仪表盘在 8899 端口上

我使用KOPS部署了测试环境中的集群,请注意,Kubeshark这个二进制文件会从~/.kube/config文件中读取当前上下文,并使用同一套凭证和集群来创建资源并开始监控。

可以通过创建一个本地 kind 集群,快速上手 Kubeshark 的运行情况。

玩一玩

咱们来看看我们在监控什么以及 Kubeshark 仪表板上都有哪些功能。这些是我用来测试 Kubeshark 的一些示例。

监控——一个节点,

通过服务地图进行可视化。

查看 AWS 实例元数据中的安全凭证路径,例如:/aws-logs/。

最后的感想
  1. 帮助我更深入地理解集群中各个组件在最底层如何进行通信和协作。
  2. 这使得调试和故障排除变得异常简单,只需在流量中添加适当的过滤器。
  3. 服务地图提供了集群的整体视觉概览。
  4. 可以扩展数据以实现实时警报,涵盖运营和安全方面。
  5. 在足够大的规模上进行性能基准测试,观察该工具在流量呈指数级增长的大规模情况下的扩展能力及其对计算和存储的影响。
  6. 诚然,将此与Sysdig falco或Cilium Tetragon进行比较并不公平,但采集和调整数据的方式让我思考其实时检测方面,并考虑在一些与K8s API异常相关的安全方面使用它。
  7. 或许我应当更多地使用这个工具来更深入地理解底层调用,以编写更好的与控制平面相关的运行时安全策略。据我所知,这将无助于检测任何容器异常或与容器运行时相关的异常。
总结

这个工具 Kubeshark 是一个强大的工具,之前叫做 Mizu,由 UP9 开发,最初作为一个 API 流量查看器,并在后来开放源代码了。现在更名为 Kubeshark,以表示这是 Wireshark 在 K8s 上的重生版本。

虽然有一些像 Sysdig Falco 和 Cilium Tetragon 这样的 K8s 运行时安全工具,它们利用了 eBPF 的功能,但据说 Kubeshark 同样利用了 eBPF 技术,不过它更专注于提供一个微观测级别的可视化工具,以便更好地理解通信细节。Kubeshark 提供的数据可以在运行时检测中发挥作用。

Github 地址 — https://github.com/kubeshark/kubeshark
网站地址 — https://kubeshark.co

感谢您的阅读。请随时指出任何错误。您可以通过LinkedInTwitter 联系我,我很乐意回答您的任何问题。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消