一文解决Kubernetes 的 API 流量查看器 - Kubeshark
创始人
2024-03-27 06:16:36
0

一、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 < 300type: latencypath: /cataloguelatency: 300service: "catalogue.*"- name: FECatalogue-Latency-SLO #front-end's service "/catalogue" response time < 600mtype: latencypath: /cataloguelatency: 600service: "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 和微服务流量关联的知识图谱展示。

 

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...