在 Cloud Code for VS Code 中将调试程序连接到 Kubernetes pod

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Cloud Code for VS Code 支持将调试程序连接到 Node.js、Python、Go、Java 和 .NET 版本的 Kubernetes pod。您只需要一个可调试容器cloudcode.kubernetes 类型的连接配置

如需了解如何附加到 Kubernetes pod 与调试 Kubernetes 应用不同,请参阅附加到 Kubernetes pod 与调试 Kubernetes 应用

设置容器

如需准备容器以进行调试,请按照您使用的语言的相关说明进行操作:

Node.js

  • 使用 --inspect=<debugPort> 启动 Node.js 应用,其中 debugPort 来自附加配置。例如:CMD ["node", "--inspect=9229", "index.js"]

Python

  • 确保您的机器和容器中已安装 ptvsd 模块。
  • 通过 ptvsd 启动 Python 应用。将指定的端口与连接配置中的 debugPort 字段相匹配。例如:
    CMD ["python", "-m", "ptvsd", "--port", "", "app.py"]
    

Go

  • 确保您的机器和 Go 容器已安装 dlv 软件包。
  • 通过 dlv debug 启动 Go 应用。

    启动命令中指定的端口应与连接配置中的 debugPort 属性值相同。例如:

    CMD ["dlv", "debug", "--headless", "--listen=:<debugPort>", "--log"]
    

    问题排查提示:调试 Go 应用时,应用将停止并等待连接调试程序。请连接调试器以使该服务启动。

Java

  • 确保您的机器上已安装 JVM。
  • 使用以下选项启动 Java 应用,其中 debugPort 来自连接配置

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=,quiet=y
    

    例如,如需在调试模式下启动 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 容器上已安装 vsdbg(Microsoft 提供的 .NET Core 命令行调试程序)。

    例如:

    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 文件,您可以使用“调试”面板添加一个。

  1. 如需转到“调试”面板,请点击活动栏中的 “调试”图标 运行并调试

  2. 从下拉菜单中选择添加配置

  3. Cloud Code Kubernetes 设置为环境。

    将 Cloud Code Kubernetes 设置为环境

  4. 选择 Attach to Kubernetes Pod 选项。

    选择 Kubernetes 配置选项

  5. 选择您使用的编程语言。

    此操作会创建并打开项目的 launch.json 文件,并为您创建连接配置。

  6. 更新 launch.json 文件中的配置属性,使其与项目的属性一致。如需详细了解配置特性,请参阅配置特性

具有 .vscode/launch.json 文件的项目

如需向现有的 .vscode/launch.json 文件添加新的附件配置,请执行以下操作:

  1. 打开 launch.json 文件。
  2. 如要调用代码段 Intellisense,请点击添加配置
  3. 如需添加连接配置,请针对您使用的语言选择 Cloud Code: Attach to Kubernetes Pod 代码段。
  4. 更新配置中的特性,使其与项目特性匹配。如需详细了解配置特性,请参阅配置特性

配置属性

属性 说明
debugPort 容器中使用的调试端口。
podSelector 用于选择调试 pod 的键值对集合。如需了解详情,请参阅选择器指南。 以下示例展示了一个典型的 `podSelector`:

"podSelector": { "app": <deployment-name> }

localRoot 包含待调试程序的本地目录的路径。 默认为 ${workspaceFolder}。
remoteRoot 包含待调试程序的远程目录的绝对路径(在 Kubernetes 容器中)。

将调试程序附加到 Kubernetes pod

设置配置和容器后:

  1. 如需转到“调试”面板,请点击活动栏中的 “调试”图标 运行并调试
  2. F5 选择并启动配置。

    • 在调试时,localhost:${debugPort} 会通过端口转发到容器中的 debugPort

    调试会话现已设置成功。您可以在调试本地代码时执行常规任务,例如设置断点和单步调试代码。

  3. 如需检查变量和堆栈信息,请使用调试边栏。 如需与调试会话进行交互,请使用底部窗格调试器中的调试控制台

  4. 如需结束调试会话,请点击调试工具栏中的 调试停止图标 停止

附加到 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 命令。
Watch 模式不可用,因此进行更改后,请手动重启调试程序。 Watch 模式允许 Cloud Code 在您保存更改后重启调试程序。

获取支持

如需发送反馈,请在 GitHub 上报告问题,或在 Stack Overflow 上提问。