Cloud Code 支持将调试程序附加到 Kubernetes pod。您只需拥有一个可调试容器和一个类型为 cloudcode.kubernetes
的附加配置。
设置容器
您必须确保要调试的容器已做好调试准备。以下是针对特定语言的容器设置说明。
Node.js
- 使用
--inspect=<debugPort>
启动 Node.js 应用,其中debugPort
来自附加配置。例如:CMD ["node", "--inspect=9229", "index.js"]
Python
Go
Java
- 确保您的机器上已安装 JVM。
使用
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y
启动 Java 应用,其中debugPort
来自附加配置。例如,如需在调试模式下启动 Java 应用,并侦听端口
debugPort
上的连接,请使用以下语句:ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y", "-jar", "my-app-1.0.jar"]
.NET Core
确保在 Kubernetes 容器中安装了 Microsoft 的 .NET Core 命令行调试器
vsdbg
。例如:
RUN apt-get update
&& apt-get install -y --no-install-recommends unzip
&& apt-get install -y procps
&& rm -rf /var/lib/apt/lists/*
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg
设置附加配置
如需附加到可调试容器,您需要有一个 cloudcode.kubernetes
类型的附加配置。
没有 .vscode/launch.json 文件的项目
如果项目的 .vscode
文件夹中没有 launch.json 文件,则可以使用“Debug”面板添加一个。
导航到“Debug”面板(使用活动栏中的调试视图图标
),然后从下拉菜单中选择
Add Configuration
。选择
Cloud Code: Kubernetes
作为环境。选择
Attach to Kubernetes Pod
选项选择相应的编程语言。
这将为您的项目创建并打开一个
launch.json
文件,并为您创建一项连接配置。现在,您可以更新此文件中的配置属性,以匹配项目的配置属性。如需详细了解配置属性,请参阅这份表格。
具有 .vscode/launch.json 文件的项目
如需向现有 .vscode/launch.json 添加新的附加配置,请按以下步骤操作:
- 打开 launch.json 文件。
- 按下调用代码段 Intellisese 的
Add Configuration
按钮。 - 选择所需语言的
Cloud Code: Attach to Kubernetes Pod
代码段。 这将添加一个附加配置。现在,您可以更新此配置中的属性,以匹配项目的属性。如需详细了解配置属性,请参阅这份表格。
配置属性
属性 | 说明 |
---|---|
debugPort | 容器中使用的调试端口。 |
podSelector | 用于选择调试 pod 的一组键值对(如需了解详情,请参阅选择器指南)。典型的 podSelector 通常如下所示:
|
localRoot | 包含待调试程序的本地目录的路径。 默认为 ${workspaceFolder}。 |
remoteRoot | 包含待调试程序的远程目录的绝对路径(在 Kubernetes 容器中)。 |
将调试程序附加到 Kubernetes pod
设置完配置和容器后:
- 打开“调试”视图
。
- 使用
F5
选择和启动配置。- 在调试过程中,
localhost:${debugPort}
将通过端口转发到容器中的debugPort
。
- 在调试过程中,
- 调试会话现已设置成功!
- 此时,您可以执行在调试本地代码时通常会执行的所有任务,例如设置断点和单步执行代码。
如需检查变量和堆栈信息,请使用调试边栏。 如需与调试会话进行交互,请使用底部窗格调试器中的调试控制台。
如需结束调试会话,请点击调试工具栏上的停止图标。
附加到 Kubernetes pod 与调试 Kubernetes 应用
关联到 Kubernetes Pod | 调试 Kubernetes 应用 |
---|---|
调试单个 Kubernetes pod | 调试应用中所有可调试的容器 |
在调试之前,必须确保应用在 Kubernetes pod 中运行。 | 在 Kubernetes 集群上运行应用并附加调试程序。 |
使用类型为“cloudcode.kubernetes”的配置 (.vscode/launch.json) 并请求“附加”。 | 使用类型为“cloudcode.kubernetes”的配置 (.vscode/launch.json) 并请求“启动”。 启动与附加配置。 |
配置示例:{ "name": "Attach to Kubernetes Pod (NodeJS)", "type": "cloudcode.kubernetes", "request": "attach", "language": "Node", "debugPort": 9229, "podSelector": { "app": "hello-world" }, "localRoot": "${workspaceFolder}", "remoteRoot": "/app" } |
配置示例:{ "name": "Run/Debug on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "watch": true, "cleanUp": true, "portForward": true } |
此配置不能用于运行应用 | 此配置可用于运行或调试应用。 |
此配置特定于语言 | 此配置与语言无关 |
无专用命令 | “Debug on Kubernetes”命令 |