KubeShark: Kubernetes 的 Wireshark

简介: KubeShark: Kubernetes 的 Wireshark

Wireshark 可以帮助我们抓取并分析网络数据包,理解网络中发生的事情,那是否有工具可以帮助我们理解在 K8S 集群中发生的事情,帮助排查集群故障,Kubeshark 就是这样的工具。原文: KubeShark: Wireshark for Kubernetes

简介

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


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


集群的示例源代码可视化

现在缺少什么?

要查看启动 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.co




你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。

微信公众号:DeepNoMind

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Kubernetes API 调度
Kubernetes必备知识: CNI
CNI的全称是 Container Network Interface,即容器网络的 API 接口。 它是 K8s 中标准的一个调用网络实现的接口。Kubelet 通过这个标准的 API 来调用不同的网络插件以实现不同的网络配置方式。实现了这个接口的就是 CNI 插件,它实现了一系列的 CNI API 接口。常见的 CNI 插件包括 Calico、flannel、Terway、Weave Net 以及 Contiv。
1989 0
Kubernetes必备知识: CNI
|
1月前
|
存储 Kubernetes 安全
Kubernetes 命令大全
Kubernetes 命令大全
|
1月前
|
Kubernetes 网络协议 Linux
Cilium 系列 -2-Cilium 快速安装
Cilium 系列 -2-Cilium 快速安装
|
11月前
|
Kubernetes Ubuntu Unix
Linux安装 v1.27.3 Kubernetes
Linux Install Kubernetes
207 0
|
6月前
|
Kubernetes 负载均衡 安全
Kubernetes7大网络插件之Antrea
Kubernetes7大网络插件之Antrea
188 0
|
运维 Kubernetes 监控
kubernetes 安装cilium
Cilium是一个开源软件,用于透明地提供和保护使用Kubernetes,Docker和Mesos等Linux容器管理平台部署的应用程序服务之间的网络和API连接。 Cilium基于一种名为BPF的新Linux内核技术,它可以在Linux内部动态插入强大的安全性,可见性和网络控制逻辑。 除了提供传统的网络级安全性之外,BPF的灵活性还可以在API和进程级别上实现安全性,以保护容器或容器内的通信。由于BPF在Linux内核中运行,因此可以应用和更新Cilium安全策略,而无需对应用程序代码或容器配置进行任何更改。
922 1
|
Kubernetes 监控 负载均衡
10个最佳的Kubernetes工具
Kubernetes生态工具整理
1015 0
10个最佳的Kubernetes工具
|
运维 Kubernetes 数据可视化
kubernetes 1.13 全新安装指南
kubernetes官方提供了中文文档,网上也有不少中文教程,可是实际的安装过程中,还是遇到了不少的坑。
198 0
kubernetes 1.13 全新安装指南
|
存储 Kubernetes 监控
2.2 Kubernetes--网络通讯
k8s的网络模型假定了所有的Pod都在一个可以直接连通的扁平的网络空间中, 这在GCE(Google Compute Engine)里面是线程的网络模型, Kubernetes假定这个网络已经存在. 而在私有云里搭建Kubernetes集群, 就不能假定这个网络已经存在了. 我们需要自己实现这个网络假设, 将不同节点上的Docker容器之间的互相访问先打通, 然后运行Kubernetes.
208 0
2.2 Kubernetes--网络通讯
|
存储 Kubernetes 网络协议
Kubernetes网络分析之Flannel
Flannel是cereos开源的CNI网络插件,flannel支持多种网络模式,在实际的生产环境中,最常用的还是vxlan模式,本文将介绍其工作原理,并通过源码解析实现过程。