排错工具
本章主要介绍在 Kubernetes 排错中常用的工具。
必备工具
kubectl:用于查看 Kubernetes 集群以及容器的状态,如kubectl describe pod <pod-name>journalctl:用于查看 Kubernetes 组件日志,如journalctl -u kubelet -liptables和ebtables:用于排查 Service 是否工作,如iptables -t nat -nL查看 kube-proxy 配置的 iptables 规则是否正常tcpdump:用于排查容器网络问题,如tcpdump -nn host 10.240.0.8perf: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 kubeletsysdig
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
参考文档
最后更新于