debugging kubernetes (Delve and Goland)

1. Build from source

编译整个项目 make all GOLDFLAGS="" GOGCFLAGS="all=-N -l" 

编译单个组件 make GOLDFLAGS="" GOGCFLAGS="all=-N -l" WHAT="cmd/kube-apiserver"

如果需要编译不同平台使用 KUBE_BUILD_PLATFORMS=linux/amd64

启用CGO  KUBE_CGO_OVERRIDES=kubelet,kubectl,xxx

例子 KUBE_CGO_OVERRIDES=kubelet KUBE_BUILD_PLATFORMS=linux/amd64 make   GOLDFLAGS="" GOGCFLAGS="all=-N -l" WHAT="cmd/kubelet"

实际测试后,发现使用 CGO_ENABLED=1  KUBE_BUILD_PLATFORMS=linux/amd64 make   GOLDFLAGS="" GOGCFLAGS="all=-N -l" WHAT="cmd/kubelet" 可以

 

编译后的命令  "_output/local/bin/"

 https://github.com/kubernetes/kubernetes/issues/77527

2.Install delve 

Follow the delve's toturial to install delve

After install you can debugging use delve or use Goland

3.Debugging by Goland

Example by apiserver

cd $GOPATH/src/k8s.io/kubernetes/cmd/kube-apiserver/

$GOPATH/bin/dlv debug --headless --listen=:2345 --api-version=2 -- k8s.io/kubernetes/cmd/kube-apiserver/apiserver.go --etcd-servers http://localhost:2379

After the command delve will output a "debug" file in current directory and listen on 2345 port

Open Goland create new remote debug

 

 Don't forget create breakingpoints before debugging

 

posted @ 2018-08-01 11:40  xuchenCN  阅读(1130)  评论(0编辑  收藏  举报