Kubernetes API 流量分析器 Kubeshark 中文入门指南

一文解决KubernetesAPI 流量查看器 - Kubeshark 该工具底层基于 ePBF、Linux 内核网络 API,并且解决了流量数据加解密问题,整体上看是一款能够满足对 K8s 全过程流量监控与管理的工具。但目前的实现还只是一个功能原型,在数据存储、网络访问、单机瓶颈等方面仍然存在问题,也不具备模拟流量仿真能力。优势在于提供了流量查询语言 KFL 和微服务流量关联的知识图谱展示。 阅读详情

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

8ec76536223667e6f308df21cf69b5d0.png

Kubernetes 网络概述

在 Kubernetes 集群中,每个容器都在一个 Pod 中运行,并且 Pod 由 Kubernetes 控制平面调度到节点(物理机或虚拟机)上。Kubernetes 网络为 Pod 之间、服务之间以及外部资源之间的通信提供了一种方式。

Kubernetes 使用扁平网络模型,所有 Pod 都可以直接相互通信,无论它们运行在哪个节点上。为了实现这一点,Kubernetes 设置了一个跨越集群中所有节点的虚拟网络,并为每个 Pod 分配了该网络中唯一的 IP 地址。

你是否想知道 Kubernetes 中的 API 流量去了哪里?

仔细想想,你在 Kubernetes 集群上执行的任何操作都是 API 调用。无论你是创建新的 Pod 还是列出 Ingress Controller,这都是 API 调用。

bf9136d8f157bbab4a3590a4bd8ddbb0.png
Kubeshark

在这篇博文中,你将了解如何利用 Kubeshark(适用于 Kubernetes 的 API 流量查看器)提供对 Kubernetes 内部网络的实时协议级可见性---捕获、剖析和监控所有(跨容器、pod、节点和集群)进出的流量和有效负载。

什么是 Wireshark?

在深入了解 Kubeshark 之前,有必要简单介绍一下 Wireshark。为什么?因为当你看到谈论 Kubeshark 时,你会看到它与 Wireshark 的比较。

Wireshark是一款免费的开源数据包分析器。它用于网络故障排除、分析。Wireshark是跨平台的,并使用Qt工具来实现其用户界面,使用pcap来捕获数据包;它可以在 Linux、macOS、BSD、Solaris、其他一些类 Unix 操作系统和 Microsoft Windows 上运行。还有一个基于终端(非 GUI)的版本,称为 TShark。Wireshark 与 tcpdump 非常相似,但具有图形化以及集成的排序和过滤选项。

TCPDump/Wireshark 使我们能够在微观层面上可视化和理解网络中发生的情况。想象一下,如果这样的事情在 Kubernetes 中是可能的,你就可以看到工作负载、Pod或服务帐户间相互交互时到底会发生什么。

Kubeshark 与 Wireshark 非常相似,会展示每次调用时发生的情况。不同之处在于 Wireshark 查看数据包。Kubeshark 查看 API 调用。

API 调用?

在 Kubernetes 中,你可能看起来没有进行 API 调用。你运行一些看起来像的命令kubectl get pods,并认为它只是一个命令,但该命令实际上是在进行 API 调用。当你运行时kubectl get pods,你实际上正在做的是对 Kubernetes API 服务器执行GET请求。

无论你是在创建新的 Kubernetes 资源(例如部署或服务),还是在检索有关 Kubernetes 资源的信息,你都在进行 API 调用。每当你与 Kubernetes 交互时,你都在进行 API 调用。

正如你可以想象的那样,有大量流量流向 API 服务器。假如,我们能够监控流量是多么有意义,并且对于故障排除特别有帮助。

为什么选择 Kubeshark?

Kubeshark 填补了 Kubernetes 长期以来的空白——以可视化方式查看 API 调用。

你能看到在没有 Kubeshark 的情况下完成的 API 调用吗?绝对地。

下面的命令将向你展示用于检索 Pod 信息的 API 调用。

