一 背景
在 Kubernetes 的世界里,复杂的网络流量往往难以追踪和调试。开发和运维人员需要一款便捷的工具来洞察集群内部的流量走向,以便快速定位问题和优化性能。Muzi 应运而生,成为 K8s 流量查看的利器。
Mizu 是一个简单但功能强大的 Kubernetes API 流量查看器,可以让我们查看微服务之间的所有 API 通信,以帮助你调试和排查故障,相当于 TCPDump
和 Chrome 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
来查看流量,只需要按照下面的步骤操作即可:
- 在 Kubernetes 集群中查找你想要查看的 Pod
- 运行
mizu tap
或者mizu tap PODNAME
命令 - 在浏览器中打开
http://localhost:8899/mizu
页面 - 在打开的页面中即可观察 API 的流量
- 输入
^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集群内部能正常下载到该镜像。
五 二次开发需求
- 本地使用,由于内网地址,需要监听0.0.0.0 地址
- tap 命令制定镜像拉取策略为IfNotPresent,由于是内网场景
六 总结
在复杂的 Kubernetes 集群中,洞察网络流量至关重要。Muzi 应运而生,成为 K8s 流量查看的利器。这款开源工具以其轻量、实时、易用的特性,帮助用户轻松掌握集群内部的流量走向。通过直观的可视化界面,Muzi 展示服务之间的连接关系、请求数量、延迟、错误率等关键指标,助力用户快速定位问题、优化性能和保障安全。支持多种协议、丰富的过滤和查询功能,以及持续发展的插件生态,使得 Muzi 成为开发和运维人员管理 K8s 网络流量的得力助手。