Kubernetes API 流量查看神器 - Mizu
Mizu 是一個簡單但功能強大的 Kubernetes API 流量查看器,可以讓我們查看微服務之間的所有 API 通信,以幫助你調試和排查故障,相當于 TCPDump 和 Chrome Dev Tools 工具的結合。
安裝
Mizu 是一個 Golang 開發的二進制工具包,只需要單獨下載即可運行。
如果是 MAC 系統直接使用下面的命令下載安裝即可:
- curl -Lo mizu \ https://github.com/up9inc/mizu/releases/latest/download/mizu_darwin_amd64 \ && chmod 755 mizu
如果是 Linux 系統則可以使用下面的命令:
- curl -Lo mizu \ https://github.com/up9inc/mizu/releases/latest/download/mizu_linux_amd64 \ && chmod 755 mizu
Mizu 使用的是 KUBECONFIG 環境變量來查找 kubeconfig 文件,如果沒有設置則使用默認的 $HOME/.kube/config 文件,所以只需要保證我們的 kubectl 能正??刂?Kubernetes 集群,那么 Mizu 就可以正常運行了。
此外 Mizu 會假設運行該命令的用戶有權在你的 Kubernetes 集群上創建資源對象(比如 pod、service、namespace)。
運行
要使用 Mizu 來查看流量,只需要按照下面的步驟操作即可:
- 在 Kubernetes 集群中查找你想要查看的 Pod
- 運行 mizu tap 或者 mizu tap PODNAME 命令
- 在瀏覽器中打開 http://localhost:8899/mizu 頁面
- 在打開的頁面中即可觀察 API 的流量
- 輸入 ^C 即可停止
假設我們正在運行的 Pod 列表如下所示:
要查看指定 Pod 的流量,只需要輸入 Pod 名即可:
- mizu tap catalogue-b87b45784-sxc8q
- +catalogue-b87b45784-sxc8q
- Web interface is now available at http://localhost:8899
- ^C
如果要查看多個 Pod 的流量,則可以通過一個正則表達式來進行匹配:
- mizu tap "(catalo*|front-end*)"
該命令將觀察以下 Pod 的流量,因為它們的名字符合正則表達式。
- catalogue-6676dc489b-6tx9h
- catalogue-db-69bd898747-7p8rq
- front-end-946fd755f-8t6gp
如果要查看所有的 API 流量,則更簡單了,直接執行 mizu tap ".*" 即可。查看某個命名空間的 Pod 中的所有 API 流量:
- mizu tap ".*" -n sock-shop
除此之外還有安全配置和高級用法,可以查看官方網站(https://getmizu.io/)了解更多詳情。