kubectl get pods -v=8

你会看到类似于下面显示 API 调用的输出。

919e09266ad4363df17e12370ace74d8.jpeg

问题是它不是很直观,而且有很多信息,看起来有点混乱。这就是 Kubeshark 的可视化发挥作用的地方,它满足了以更清晰的方式查看 API 调用的需求。

Kubeshark 架构分析

08b0e0dc7416066fa045047bb2c48a11.png
Kubeshark 架构分析

Kubeshark 由四个协同工作的组件组成:

CLI

Kubeshark 客户端的二进制发行版,由 Go 语言编写。

它通过 K8s API 与你的集群通信,以部署 Hub 和 Worker Pod。

Hub

Hub 是一个 pod,充当 Workers 的网关。它托管一个 HTTP 服务器并用于以下目的:

  • • 接受 WebSocket 连接和随附的过滤器。

  • • 与Worker建立新的 WebSocket 连接。

  • • 接收来自Worker的流量。

  • • 将结果流式传输回请求者。

  • • 通过 HTTP 调用配置工作线程状态。

Worker

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

Worker 包含网络嗅探器和内核跟踪器的实现。它从所有网络接口捕获数据包,重新组装 TCP 流,如果它们是可解析的,则将它们存储为PCAP文件。Worker 通过 WebSocket 连接将收集到的流量传输到 Hub。

Kubeshark 存储原始数据包并根据查询按需解析它们。

Worker 本身可以用作计算机上的网络嗅探器,而无需 Kubernetes 集群。

分布式协议解析器

应用层协议的解析器分布在整个集群中(DaemonSet配置)。

基于PCAP的分布式存储

Kubeshark 使用基于 PCAP 的分布式存储,其中每个工作线程将捕获的 TCP 流,并存储在节点的根文件系统中。

Kubeshark 默认设置为 200MB 的存储限制。该限制可以通过 CLI 选项进行更改。

网络开销低

为了减少潜在的网络开销,仅根据请求通过网络发送一小部分流量。

Web UI

前端是一个 React 应用程序,它通过 WebSocket 与 Hub 通信,显示捕获的流量。

5e633de498619a1547a79e11ffe07c78.png
Web UI

Kubeshark 安装

Kubeshark 入门很简单。你只需下载 CLI 并运行它。

你可以使用 shell 脚本下载适合你的操作系统和 CPU 架构的二进制文件:

