前言
在傳統網路環境中,Wireshark 是大家熟悉的封包擷取與分析工具,能夠在微觀層面檢視網路通訊。那麼在 Kubernetes 叢集中,有沒有類似的工具可以讓我們「看見」叢集內部的網路流量呢?答案就是 KubeShark——一個專為 Kubernetes 設計的網路流量觀察與分析工具。
為什麼需要 KubeShark?
雖然我們可以透過 kubectl get pods -v=6 等方式查看 API 呼叫的詳細資訊,但這只涵蓋了 L7 層的 API 請求,無法觀察到底層的網路流量。KubeShark 則能夠擷取 L3 到 L7 各層的網路流量,甚至可以存取完整的 L2 Frame,並提供直覺的儀表板來視覺化這些資料。
KubeShark 能做什麼?
| 功能 | 說明 |
|---|---|
| 全面監控 | 監控 Pod 之間的網路流量、API 呼叫,可針對單一節點、服務或特定路徑進行過濾 |
| 即時視覺化 | 透過 KubeShark Viewer 即時查看流量,支援過濾、分析和故障排除,右側面板清楚呈現 Request/Response 詳情 |
| PCAP 儲存 | 可將封包擷取結果儲存為 PCAP 格式,匯出到 S3 或其他儲存空間供事後分析 |
| 簡化除錯 | 不論是除錯問題還是深入了解叢集內各元件的通訊方式,都能大幅降低門檻 |
| 即時告警 | 基於擷取的資料建立告警規則,例如偵測失敗的 Secret 請求或異常的 Metadata 呼叫 |
安裝與使用
安裝 KubeShark
# 使用一鍵安裝腳本
sh <(curl -Ls https://kubeshark.co/install)
# 或從 GitHub Releases 下載特定版本和架構的二進位檔
# https://github.com/kubeshark/kubeshark/releases/
啟動監控
# 監控所有 namespace 的流量
kubeshark tap -A
# 監控特定 namespace
kubeshark tap -n kube-system
啟動後,KubeShark 會在本機的 8899 埠開啟一個 Web 儀表板。它會讀取你的 ~/.kube/config 中的目前上下文,使用對應的認證資訊連接叢集。
實用功能展示
單一節點監控
可以過濾只查看特定節點上的網路流量,快速定位問題所在的節點。
Service Map 視覺化
KubeShark 提供 Service Map 功能,以拓撲圖的方式呈現叢集內各服務之間的通訊關係,讓你一眼就能看出叢集的整體架構。
安全監控
可以監控特定路徑的存取情況,例如 AWS Instance Metadata 的安全認證路徑,有助於發現潛在的安全風險。
實務心得
- 深化理解:幫助你在最底層了解叢集內各元件如何通訊與協作
- 高效除錯:透過合適的過濾條件,快速鎖定問題流量
- 架構概覽:Service Map 提供叢集的視覺化全貌,適合向團隊展示架構
- 安全偵測:擷取的資料可用來建立維運和安全方面的即時告警
- 效能考量:在大規模叢集中使用時,建議先做效能基準測試,評估對運算和儲存的影響
- 安全策略輔助:雖然它不像 Sysdig Falco 或 Cilium Tetragon 那樣專注於執行時期安全,但 KubeShark 擷取的 API 流量資料,對於撰寫更精確的控制面安全策略很有幫助
與其他工具的比較
| 工具 | 定位 | 技術基礎 |
|---|---|---|
| KubeShark | 網路流量視覺化與分析 | eBPF + 封包擷取 |
| Sysdig Falco | 執行時期安全偵測 | eBPF / Kernel Module |
| Cilium Tetragon | 可觀察性與安全策略執行 | eBPF |
這三個工具各有側重,KubeShark 更聚焦在提供微觀層級的流量視覺化體驗。
相關資源
小結
KubeShark(前身為 Mizu,由 UP9 開發)是一個強大的 K8s 網路流量觀察工具。如果你想要深入了解叢集內部的通訊行為,或是需要一個直覺的介面來協助除錯網路問題,KubeShark 絕對值得一試。特別是在排查跨服務通訊問題或是研究 K8s 控制面行為時,它能提供非常有價值的資訊。

發佈留言