使用delve调试K3s
k3s是什么
K3s是什么?k8s的精简版。编译之后执行程序大小不到50M。 可以用在物联网的边缘计算侧。如果想深入了解k8s,那么k3s是个很好的起点。 那么如果能够断点调试k3s,就更好了。下面我们来看看怎么做。
步骤
- 建议使用linux 64位操作系统。这样可以native构建。
- 建议性能好一些的机器,虚拟机编译会很慢
- 建议安装好docker
- 配置好go的环境,设置
GOPATH
,同时把$GOPATH/bin
加入到PATH
- 安装Goland这个集成开发环境
- 从github克隆k3s的代码,加上depth参数则不下载历史,速度会快很多
1
$ git clone --depth 1 https://github.com/rancher/k3s.git $GOPATH/src/github.com/rancher/k3s
- 安装delve的debug工具。完成之后会生成可执行文件
$GOPATH/bin/dlv
1
2
3$ git clone --depth 1 https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
$ cd $GOPATH/src/github.com/go-delve/delve
$ make install - 构建含有调试信息的可执行文件
k3s
,所在路径是$GOPATH/src/github.com/rancher/k3s/
1
2$ cd $GOPATH/src/github.com/rancher/k3s
$ go build -gcflags "all=-N -l" -o k3s - 用delve执行。这时候线程会监听2345的远程调试接入。
1
2$ cd $GOPATH/src/github.com/rancher/k3s
$ dlv --listen=:2345 --headless=true --api-version=2 exec -- ./k3s server --docker --disable-agent - Goland中添加k3s项目。项目根路径为
$GOPATH
,然后配置增加一个remote调试。在运行之前,在main.go上打一个断点。
运行远程调试之后,成功。
使用delve调试K3s
https://threelambda.com/2019/11/19/debug-k3s/