一文解决Kubernetes 的 API 流量查看器 - Kubeshark

news2024/11/18 19:57:05

一、Kubeshark 是什么?

Kubeshark 由 2021 年 UP9 公司开源的 K8s API 流量查看器 Mizu 发展而来,试图成为一款 K8s 全过程流量监控工具。

Kubeshark 被叫做 kubernetes 的 API 流量查看器,它提供对进出 Kubernetes 集群内容器和 pod 的所有 API 流量和负载的深度可见性和监控。类似于针对 Kubernetes 而重新发明的 TCPDump 和 Wireshark。地址:https://github.com/kubeshark/kubeshark

Kubeshark 也被叫做 Kubernetes 的可观测性工具,可以对微服务进行动态分析,检测异常并在运行时出现某些模式时触发功能。

  1. 可以将 Kubeshark 视为 Wireshark、BPF 编译器集合 (BCC) 工具等的 Kubernetes 感知组合。

  2. Kubeshark 可以嗅探集群中的部分或所有 TCP 流量,将其记录到 PCAP 文件中并剖析。

  3. Kubeshark 使用 eBPF 来跟踪内核空间和用户空间中的函数调用。

 资料直通车:Linux内核源码技术学习路线+视频教程内核源码

学习直通车:Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈

二、Kubeshark 架构

Kubeshark 由三个不同的软件组成,它们可以协同工作:CLI、Hub 和 Worker。

  1. CLI,它是客户端的 二进制文件,通过 K8s API 与集群通信。

  2. Hub,它协调 worker 部署,接收来自每个 worker 的嗅探和剖析,并收集到一个中心位置。它还提供一个Web界面,用于在浏览器上显示收集到的流量。

  3. Work,作为 DaemonSet 部署到集群中,以确保集群中的每个节点都被 Kubeshark 覆盖。

三、Kubeshark 功能

1)Kubeshark 功能 - 网络嗅探

Kubeshark 可以使用 Linux 内核中内置的各种方法和 API 嗅探集群中的加密和未加密流量。

  1. 直接抓包,直接使用 libpcap、AF_PACKET 和 PF_RING 嗅探集群中的 TCP 流量,并将其记录到 PCAP 文件中。例如在使用服务网格的场景中,Kubeshark 会自动检测任何 Envoy Proxy并将其包含到其 TCP 数据包捕获源列表中。

  2. 基于 eBPF 抓包,基于 eBPF 的数据包捕获使用 eBPF 嗅探集群中的加密流量 (TLS),而无需实际进行解密。事实上,它挂钩到 OpenSSL 库和 Go 的 crypto/tls 包中某些函数的入口点和出口点。

2)Kubeshark 功能 – 查询

3)Kubeshark 功能 – 内核跟踪

Kubeshark 使用 🐝 eBPF(扩展伯克利数据包过滤器)提供跟踪内核空间和用户空间功能。

# 捕获加密的 TLS 流量

kubeshark tap --tls -n harbor

3)Kubeshark 功能 – 流量校验

Kubeshark 具有流量验证功能,可与网络嗅探器功能结合使用。

rules:
    - name: Catalogue-Latency-SLO #catalogue's service "/catalogue" response time < 300
      type: latency
      path: /catalogue
      latency: 300
      service: "catalogue.*"
    - name: FECatalogue-Latency-SLO #front-end's service "/catalogue" response time < 600m
      type: latency
      path: /catalogue
      latency: 600
      service: "front-end.*"

4)Kubeshark 功能 – 服务地图

部署完成后,Kubeshark CLI 将在 http://localhost:8899 打开 UI 单击右上角名为 Service Map 的按钮打开服务依赖关系图。该图根据网络流量显示 Pod 以及它们之间的关系。

5)Kubeshark 功能 – 数据脱敏

Kubeshark 捕获的流量包含敏感信息。用户可以配置 Kubeshark 以隐藏某些关键字或数据片段将在 UI 中显示为 [REDACTED]。

默认的脱敏字段 “token”, “authorization”, “authentication”, “cookie”, “userid”, “password”, “username”,

“user”, “key”, “passcode”, “pass”, “auth”, “authtoken”, “jwt”, “bearer”, “clientid”,

