排错工具

必备工具

  • 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 问题的排查

sysdig

sysdig 是一个容器排错工具,提供了开源和商业版本。对于常规排错来说,使用开源版本即可。

除了 sysdig,还可以使用其他两个辅助工具

  • csysdig:与 sysdig 一起自动安装,提供了一个命令行界面

  • sysdig-inspect:为 sysdig 保存的跟踪文件(如 sudo sysdig -w filename.scap)提供了一个图形界面(非实时)

安装

# on Ubuntucurl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.listapt-get updateapt-get -y install linux-headers-$(uname -r)apt-get -y install sysdig​# on REHLrpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.publiccurl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.reporpm -i http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpmyum -y install kernel-devel-$(uname -r)yum -y install sysdig​# on MacOSbrew install sysdig

示例

# Refer https://www.sysdig.org/wiki/sysdig-examples/.# View the top network connectionssudo sysdig -pc -c topconns# View the top network connections inside the wordpress1 containersudo sysdig -pc -c topconns container.name=wordpress1​# Show the network data exchanged with the host 192.168.0.1sudo sysdig fd.ip=192.168.0.1sudo sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1​# List all the incoming connections that are not served by apache.sudo sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"​# View the CPU/Network/IO usage of the processes running inside the container.sudo sysdig -pc -c topprocs_cpu container.id=2e854c4525b8sudo sysdig -pc -c topprocs_net container.id=2e854c4525b8sudo sysdig -pc -c topfiles_bytes container.id=2e854c4525b8​# See the files where apache spends the most time doing I/Osudo sysdig -c topfiles_time proc.name=httpd​# Show all the interactive commands executed inside a given container.sudo sysdig -pc -c spy_users ​# Show every time a file is opened under /etc.sudo sysdig evt.type=open and fd.name​# View the list of processes with container contextsudo csysdig -pc

更多示例和使用方法可以参考 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