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 网络流量的得力助手。

参考链接

相关推荐
Waay2 小时前
K8s ETCD 详解|备份恢复+静态Pod原理+kubectl查询底层流程(面试必考)
面试·kubernetes·etcd
松岩2 小时前
dcgm-exporter部分指标
kubernetes
sweet丶3 小时前
MQTT消息通道-基础篇
网络协议
Patrick_Wilson5 小时前
K8s 探针避坑:Next.js 不同部署模式下的健康检查实践
kubernetes·node.js·next.js
Plastic garden5 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
Plastic garden6 小时前
k8s(11) Pod 控制器,服务发现与存储管理
kubernetes
吠品6 小时前
一次 Nginx 报错 unexpected end of file 的排查记录
网络协议·https·ssl
代码中介商6 小时前
TLS握手全解析:从1.2到1.3的加密演进
网络·网络协议·http
xlq223226 小时前
66.ip
网络·网络协议·tcp/ip