排錯工具

本章主要介紹在 Kubernetes 排錯中常用的工具。

必備工具

  • kubectl:用於查看 Kubernetes 集群以及容器的狀態,如 kubectl describe pod <pod-name>

  • journalctl:用於查看 Kubernetes 組件日誌,如 journalctl -u kubelet -l

  • iptablesebtables:用於排查 Service 是否工作,如 iptables -t nat -nL 查看 kube-proxy 配置的 iptables 規則是否正常

  • tcpdump:用於排查容器網絡問題,如 tcpdump -nn host 10.240.0.8

  • perf:Linux 內核自帶的性能分析工具,常用來排查性能問題,如 Container Isolation Gone Wrong 問題的排查

kubectl-node-shell

查看 Kubelet、CNI、kernel 等系統組件的日誌需要首先 SSH 登錄到 Node 上,推薦使用 kubectl-node-shell 插件而不是爲每個節點分配公網 IP 地址。比如:

curl -LO https://github.com/kvaps/kubectl-node-shell/raw/master/kubectl-node_shell
chmod +x ./kubectl-node_shell
sudo mv ./kubectl-node_shell /usr/local/bin/kubectl-node_shell

kubectl node-shell <node>
journalctl -l -u kubelet

sysdig

sysdig 是一個容器排錯工具,提供了開源和商業版本。對於常規排錯來說,使用開源版本即可。

除了 sysdig,還可以使用其他兩個輔助工具

  • csysdig:與 sysdig 一起自動安裝,提供了一個命令行界面

  • sysdig-inspect:爲 sysdig 保存的跟蹤文件(如 sudo sysdig -w filename.scap)提供了一個圖形界面(非實時)

安裝

示例

更多示例和使用方法可以參考 Sysdig User Guide

Weave Scope

Weave Scope 是另外一款可視化容器監控和排錯工具。與 sysdig 相比,它沒有強大的命令行工具,但提供了一個簡單易用的交互界面,自動描繪了整個集群的拓撲,並可以通過插件擴展其功能。從其官網的介紹來看,其提供的功能包括

Weave Scope 由 App 和 Probe 兩部分組成,它們

  • Probe 負責收集容器和宿主的信息,併發送給 App

  • App 負責處理這些信息,並生成相應的報告,並以交互界面的形式展示

安裝

查看界面

安裝完成後,可以通過 weave-scope-app 來訪問交互界面

點擊 Pod,還可以查看該 Pod 所有容器的實時狀態和度量數據:

已知問題

在 Ubuntu 內核 4.4.0 上面開啓 --probe.ebpf.connections 時(默認開啓),Node 有可能會因爲內核問題而不停重啓

解決方法有兩種

  • 禁止 eBPF 探測,如 --probe.ebpf.connections=false

  • 升級內核,如升級到 4.13.0

參考文檔

Last updated