“clientsecret”, “redirecturi”, “phonenumber”, “zip”, “zipcode”, “address”, “country”,

“firstname”, “lastname”, “middlename”, “fname”, “lname”, “birthdate”

四、一些使用场景和用法

可以直接在其 github 站点上看到这些基本使用场景。

1)监控指定的 Pod

kubeshark tap catalogue-b87b45784-sxc8q

2)使用正则表达式监控一组 Pod

kubeshark tap "(catalo*|front-end*)"

3)指定监控的 Namespace

默认情况下,Kubeshark 部署在 default namespace 中,也是监听这个 namespace,可以使用下面的命令指定到一个不同的 namespace 中

kubeshark tap -n sock-shop

4)指定所有 Namespaces

kubeshark tap -A

五、总结

该工具底层基于 ePBF、Linux 内核网络 API,并且解决了流量数据加解密问题,整体上看是一款能够满足对 K8s 全过程流量监控与管理的工具。

但目前的实现还只是一个功能原型,在数据存储、网络访问、单机瓶颈等方面仍然存在问题,也不具备模拟流量仿真能力。优势在于提供了流量查询语言 KFL 和微服务流量关联的知识图谱展示。

 

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

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

相关文章

[附源码]JAVA毕业设计微服务的高校二手交易平台(系统+LW)

[附源码]JAVA毕业设计微服务的高校二手交易平台&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

多线程与高并发(14)——Executor框架(线程池基础)

一、简介 线程是什么&#xff0c;线程是一个任务的工作单元和执行单元。我们在用线程的时候知道&#xff0c;要创建线程&#xff0c;再执行线程。如果任务多的情况呢&#xff0c;会有大量的创建销毁线程的资源消耗&#xff0c;这时候就引入了线程池的概念。 JDK5开始&#xff…

使用Maven创建Servlet项目

创建Maven项目 点击FIle, 选择new ,选择Project… 选择Maven 然后点击next. 选择自己想要创建项目的目录.点击next 引入依赖 在pom.xml中添加servlet依赖. 先书写dependencies标签.然后在 Maven中央仓库 中找到servlet的依赖.复制填写进去. 这里是我常用的一个 Maven中央仓库…

TI Lab_SRR学习_3 速度扩展_2 interChirpProcessing_RangeDPU

RangeProcDSP共分为三步,如下图所示 transfers ADCBuf data through dataIn EDMA channels in ping/pong alternate order to FFT input scratch buffer - adcDataIn.Range FFT processing is done by using DSPlib and mmwavelib APIs. FFT input data is stored in input sc…

[附源码]计算机毕业设计JAVA中青年健康管理监测系统

[附源码]计算机毕业设计JAVA中青年健康管理监测系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM …

Python 实战分析某招聘网站数据分析岗位的招聘情况

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~ 今天案例难度指数: ☆☆☆ 准备 环境使用&#xff1a; Anaconda (python3.9) –>识别我们写的代码 开发工具&#xff1a; jupyter notebook –>代码编辑功能敲代码的工具 相关模块&#xff1a; seaborn pandas …

在CentOS7.9系统上安装N卡3060驱动、CUDA和离线升级gcc(4.8—>8.3)用以编译框架的过程记录

1、更换yum源 主要是在终端操作需要&#xff0c;在显示器界面可以直接联网解决网络问题进行软件安装或更新 """"备份原来的源""" mv /etc/yum.repos.d/ /etc/yum.repos.d.bak/ mkdir /etc/yum.repos.d vim /etc/yum.repos.d/xxx.repo &qu…

LeetCode HOT 100 —— 155.最小栈

题目 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 …

JavaScript 删除对象中的某一项

delete let obj{a:1,b:2,c:3,d:4,e:5,f:6} delete obj.b console.log(obj)运行结果&#xff1a; Reflect.deleteProperty JavaScript 中的静态方法 Reflect.deleteProperty() 允许用于删除对象上的属性。它很像 deleteoperator&#xff0c;但它是一个函数。 Reflect.delet…

Python操作Azure Blob Storage

