kubernetes比较复杂,kubelet在某些场景下长时间运行后会出现死锁。有没有办法转储正在运行的 kubelet 的 goroutine 堆栈跟踪?如下的预期输出对于调试 kubelet 的死锁类型问题非常有帮助。goroutine 386 [chan send, 1140 minutes]:k8s.io/kubernetes/pkg/kubelet/pleg.(*GenericPLEG).relist(0xc42069ea20) /workspace/anago-v1.11.5-beta.0.24+753b2dbc622f5c/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go:261 +0x74ek8s.io/kubernetes/pkg/kubelet/pleg.(*GenericPLEG).(k8s.io/kubernetes/pkg/kubelet/pleg.relist)-fm() /workspace/anago-v1.11.5-beta.0.24+753b2dbc622f5c/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go:130 +0x2ak8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1(0xc4212ee520) /workspace/anago-v1.11.5-beta.0.24+753b2dbc622f5c/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133 +0x54k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait.JitterUntil(0xc4212ee520, 0x3b9aca00, 0x0, 0x1, 0xc420056540) /workspace/anago-v1.11.5-beta.0.24+753b2dbc622f5c/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:134 +0xbdk8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait.Until(0xc4212ee520, 0x3b9aca00, 0xc420056540) /workspace/anago-v1.11.5-beta.0.24+753b2dbc622f5c/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:88 +0x4dcreated by k8s.io/kubernetes/pkg/kubelet/pleg.(*GenericPLEG).Start /workspace/anago-v1.11.5-beta.0.24+753b2dbc622f5c/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go:130 +0x88我很感激任何人都可以分享关于如何转储 kubelet 的 goroutine 堆栈竞争的经验,就像 docker 提供的那样[1]$ pkill -SIGUSR1 dockerd[1]. https://success.docker.com/article/how-to-dump-goroutines-stacktraces
1 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
pprof,它将保持 kubelet 运行
在node-x上安装go
在一个终端中运行“kubectl proxy”
卷曲 http://localhost:8001/api/v1/proxy/nodes/node-x/debug/pprof/goroutine?debug=2
注意:API针对不同的k8s版本进行了更改,对于1.16,它是curl http://127.0.0.1:8001/api/v1/nodes/node-**/proxy/debug/pprof/goroutine?debug=2
向 kubelet 发送信号,导致 kubelet 退出并出现堆栈转储
杀死-SIGABRT
- 1 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消