一、引入背景
Mizu是用于 Kubernetes 的简单而强大的 API 流量查看器,其能够查看跨多个协议的微服务之间的所有 API 链路通信。
Mizu提供所有 HTTP 请求、REST 和 gRPC API 调用以及 Kafka、MQ 和 Redis 的实时视图。
二、架构组成
k8s集群中,mizu给每一个节点启动一个tapper(可以理解为agent),将流量走向汇聚,最后通过ApiServer上报数据给Mizu-Cli端,通过Web端进行用户展示。
三、Mizu接入
3.1 安装Mizu
//拉取四个所需镜像
docker pull smallsoup/up9inc-basenine:v0.3.0
docker pull smallsoup/mizu-develop:0.22.21
docker pull smallsoup/mizu-main:0.22.0
docker pull smallsoup/mizu-kratos-stable:0.0.0
//二进制方式安装
curl -Lo mizu github.com/up9inc/mizu/releases/latest/download/mizu_linux_amd64 && chmod 755 mizu
3.2 生成配置
mizu CLI 使用--set config-path=读取配置文件。如果未提供,将使用${HOME}/.mizu/config.yaml。
先使用config -r生成默认的配置文件:
mizu config -r Template File written to /home/appops/.mizu/config.yaml
//less home/appops/.mizu/config.yaml
tap: upload-interval: 10 regex: .* gui-port: 8899 proxy-host: 0.0.0.0 namespaces: [] analysis: false all-namespaces: false regex-masking: [] ignored-user-agents: [] no-redact: false max-entries-db-size: 200MB dry-run: false workspace: "" traffic-validation-file: "" contract: "" ask-upload-confirmation: true api-server-resources: cpu-limit: 750m memory-limit: 1Gi cpu-requests: 50m memory-requests: 50Mi tapper-resources: cpu-limit: 750m memory-limit: 1Gi cpu-requests: 50m memory-requests: 50Mi service-mesh: false version: debug: false view: gui-port: 8899 logs: file: "" auth: env-name: up9.app token: "" image-pull-policy: IfNotPresent mizu-resources-namespace: mizu telemetry: true dump-logs: false kube-config-path: "" headless: false
3.3 启动Mizu
mizu tap ".*" -n kube-system
//默认收集该namespace下的所有pod之间的调用链路关系
访问http://10.189.129.35:8899/,即为Web端。
四、Mizu视图
各节点之间的Api流量走向以及链路关系:
八、相关限制
Mizu支持的k8s版本要在1.16.x以上: