基于golang镜像构建一个可以使用pprof工具的镜像,并添加了graphviz和flameGraph工具快速生成可视化火焰图
flameGraph基于此github:https://github.com/brendangregg/FlameGraph.git
kubectl proxy --accept-hosts='^*$' [--address='0.0.0.0']
基于实际情况添加address参数
docker run -itd --name go-pprof --net host zerchin/go-pprof
kubectl proxy的默认端口是8001,对该指标进行采集docker exec -it go-pprof bash
go tool pprof -seconds=60 -raw -output=kubelet.pprof http://127.0.0.1:8001/api/v1/nodes/${NODENAME}/proxy/debug/pprof/profile
这里等待60s后,会将这60s内相关的函数调用输出到当前目录的kubelet.pprof文件中。
stackcollapse-go.pl kubelet.pprof > kubelet.out
flamegraph.pl kubelet.out > kubelet.svg
最后生成的火焰图直接在浏览器打开即可
cluster.yml配置文件中添加如下参数:services:
kube-api:
extra_args:
profiling: true ## 添加改参数
查看是否生效
ps aux|grep apiserver |grep profiling
kubectl proxy
docker run -itd --name go-pprof --net host zerchin/go-pprof
docker exec -it go-pprof bash
go tool pprof --http 0.0.0.0:9091 127.0.0.1:8001/debug/pprof/heap
go tool pprof --http 0.0.0.0:9091 127.0.0.1:8001/debug/pprof/allocs
这里会依赖graphviz,镜像默认已经安装了这个软件包
Content type
Image
Digest
Size
325.1 MB
Last updated
almost 6 years ago
docker pull zerchin/go-pprof