安装 Azure Storage SDK for Python 最简单的方式是在安装了 python 和 pip 的机器上直接执行下面的命令&#xff1a; pip install azure-storage 安装完成后通过 pip freeze 命令查看安装的版本&#xff1a; 由于 Azure Storage SDK for Python 是一个开源项目&#xff0c;…

Buildroot系列开发(七)block device

摘自&#xff1a;百问网 文章目录1.块设备2.1 什么是块设备&#xff1f;raw flash&#xff1f;2.2 block device 列表2.3 块设备分区2.4 传输数据到块设备2. 块设备文件系统2.1 支持的块设备文件系统2.2 linux / unix 其他日志文件系统2.3 F2FS2.4 SquashFS2.5 如何选择最佳文件…

计算机网络-转发表和路由选择协议

有志者&#xff0c;事竟成 文章目录一、描述1、转发表和路由选择协议二、总结一、描述 1、转发表和路由选择协议 前面我们说过&#xff0c;路由器从与它相连的一条通信链路得到分组&#xff0c;然后向与它相连的另一条通信链路转发该分组。但是路由器怎样决定它应当向哪条链路…

Docker[4]-Docker数据卷

数据卷 前面我们介绍了镜像和容器&#xff0c;通过镜像我们可以启动多个容器&#xff0c;但是我们发现当我们的容器停止获取删除后&#xff0c;我们在容器中的应用的一些数据也丢失了&#xff0c;这时为了解决容器的数据持久化&#xff0c;我们需要通过容器数据卷来解决这个问…

一文4000字教你如何使用可视化的Docker进行UI自动化测试

随着 docker 的发展&#xff0c;很多测试的同学也已经在测试工作上使用 dockr 作为环境基础去进行一些自动化测试&#xff0c;这篇文章主要讲述我们在 docker 中使用浏览器进行自动化测试如果可以实现可视化&#xff0c;同时可以对浏览器进行相关的操作。 开篇 首先我们先了解…

【C++学习笔记】C++编程环境配置

g跟gcc之间是否有依赖关系 g跟gcc之间没有依赖关系&#xff0c;两者分别对应面向C和C语言的编译程序&#xff0c;关于gcc和g的区别&#xff0c;请参考知乎回答《gcc和g是什么关系&#xff1f; ——gcc 和 g 的区别》 1 Ubuntu环境配置 Ubuntu官方源提供gcc和g预编译版本 Ub…

用一张图说一说 ChatGPT 内部技术工作流程

前沿 这几天ChatGPT可谓是热火朝天&#xff0c;很多同事和朋友都来找到勇哥&#xff0c;说能不能说一说相关话题&#xff0c;但是之前几天勇哥都在默默的干一件大事情&#xff0c;今天终于成型、有结果了&#xff0c;所有就抽了点时间来和大家一起聊聊ChatGPT背后的技术&#…

.net开发安卓入门 - 布局与样式(像素单位px、dp、sp的区别)

.net开发安卓入门 - 布局与样式布局LinearLayoutRelativeLayoutTableLayoutRecyclerViewListViewGridViewGridLayoutTabbed Layouts主题 Material Theme主题应用程序主题活动像素pxdpdipsp常用UI框架推荐常用动画推荐布局 布局用于排列构成屏幕的 UI 界面的元素 (&#xff0c;…

没有公网IP,怎样远程查看视频监控?

视频监控通常被称作“第三只眼”。如今&#xff0c;除了最基础的安防需求外&#xff0c;视频监控在不同的应用场景延伸出了各种各样的功能需求&#xff0c;并且正与日俱增。 常见的家庭应用场景&#xff0c;如照看老人小孩、宠物等&#xff1b;常见的公司应用场景&#xff0c;如…

vue的script动态改css、scss变量方法

解决场景&#xff1a;script设颜色变量&#xff0c;<style>的background-color的值"#ddd"的跟着变 序 1、这篇博文适用vue2和vue3版本&#xff0c;博主实验时&#xff0c;vue3的版本是^3.2.45 2、 其实要解决的方案在vue3里有一个专栏“单文件组件的 <…

[附源码]Python计算机毕业设计Django志愿者服务平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…