Docker/K8S故障排查Cheatsheet

docker

拿到dockerd的thread dump

执行下列命令(不会kill掉进程):

1
kill -SIGUSR1 $(pidof dockerd)

journalctl -u docker.service可以看到输出到哪里:

1
Dec 04 07:08:11 docker-learn-5 dockerd[2090]: time="2020-12-04T07:08:11.362055588Z" level=info msg="goroutine stacks written to /var/run/docker/goroutine-stacks-2020-12-04T070811Z.log"

参考文档

containerd

拿到thread dump

执行下列命令(不会kill掉进程):

1
kill -SIGUSR1 $(pidof containerd)

journalctl -u containerd.service直接查看thread dump。

如果是containerd-shim,则需要先启用shim_debug,然后

1
kill -SIGUSR1 $(pidof containerd-shim)

参考文档

k8s

拿到kubelet的thread dump

方法一(不会kill进程):

在一个终端执行:

1
kubectl proxy

如果是rancher,则使用直接连接到某台master的context配置。

在另一个终端执行:

1
curl 'http://localhost:8001/api/v1/nodes/<node name>/proxy/debug/pprof/goroutine?debug=2'

实际上这个方法就是go的pprof,你可以利用这个做很多事情。

方法二(会kill进程):

1
kill -SIGABRT $(pidof kubelet)

参考文档

版权

评论