排错工具

    • :用于查看 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 问题的排查

    查看 Kubelet、CNI、kernel 等系统组件的日志需要首先 SSH 登录到 Node 上,推荐使用 插件而不是为每个节点分配公网 IP 地址。比如:

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

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

    • csysdig:与 sysdig 一起自动安装,提供了一个命令行界面
    • sysdig-inspect:为 sysdig 保存的跟踪文件(如 sudo sysdig -w filename.scap)提供了一个图形界面(非实时)
    1. # on Ubuntu
    2. curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
    3. curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
    4. apt-get -y install sysdig
    5. # on REHL
    6. rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public
    7. curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo
    8. rpm -i http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpm
    9. yum -y install kernel-devel-$(uname -r)
    10. yum -y install sysdig
    11. # on MacOS
    12. brew install sysdig

    Weave Scope 是另外一款可视化容器监控和排错工具。与 sysdig 相比,它没有强大的命令行工具,但提供了一个简单易用的交互界面,自动描绘了整个集群的拓扑,并可以通过插件扩展其功能。从其官网的介绍来看,其提供的功能包括

    Weave Scope 由 App 和 Probe 两部分组成,它们

    • Probe 负责收集容器和宿主的信息,并发送给 App
    1. +--Docker host----------+ +--Docker host----------+
    2. .---------------. | +--Container------+ | | +--Container------+ |
    3. | Browser | | | | | | | | |
    4. | |----->| | scope-app |<-----. .----->| scope-app | | |
    5. | | | | +-----------+ | | \ / | | +-----------+ | |
    6. | | | | ^ | | \/ | | ^ | |
    7. '---------------' | | | | | /\ | | | | |
    8. | | +-------------+ | | / \ | | +-------------+ | |
    9. | | | scope-probe |-----' '-----| scope-probe | | |
    10. | | +-------------+ | | | | +-------------+ | |
    11. | | | | | | | |
    12. | +-----------------+ | | +-----------------+ |
    13. +-----------------------+ +-----------------------+

    安装完成后,可以通过 weave-scope-app 来访问交互界面

    1. kubectl -n weave get service weave-scope-app
    2. kubectl -n weave port-forward service/weave-scope-app :80

    点击 Pod,还可以查看该 Pod 所有容器的实时状态和度量数据:

    在 Ubuntu 内核 4.4.0 上面开启 --probe.ebpf.connections 时(默认开启),Node 有可能会因为:

    • 禁止 eBPF 探测,如 --probe.ebpf.connections=false
    • 升级内核,如升级到 4.13.0