KubeShark: Kubernetes的Wireshark

news2025/4/21 18:47:57

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

简介

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仪表板
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端口上
启动kubesshark,仪表盘暴露在8899端口上

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

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

玩一会儿

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

单节点监控 ——

alt

可视化服务地图 ——

alt

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

alt
一些思考
  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

参考资料

[1]

KubeShark: Wireshark for Kubernetes: https://medium.com/kernel-space/kubeshark-wireshark-for-kubernetes-4069a5f5aa3d

- END -

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1280842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM大语言模型(一):ChatGLM3-6B试用

前言 LLM大语言模型工程化&#xff0c;在本地搭建一套开源的LLM&#xff0c;方便后续的Agent等特性的研究。 本机环境 CPU&#xff1a;AMD Ryzen 5 3600X 6-Core Processor Mem&#xff1a;32GB GPU&#xff1a;RTX 4060Ti 16G ChatGLM3代码库下载 # 下载代码库 ​git c…

使用求2个字符串最短编辑距离动态规划算法实现 git diff 算法 java 实现

测试类 MyDiffTest.java&#xff1a; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List;public class MyDiffTest {private static String path "\\xxx\\";private static List<String> lines…

java操作windows系统功能案例(三)

以下是一些 Java 操作 Windows 系统功能的案例&#xff1a; 打开 Windows 计算器 public class Calculator {public static void main(String[] args) throws Exception {Runtime.getRuntime().exec("calc.exe");} }打开 Windows 默认浏览器 public class Browser…

数学字体 Mathematical fonts

Mathematical fonts 数学字体&#xff1a; ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathbb{ABC…

332. 重新安排行程

题目描述 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从 JFK 开始。如…

谷歌 Gemini 模型发布计划推迟:无法可靠处理部分非英语沟通

本心、输入输出、结果 文章目录 谷歌 Gemini 模型发布计划推迟&#xff1a;无法可靠处理部分非英语沟通前言由谷歌 CEO 桑达尔・皮查伊做出决策从一开始&#xff0c;Gemini 的目标就是多模态、高效集成工具、API花有重开日&#xff0c;人无再少年实践是检验真理的唯一标准 谷歌…

《微信小程序开发从入门到实战》学习四十

4.2 云开发JSON数据库 4.2.11 更新数据 使用数据库API更新数据有两种方法&#xff1a;一.将记录局部更新的update方法&#xff1b;二.以替换的方式更新记录的set方法 update方法可以局部更新一个记录或一个集合的多个记录&#xff0c;更新时只有指定字段更新&#xff0c;其他…

【数电笔记】18-卡诺图化简

目录 说明&#xff1a; 用卡诺图化简逻辑函数 1. 公式法化简与卡诺图化简对比 2. 化简依据 3. 化简规律 3.1 两个小方块相邻 3.2 四个小方块相邻 3.3 八个小方块相邻 4. 卡诺图化简法步骤 4.1 例1 4.2 例2 5. 画卡诺圈规则 5.1 例1 6. 特殊情况 6.1 例1 6.2 例…

算法设计与实现--贪心篇

贪心算法 贪心算法是一种在每一步选择中都采取当前状态下最优决策的算法&#xff0c;以期望能够通过一系列局部最优的选择达到全局最优。贪心算法的关键是定义好局部最优的选择&#xff0c;并且不回退&#xff0c;即一旦做出了选择&#xff0c;就不能撤销。 一般来说&#xf…

【栈和队列(2)】

文章目录 前言队列队列方法队列模拟实现循环队列练习1 队列实现栈 前言 队列和栈是相反的&#xff0c;栈是先进后出&#xff0c;队列是先进先出&#xff0c;相当于排队打饭&#xff0c;排第一的是最先打到饭出去的。 队列 队列&#xff1a;只允许在一端进行插入数据操作&…

C++基础从0到1入门编程(六)- 类继承、类多态

系统学习C&#xff0c;本章将记录类继承、类多态的相关概念 方便自己日后复习&#xff0c;错误的地方希望积极指正 往期文章&#xff1a; C基础从0到1入门编程&#xff08;一&#xff09; C基础从0到1入门编程&#xff08;二&#xff09; C基础从0到1入门编程&#xff08;三&am…

西瓜书-主要符号表

主要符号表 LaTeX符号说明How to read letter?\mathit{x}标量\boldsymbol{x}向量\mathrm{x}变量集\mathbf{A}矩阵\mathbf{I}单位阵\mathcal{X}样本空间或状态空间calligraphic X\mathcal{D}概率分布Ɗ calligraphic D\mathit{H}数据样本&#xff08;数据集)\mathcal{H}假设空…

智能优化算法应用:基于差分进化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于差分进化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于差分进化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.差分进化算法4.实验参数设定5.算法结果6.参考…

IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

文章目录 前言即时通讯常用技术 短轮询&#xff08;Short Polling&#xff09;实现原理优点缺点 长轮询(Long Polling)实现原理改进点基于iframe的长轮询实现原理总结 Server-Sent Events&#xff08;SSE&#xff09;实现原理浏览器对 SSE 的支持情况SSE vs WebSocket总结 WebS…

基于英特尔平台及OpenVINO2023工具套件优化文生图任务

当今&#xff0c;文生图技术在很多领域都得到了广泛的应用。这种技术可以将文本直接转换为逼真的图像&#xff0c;具有很高的实用性和应用前景。然而&#xff0c;由于文生成图任务通常需要大量的计算资源和时间&#xff0c;如何在英特尔平台上高效地完成这些计算是一个重要的挑…

基于Java SSM框架+Vue实现企业公寓后勤管理系统项目【项目源码+论文说明】

基于java的SSM框架Vue实现企业宿舍后勤管理网站演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所…

RC低通滤波电路直接带载后会发生什么?

1、滤波的含义 滤波是频域范畴&#xff0c;它说的是不同频率的信号经过一个电路处理后&#xff0c;信号发生变化的问题&#xff0c;变化包含了原始信号幅值和相位的变化&#xff0c;滤波电路对信号的幅值做出的响应称为幅频响应&#xff0c;对信号相位做出的反应称为相频响应。…

【MySQL】视图 + 用户管理

视图 前言正式开始视图用户管理user表创建新用户修改用户密码权限管理给用户赋权剥夺权限 前言 本篇所讲的视图和我上一篇事务中所讲的读视图不是一个东西&#xff0c;二者没有任何关系&#xff0c;如果看过我前一篇博客的同学不要搞混了。 其实视图和用户管理本来是想着分开…

perl脚本批量处理代码中的中文注释乱码的问题

代码中统一使用utf-8编码是最好的&#xff0c;但是有一些多人合作的项目或者一些历史遗留代码&#xff0c;常见一些中文注释乱码的问题。这里以一个开源项目evpp为例子 evpp。以项目中的一个commit id为例&#xff1a; 477033f938fd47dfecde43c82257cd286d9fa38e &#xff0c; …

数据结构之堆排序以及Top-k问题详细解析

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力 目录 1.前言 2.堆排序 2.1降序排序 2.2时间复杂…