作为开发人员,我们总是会遇到一些bug本地无法模拟,需要在通过远程方式排查,本教程介绍如何配置远程debug Kubernetes上的Go服务,通过本教程,你会学到:
- 通过dlv工具远程debug 用Go写的服务
- vscode配置远程debug
1. 进入服务容器
kubectl -n ${NAMESPACE} exec -it ${POD_NAME} -- sh
2. 获取进程id
通过ps或者pidof命令获取进程id
pidof ${进程名称}
3. 启动dlv远程debug服务
dlv attach ${PID} -l :40000 --headless --api-version 2
- 这里通过上一步获取到的进程id是6
- -l:debug服务监听地址, 这里使用40000端口
- –headless 已无头模式启动debug server
- –api-version api版本,必须制定为2,因为vscode client的版本是2,两个必须匹配
4. 在本地通过kubectl port-forward端口转发debug服务到本地
kubectl -n ${NAMESPACE} port-forward ${POD_NAME} 40000
5. 配置vscode
在launch.json中添加:
{
"name": "remote debug",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 40000,
"host": "127.0.0.1",
"program": "${workspaceRoot}/cmd/admin",
"env": {},
"args": [],
"showLog": true
}
- port设置的端口号和上一步port-forword 的端口号一致