sh <(curl -Ls https://kubeshark.co/install)

# 或者使用以下命令指定版本
curl -Lo kubeshark https://github.com/kubeshark/kubeshark/releases/download/41.6/kubeshark_linux_amd64 && chmod 755 kubeshark

其他方法可以在https://docs.kubeshark.co/en/install找到

Kubeshark 示例

以下是如何使用 Kubeshark CLI 开始捕获 Kubernetes 集群中的流量的一些示例:

kubeshark tap
kubeshark tap -A
kubeshark tap -n sock-shop "(catalo*|front-end*)"

运行 CLI 后,默认情况下,浏览器窗口将在 localhost:8899 打开。

85ca11bb42f09e231c730390676e341a.png

为了演示 kubeshark 的使用,让我们将示例应用程序部署到 kuberenetes 集群中。我们正在部署 kuberentes 官方文档中留言板应用程序。

使用 Redis 部署 PHP 留言板应用程序: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/

# 1. 启动 Redis 数据库--留言板应用程序使用 Redis 存储数据
# 创建 Redis 领导者
kubectl apply -f https://k8s.io/examples/application/guestbook/redis-leader-deployment.yaml
kubectl apply -f https://k8s.io/examples/application/guestbook/redis-leader-service.yaml
# 设置 Redis 跟随者
kubectl apply -f https://k8s.io/examples/application/guestbook/redis-follower-deployment.yaml
kubectl apply -f https://k8s.io/examples/application/guestbook/redis-follower-service.yaml

# 2. 留言板的 Web 服务器
# 留言板 应用使用 PHP 前端。该前端被配置成与后端的 Redis 跟随者或者 领导者服务通信,具体选择哪个服务取决于请求是读操作还是写操作。 前端对外暴露一个 JSON 接口,并提供基于 jQuery-Ajax 的用户体验。
kubectl apply -f https://k8s.io/examples/application/guestbook/frontend-deployment.yaml
kubectl apply -f https://k8s.io/examples/application/guestbook/frontend-service.yaml
# 通过 kubectl port-forward 查看前端服务
kubectl port-forward svc/frontend 8080:80


在浏览器中加载 http://localhost:8080 页面以查看 留言板应用程序

验证已安装的应用程序正在运行。

9e47be31775de89a60cc393eaabdec4f.png

让我们为应用程序的命名空间运行 kubeshark。命令如下:

kubeshark tap -n <namespace name>

运行 CLI 后,默认情况下,浏览器窗口将在 localhost:8899 打开。

4fdf874cf41f69ec59a3c5068b079f76.png

让我们产生一些流量。

8242321d4e496908b54c880fb2a9d5e4.png 55b8b087c66354ba0b1c15b706cad370.png

服务地图

44df956c2b705feb6c377b30d866589b.png 8a1bf8d604069f6a5e9add56f9c5e4af.png

在本博客中,我们了解了如何使用Kubeshark分析 Kubernetes 集群中的网络流量,它为 Kubernetes 管理员和开发人员提供了几个优势:

  1. 1. 增强的可见性:Kubeshark 提供 Kubernetes 集群中 Pod 和服务之间网络流量的实时可见性。这可以帮助你排除和诊断与网络相关的问题,例如响应时间慢或延迟高。

  2. 2. 易于使用:Kubeshark 是一个 kubectl 插件,这意味着它可以在 Kubernetes 命令行界面中轻松安装和使用。你无需学习新工具或界面即可使用 Kubeshark。

  3. 3. 粒度过滤:Kubeshark 允许你根据各种标准过滤网络流量,例如协议、源 IP 地址、目标 IP 地址和端口号。这可以帮助你关注特定的流量模式并识别潜在的安全威胁。

  4. 4. 与 Wireshark 集成:Kubeshark 使用 Wireshark 作为其底层网络协议分析器,这是网络分析社区中广泛使用且成熟的工具。这使你可以利用 Wireshark 的高级功能,例如协议解码和数据包分析。

结论

Kubeshark 是一款功能强大的工具,早期称为 Mizu,由 UP9 开发的 API 流量查看器,后来开源,现在更名为 Kubeshark,标志着 Wireshark 为 K8s 重生。

虽然有一些复杂的 K8s 运行时安全工具,例如 Sysdig Falco、Cilium Tetragon 都是利用 eBPF 功能构建的,但文档中提到 Kubeshark 也使用 eBPF,但更专注于提供微观层面的可视化层,以更好帮助我们了解网络通信。Kubeshark 提供的数据肯定可以用于运行时检测的几个方面。

总体而言,Kubeshark 为 Kubernetes 集群中的网络分析提供了强大且灵活的工具,其与 Wireshark 的集成以及易用性使其成为 Kubernetes 管理员和开发人员的选择

本文转载自:「云原生百宝箱」,原文:https://url.hi-linux.com/jsxcA,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

90373bf6b50d6e7a5ea1b7e674560eca.gif

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

dd5e36686a767aecd425a8119b8f484a.png

你可能还喜欢

点击下方图片即可阅读

78fdac526b0c36043b1cfb338947b222.png

Crawlab: 一款 Go 语言开发的超强企业级爬虫管理平台

3595c35f6e579d5eb4f21a6856560aaa.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

6fb2c065d551aa63f1a7f092f610a6c6.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

Kubernetes网络监控利器Kubeshark:基于eBPF的全链路流量抓包与协议分析 云原生和微服务架构中,网络通信的可观测性是保障系统稳定性的关键。传统网络抓包工具如tcpdump在动态的Kubernetes环境中面临挑战,而eBPF技术通过在Linux内核层安全高效地处理网络数据包,为容器化环境提供了新的监控方案。Kubeshark正是基于eBPF构建的Kubernetes原生网络监控平台,它能够非侵入式地捕获集群内部所有API级别的通信流量,支持HTTP、gRPC、Kafka、Redis等数十种协议解析。该工具通过分布式架构实现流量捕获、协议解析与数据聚合,为微服务间API调试、性能 阅读详情

相关推荐

Kubernetes】使用Kubeshark监控K8s集群的API流量

下载完成后,我们将文件移动到 /usr/local/bin 目录下,并将 /usr/local/bin 添加到系统的环境变量中即可。Kubeshark 是一款针对 KubernetesAPI 流量分析器,提供对 Kubernetes 内部网络的实时协议级可见性,捕获和监控进出容器、Pod、节点和集群的所有流量和有效负载。Kubeshark 提供了一个即时的、身份感知的服务地图,其中包含实时性能 KPI,可用于将您的分析重点放在集群的特定部分。

cnskylee的博客 1746

K8s:通过 Kubeshark 体验 大白鲨(Wireshark)/TCPDump 监控 Kubernetes 集群

分享一个k8s集群流量查看器很轻量的一个工具,监控方便博文内容涉及:Kubeshark简单介绍Windows、Linux 下载运行监控DemoKubeshark特性功能介绍理解不足小伙伴帮忙指正对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》Kubeshark是 2021 年由 UP9 公司开源的一个 K8s API 流量查看器。

山河已无恙 2603

云原生 | Kubernetes 系列】—Kubernetes网络分析器-kubeshark

KubesharkKubernetesAPI 流量分析器,提供对 Kubernetes 内部网络的实时协议级可见性,捕获、剖析和监控进出以及跨容器、pod、节点和集群的所有流量和负载。

云录 713

Kubeshark 使用教程

Kubeshark 使用教程 【免费下载链接】kubeshark The API traffic analyzer for Kubernetes providing real-time K8s protocol-level visibility, capturing and monitoring all traffic ...

gitblog_00298的博客 779

终极Kubeshark贡献指南:如何成为开源Kubernetes流量分析项目的一员

KubesharkKubernetesAPI流量分析器,提供实时K8s协议级可见性,捕获和监控容器、Pod、节点和集群之间的所有流量和负载。这个强大的Kubernetes网络流量分析工具正在改变云原生应用的可观测性方式。本文为你提供完整的Kubeshark社区贡献指南,帮助你快速融入这个活跃的开源项目。🚀 ## 为什么选择贡献Kubeshark项目? Kubeshark作为Kuberne

gitblog_00020的博客 850

Kubeshark深度解析:重新定义Kubernetes流量监控的革命性工具

Kubeshark是一款专为Kubernetes设计的革命性API流量分析工具,提供实时、协议级别的深度可见性,彻底改变传统Kubernetes流量监控方式。🚀 作为Kubernetes领域的TCPDump和Wireshark,Kubeshark能够捕获和监控容器、Pod、节点和集群之间的所有流量和有效载荷,为开发者和运维团队提供前所未有的洞察力。 ## 🔍 什么是Kubeshark? K

gitblog_01084的博客 1054

Kubeshark K8S API流量查看器

Kubeshark 是专为 Kubernetes 设计的 API 流量分析器,它提供实时的协议级别的可见性,可以捕获和监控所有在容器、Pod、节点和集群之间进出和流动的流量和负载。可以把它想象成专门针对 Kubernetes 重新发明的 TCPDump 和 Wireshark 工具。

weixin_43897452的博客 388

Kubeshark批量操作API:一次性导出多个时间段的流量数据终极指南

Kubeshark作为Kubernetes API流量分析器的终极工具,提供实时协议级别的网络流量可见性。Kubeshark批量操作API功能让用户能够一次性导出多个时间段的流量数据,极大提升了运维效率。这款开源工具重新定义了Kubernetes网络监控的方式,让复杂的流量分析变得简单直观。 ## 🔍 什么是Kubeshark批量操作APIKubeshark批量操作API是一个强大的功能

gitblog_00586的博客 645

终极指南:如何高效优化Kubeshark大规模集群流量处理性能

Kubeshark作为KubernetesAPI流量分析器,提供了实时的K8s协议级可见性,能够捕获和监控容器、Pod、节点和集群之间的所有流量和有效载荷。对于大规模集群来说,性能优化尤为重要。本文为您带来Kubeshark性能优化的完整解决方案。 ## 🔍 Kubeshark性能监控基础 Kubeshark的设计灵感来自Wireshark,专门为Kubernetes环境构建。其核心功能包

gitblog_00367的博客 1264

鲨鱼来袭:深入探索Kubernetes网络的神器-Kubeshark

鲨鱼来袭:深入探索Kubernetes网络的神器-Kubeshark 【免费下载链接】kubeshark 项目地址: https://gitcode.com/gh_mirrors/mi/mizu ...

gitblog_00651的博客 681

终极指南:7个Kubeshark最佳实践提升K8s网络可观测性

Kubeshark作为KubernetesAPI流量分析工具,提供了实时K8s协议级别的可见性,能够捕获和监控容器、Pod、节点和集群之间的所有流量和负载。这个强大的网络嗅探工具专为Kubernetes环境设计,让网络故障排查变得前所未有的简单。 ## 🚀 一键部署与快速启动 使用Homebrew快速安装Kubeshark CLI: ```shell brew install kubes

gitblog_00805的博客 467

Kubeshark流量导出格式详解:PCAP、JSON与Parquet文件对比

想要深入了解Kubernetes集群中的网络流量Kubeshark作为强大的API流量嗅探工具,提供了多种流量导出格式选择。本文将为你全面解析PCAP、JSON和Parquet三种主要格式的特点、适用场景和使用方法,帮助你根据需求选择最合适的导出方案。🚀 ## Kubeshark流量导出功能简介 Kubeshark是一个专门为Kubernetes设计的API流量分析器,能够实时捕获和分析容

gitblog_00503的博客 358

重磅开源,Kubernetes 监控利器来了!

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 E...

芋艿V 217

KubernetesAPI流量查看器-Kubeshark

Kubeshark 由 2021 年 UP9 公司开源的 K8s API 流量查看器 Mizu 发展而来,试图成为一款 K8s 全过程流量监控工具。Kubeshark 被叫做 kubernetesAPI 流量查看器,它提供对进出 Kubernetes 集群内容器和 pod 的所有 API 流量和负载的深度可见性和监控。类似于针对 Kubernetes 而重新发明的 TCPDump 和 Wireshark。

MyySophia的博客 1087

又一款轻量级监控利器!开源了

点关注公众号,回复“1024”获取2TB学习资源!大家好,我是民工哥。今天给大家分享一个 k8s 集群流量查看神器,很轻量的一个工具,监控非常方便!Kubeshark 简介Kubeshark 由 2021 年 UP9 公司开源的 K8s API 流量查看器 Mizu 发展而来,试图成为一款 K8s 全过程流量监控工具。官网:https://kubeshark.co/Kubeshark 提供实时的 ...

民工哥的博客 696

Kubeshark高级部署与配置指南

Kubeshark高级部署与配置指南 【免费下载链接】kubeshark The API traffic analyzer for Kubernetes providing real-time K8s protocol-level visibility, capturing and monitoring all traf...

gitblog_01099的博客 1025
上一篇: 9 款日志采集管理工具对比,选型必备!
下一篇: 如何在 Harbor 与阿里云镜像服务 (ACR) 间优雅进行镜像迁移
运维之美
博客等级 码龄21年 2234粉丝 · 150原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值