Kubernetes中Go服务的远程debug
@ 归零 | 星期二,十二月 7 日,2021 年 | 1 分钟阅读 | 更新于 星期二,十二月 7 日,2021 年

作为开发人员,我们总是会遇到一些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 的端口号一致

6. 启动远程debug

© 2014 - 2022 Lionel's Blog

Powered by Hugo with theme Dream.