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

参考链接

相关推荐
_oP_i39 分钟前
HTTP 请求Media typetext/plain application/json text/json区别
网络协议·http·json
OkeyProxy2 小时前
HTTP、HTTPS和SOCKS5代理協議
网络协议·https·云计算·代理服务器·海外ip代理
zquwei2 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
群联云防护小杜3 小时前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
ihengshuai3 小时前
HTTP协议及安全防范
网络协议·安全·http
aherhuo3 小时前
kubevirt网络
linux·云原生·容器·kubernetes
catoop4 小时前
K8s 无头服务(Headless Service)
云原生·容器·kubernetes
liuxuzxx5 小时前
1.24.1-Istio安装
kubernetes·istio·service mesh
道一云黑板报6 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
运维小文6 小时前
K8S中的PV、PVC介绍和使用
docker·云原生·容器·kubernetes·存储