对集群发生的事情进行细致观察。
开头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 是用来解决什么问题的?亲自动手试试,开始亲自做一些实际的工作或尝试一些可能很复杂或困难的事情。
我们来安装 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/。
最后的感想这个工具 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
感谢您的阅读。请随时指出任何错误。您可以通过LinkedIn 或 Twitter 联系我,我很乐意回答您的任何问题。