Muzi:轻松洞察 K8s 流量的利器

一 背景

在 Kubernetes 的世界里,复杂的网络流量往往难以追踪和调试。开发和运维人员需要一款便捷的工具来洞察集群内部的流量走向,以便快速定位问题和优化性能。Muzi 应运而生,成为 K8s 流量查看的利器。

Mizu 是一个简单但功能强大的 Kubernetes API 流量查看器,可以让我们查看微服务之间的所有 API 通信,以帮助你调试和排查故障,相当于 TCPDumpChrome Dev Tools 工具的结合。

Muzi 是一个开源的 Kubernetes 网络流量可视化工具,它可以帮助用户实时查看集群内部服务之间的流量拓扑和流量指标,例如:

  • 服务之间的连接关系
  • 请求数量、延迟、错误率
  • TCP 连接状态
  • HTTP 请求详情

Muzi 的界面简洁直观,用户无需复杂的配置即可轻松上手。它支持多种流量协议,包括 HTTP、gRPC、Dubbo 等,并提供丰富的过滤和查询功能,帮助用户快速找到所需信息。

二 特性

  • 轻量级: Muzi 部署简单,资源消耗低,对集群性能影响 minimal。
  • 实时性: Muzi 实时展示流量数据,帮助用户及时发现问题。
  • 可视化: Muzi 提供直观的图形界面,方便用户理解流量拓扑和指标。
  • 易用性: Muzi 操作简单,用户无需编写代码即可进行流量查看和分析。
  • 可扩展性: Muzi 支持插件扩展,用户可以自定义功能和指标。

三 安装部署

Mizu 是一个 Golang 开发的二进制工具包,只需要单独下载即可运行。

2.1 mac

shell 复制代码
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/0.16.15/mizu_darwin_amd64 && chmod 755 mizu

2.2 linux

shell 复制代码
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/0.16.15/mizu_linux_amd64 && chmod 755 mizu

Mizu 使用的是 KUBECONFIG 环境变量来查找 kubeconfig 文件,如果没有设置则使用默认的 $HOME/.kube/config 文件,所以只需要保证我们的 kubectl 能正常控制 Kubernetes 集群,那么 Mizu 就可以正常运行了。

此外 Mizu 会假设运行该命令的用户有权在你的 Kubernetes 集群上创建资源对象(比如 pod、service、namespace)。

三 使用

3.1 查看浏览

要使用 Mizu 来查看流量,只需要按照下面的步骤操作即可:

  1. 在 Kubernetes 集群中查找你想要查看的 Pod
  2. 运行 mizu tap 或者 mizu tap PODNAME 命令
  3. 在浏览器中打开 http://localhost:8899/mizu 页面
  4. 在打开的页面中即可观察 API 的流量
  5. 输入 ^C 即可停止

假设我们正在运行的 Pod 列表如下所示:

要查看指定 Pod 的流量,只需要输入 Pod 名即可:

kotlin 复制代码
mizu tap catalogue-b87b45784-sxc8q
+catalogue-b87b45784-sxc8q
 Web interface is now available at http://localhost:8899
 ^C

如果要查看多个 Pod 的流量,则可以通过一个正则表达式来进行匹配:

arduino 复制代码
mizu tap "(catalo*|front-end*)"

该命令将观察以下 Pod 的流量,因为它们的名字符合正则表达式。

  • catalogue-6676dc489b-6tx9h
  • catalogue-db-69bd898747-7p8rq
  • front-end-946fd755f-8t6gp

如果要查看所有的 API 流量,则更简单了,直接执行 mizu tap ".*" 即可。查看某个命名空间的 Pod 中的所有 API 流量:

arduino 复制代码
mizu tap ".*" -n sock-shop

除此之外还有安全配置和高级用法,可以查看官方网站(getmizu.io/)了解更多详情。%25E4%25BA%2586%25E8%25A7%25A3%25E6%259B%25B4%25E5%25A4%259A%25E8%25AF%25A6%25E6%2583%2585%25E3%2580%2582 "https://getmizu.io/)%E4%BA%86%E8%A7%A3%E6%9B%B4%E5%A4%9A%E8%AF%A6%E6%83%85%E3%80%82")

四 注意事项

4.1 muzi启动异常

4.1.1 故障原因

启动一次,muzi启动需要的镜像拉取异常。

4.1.2 解决

需要k8s集群内部能正常下载到该镜像。

github.com/anjia0532/g...

五 二次开发需求

  • 本地使用,由于内网地址,需要监听0.0.0.0 地址
  • tap 命令制定镜像拉取策略为IfNotPresent,由于是内网场景

六 总结

在复杂的 Kubernetes 集群中,洞察网络流量至关重要。Muzi 应运而生,成为 K8s 流量查看的利器。这款开源工具以其轻量、实时、易用的特性,帮助用户轻松掌握集群内部的流量走向。通过直观的可视化界面,Muzi 展示服务之间的连接关系、请求数量、延迟、错误率等关键指标,助力用户快速定位问题、优化性能和保障安全。支持多种协议、丰富的过滤和查询功能,以及持续发展的插件生态,使得 Muzi 成为开发和运维人员管理 K8s 网络流量的得力助手。

参考链接

相关推荐
狂奔solar6 分钟前
分享个好玩的,在k8s上部署web版macos
前端·macos·kubernetes
群联云防护小杜1 小时前
服务器被挂马怎么办?——解决服务器被挂马的方法和步骤
运维·服务器·网络协议·tcp/ip·安全·ddos
ascarl20101 小时前
生成自签名证书并配置 HTTPS 使用自签名证书
网络协议·http·https
写bug的小屁孩2 小时前
websocket初始化
服务器·开发语言·网络·c++·websocket·网络协议·qt creator
江梦寻5 小时前
思科模拟器路由器配置实验
开发语言·网络·网络协议·学习·计算机网络
@东辰5 小时前
【golang-技巧】-自定义k8s-operator-by kubebuilder
开发语言·golang·kubernetes
小安运维日记5 小时前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚5 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes
前端李易安5 小时前
什么是HTTP,什么是HTTPS?HTTP和HTTPS都有哪些区别?
网络协议·http·https
胎粉仔5 小时前
网络初阶——应用层:HTTPS 协议
网络协议·http·https