手机网站开发 c,做一款网页游戏需要多少钱,好听的公司名字大全集,wordpress主题和模板下载作者 | 小碗汤来源 | 我的小碗汤mizu 是为 Kubernetes 提供的一个简单而强大的 API 流量查看器#xff0c;可以查看微服务之间的所有 API 通信#xff0c;以帮助调试和排除故障。相当于 Kubernetes 的 TCPDump 和 Wireshark。简单而强大的 CLI丰富的过滤规则API 调用实时监控… 作者 | 小碗汤来源 | 我的小碗汤mizu 是为 Kubernetes 提供的一个简单而强大的 API 流量查看器可以查看微服务之间的所有 API 通信以帮助调试和排除故障。相当于 Kubernetes 的 TCPDump 和 Wireshark。简单而强大的 CLI丰富的过滤规则API 调用实时监控网络流量视图支持的协议HTTP/1.1(REST 等)、HTTP/2(gRPC)AMQPRabbitMQ、Apache Qpid 等KafkaRedis安装前准备mizu 组件会用到以下四个镜像# Linux上执行mizu tap安装时mizu-apiserver用到
ghcr.io/up9inc/basenine:v0.3.0# Linux上执行mizu tap安装时mizu-apiserver用到
gcr.io/up9-docker-hub/mizu/develop:0.22.21# mac上执行mizu tap安装时mizu-apiserver用到
gcr.io/up9-docker-hub/mizu/main:0.22.0# mizu install安装mizu-apiserver用到
gcr.io/up9-docker-hub/mizu-kratos/stable:0.0.0但在国内会拉取失败我已经将用到的镜像上传到阿里云仓库和 dockerhub 仓库需要可自行拉取# 阿里云仓库
registry.cn-hangzhou.aliyuncs.com/smallsoup/up9inc-basenine:v0.3.0
# dockerhub 仓库
smallsoup/up9inc-basenine:v0.3.0registry.cn-hangzhou.aliyuncs.com/smallsoup/mizu-develop:0.22.21
smallsoup/mizu-develop:0.22.21registry.cn-hangzhou.aliyuncs.com/smallsoup/mizu-main:0.22.0
smallsoup/mizu-main:0.22.0registry.cn-hangzhou.aliyuncs.com/smallsoup/mizu-kratos-stable:0.0.0
smallsoup/mizu-kratos-stable:0.0.0由于有些镜像名称是 mizu 源码中写死的不可配置除了 agent-name所以拉下来后需要修改 tag 后使用docker tag registry.cn-hangzhou.aliyuncs.com/smallsoup/up9inc-basenine:v0.3.0 ghcr.io/up9inc/basenine:v0.3.0docker tag registry.cn-hangzhou.aliyuncs.com/smallsoup/mizu-develop:0.22.21 gcr.io/up9-docker-hub/mizu/develop:0.22.21docker tag registry.cn-hangzhou.aliyuncs.com/smallsoup/mizu-kratos-stable:0.0.0 gcr.io/up9-docker-hub/mizu-kratos/stable:0.0.0docker tag registry.cn-hangzhou.aliyuncs.com/smallsoup/mizu-main:0.22.0 gcr.io/up9-docker-hub/mizu/main:0.22.0安装可执行文件Mizu[1]可以在GitHub 仓库[2]下载。下面示例在 MacOS 上安装 mizu 二进制k8s 版本为 1.18.14。curl -Lo mizu \
https://github.com/up9inc/mizu/releases/latest/download/mizu_darwin_amd64 \chmod 755 mizu
mv mizu /usr/local/bin生成配置mizu CLI 使用--set config-pathPATH提供的配置文件。如果未提供将使用${HOME}/.mizu/config.yaml。可以使用 CLI 参数覆盖默认值获取默认配置参数可以运行mizu config。使用config -r生成默认值配置文件# mizu config -r
Template File written to /Users/smallsoup/.mizu/config.yaml自定义配置编辑~/.mizu/config.yamltap:upload-interval: 10regex: .*gui-port: 8899proxy-host: 0.0.0.0namespaces: []analysis: falseall-namespaces: falseregex-masking: []ignored-user-agents: []no-redact: falsemax-entries-db-size: 200MBdry-run: falseworkspace: traffic-validation-file: contract: ask-upload-confirmation: trueapi-server-resources:cpu-limit: 750mmemory-limit: 1Gicpu-requests: 50mmemory-requests: 50Mitapper-resources:cpu-limit: 750mmemory-limit: 1Gicpu-requests: 50mmemory-requests: 50Miservice-mesh: false
version:debug: false
view:gui-port: 8899
logs:file:
auth:env-name: up9.apptoken:
image-pull-policy: IfNotPresent
mizu-resources-namespace: mizu
telemetry: true
dump-logs: false
kube-config-path:
headless: false修改的参数说明将配置文件中的image-pull-policy: Always改为 IfNotPresent 因为 mizu 运行时创建的 pod 使用的镜像在国内网络环境下无法正常拉取。默认运行 mizu 需要通过本地主机访问http://localhost:8899# lsof -nP -iTCP -sTCP:LISTEN | grep mizu
mizu 59951 smallsoup 39u IPv4 0xade0daed4de692db 0t0 TCP 127.0.0.1:8899 (LISTEN)可以将tap.proxy-host更改为0.0.0.0通过主机 IP 地址访问。lsof -nP -iTCP -sTCP:LISTEN | grep mizu
mizu 60008 smallsoup 38u IPv6 0xade0daed5a54616b 0t0 TCP *:8899 (LISTEN)mizu 默认使用${HOME}/.kube/config中的配置。可以使用KUBECONFIG环境变量或--set kube-config-pathPATH修改。我在这里使用默认的配置。临时安装即使用mizu tap启动会在 kubernetes 集群创建资源在命令终止时会自行清理资源一般用于本地调试阶段。mizu tap
Mizu will store up to 200MB of traffic, old traffic will be cleared once the limit is reached.
Tapping pods in namespaces default
chart-1642261340-waypoint-runner-d54b5bc5c-x7w5w
chart-1642261340-waypoint-server-0
example-nodejs-v1-dbffc74f6-6prt4
example-nodejs-waypoint-nodejs-8764766d8-5xfjf
netchecker-agent-8fs2m
netchecker-agent-hostnet-vknsm
netchecker-server-59fcd6bf86-5mtkn
Waiting for Mizu Agent to start...
Mizu is available at http://localhost:8899成功后会自动打开浏览器访问http://localhost:8899/。这种方式安装的mizu apiserver为独立的Podmizu-tapper-daemon-set为Daemonset Pod。# k get pod -n mizu
NAME READY STATUS RESTARTS AGE
mizu-api-server 2/2 Running 0 2m21s
mizu-tapper-daemon-set-hb555 1/1 Running 0 23s# k get ds -n mizu
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
mizu-tapper-daemon-set 1 1 1 1 1 none 8m19sMizu 将存储高达 200MB 的流量数据一旦达到限制旧的数据将被清除。这里没有 pvc 的创建所以保存的流量数据会随着 Pod 被删除。永久安装可以使用命令mizu install将 mizu 实例永久的安装在集群中# mizu install --config-path /root/.mizu/config.yaml
namespace/mizu created
configmap/mizu-config created
serviceaccount/mizu-service-account created
clusterrole.rbac.authorization.k8s.io/mizu-cluster-role created
clusterrolebinding.rbac.authorization.k8s.io/mizu-cluster-role-binding created
role.rbac.authorization.k8s.io/mizu-role-daemon created
rolebinding.rbac.authorization.k8s.io/mizu-role-binding-daemon created
deployment.apps/mizu-api-server created
service/mizu-api-server created
Waiting for Mizu server to start...
mizu-api-server-59fbb5fc55-5krjb pod is running
Installation completed, run mizu view to connect to the mizu daemon instance这种方式安装的 mizu apiserver 为 1 副本的Deployment以及mizu-tapper-daemon-set Pod。# kubectl get deploy -n mizu
NAME READY UP-TO-DATE AVAILABLE AGE
mizu-api-server 1/1 1 1 5m34s# kubectl get ds -n mizu
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
mizu-tapper-daemon-set 1 1 1 1 1 none 3m10s# kubectl get pvc -n mizu
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mizu-volume-claim Bound pvc-81b8ebb6-2a72-4bc3-915d-79c943e6dfbb 700M RWO nfs-client 10m同时会创建 pvc 用于存储流量数据所以集群中需要提前有storageClass。在 k8s 集群某一节点执行port-forward将主机 8080 端口映射到 svc 的 80 端口# kubectl port-forward --address 0.0.0.0 -n mizu service/mizu-api-server 8080:80
Forwarding from 0.0.0.0:8080 - 8899此时用主机IP:8080访问即可。体验使用Mizu 有丰富的过滤语法可以灵活有效地查询结果。语法可在界面上查看选择指定命名空间将显示所选命名空间的流量过滤出 Kafka 协议过滤来源为ingress-nginx-controller的卸载永久安装后可以通过以下方式卸载# mizu clean
Removing mizu resources遇到的坑域名后缀问题mizu-tapper Daemonset Pod一直重建查看日志发现报错如下[2022-01-23T05:33:19.4550000] INFO ▶ socket connection to ws://mizu-api-server.mizu.svc.cluster.local/wsTapper failed: dial tcp: lookup mizu-api-server.mizu.svc.cluster.local: no such host, retrying 5 out of 30 in 2 seconds... ▶ [1 main.go:422 dialSocketWithRetry]daemonset Pod需要连接mizu apiserver连接地址是在启动参数中指定的。--api-server-address ws://mizu-api-server.mizu.svc.cluster.local/wsTapper默认使用的域名后缀为cluster.local如果你修改过 k8s 集群的clusterDomain则需要修改这里的值。不幸的是这个cluster.local是写死在代码中的需要安装之后手动edit daemonset修改。镜像问题mizu 组件使用到的镜像只有mizu-api-server Pod 中一个容器的镜像可以修改agent-image: registry.cn-hangzhou.aliyuncs.com/smallsoup/mizu-develop:0.22.21其他镜像都是写死在代码中的。以上两点的不可配置会给使用者带来很大的不便。参考资料[1]Mizu: https://github.com/up9inc/mizu[2]GitHub 仓库: https://github.com/up9inc/mizu[3]k8s 流量查看器: https://up9.com/traffic-viewer-kubernetes[4]mizu 高级用法: https://github.com/up9inc/mizu#advanced-usage[5]K8s的API流量查看器安装: https://www.lishuai.fun/2021/09/28/k8s-mizu/往期推荐Spring 完美导入 IDEAk8s集群居然可以图形化安装了使用这个库让你的服务操作 Redis 速度飞起将 k8s 制作成 3D 射击游戏好玩到停不下来点分享点收藏点点赞点在看