PyCharm 2025.3 Help

在 Kubernetes 中调试

PyCharm 支持以下 Kubernetes 调试流程:使用临时容器对 Pod 进行即时故障排查,以及使用 Telepresence 进行远程调试,从而使您无需离开您的 IDE 即可诊断各种问题。

临时容器

PyCharm 支持将 临时容器 附加到正在运行的 Pod,而无需重启 Pod。 通过这种方式,您可以检查实时的 Kubernetes 环境、运行诊断命令,并直接在正在运行的 Pod 内排查问题。

临时容器会为调试而临时添加到现有的 Pod 中,并与您的应用程序容器同时运行。 为此,PyCharm 会在后台运行 kubectl debug 命令。 您可以附加自定义调试容器,或使用轻量级的 BusyBox 镜像,其开箱即用地提供了诸如 pingnetstatwgettop 等常用工具。

有关调试正在运行的 Pod 的详细信息,请参阅 Kubernetes 文档

将 BusyBox 附加到正在运行的 Pod

  1. 打开 Services 工具窗口:选择 视图(V) | 工具窗口(T) | 服务 或按 Alt+8

  2. 展开列出正在运行的 Pod 的节点,右键点击您要调试的 Pod,然后在上下文菜单中选择 Ephemeral Debug Containers | Attach Busybox

    或者,选择所需的 Pod,点击工具栏中的 临时容器图标 ,然后在下拉列表中选择 Attach Busybox

    附加 BusyBox

将自定义容器附加到正在运行的 Pod

  1. 打开 Services 工具窗口:选择 视图(V) | 工具窗口(T) | 服务 或按 Alt+8

  2. 展开列出正在运行的 Pod 的节点,右键点击您要调试的 Pod,然后在上下文菜单中选择 Ephemeral Debug Containers | 附加自定义

    或者,选择所需的 Pod,点击工具栏中的 临时容器图标 ,然后在下拉列表中选择 附加自定义

  3. Attach Custom Debug Container 对话框中,使用以下字段自定义用于启动并附加临时容器的 kubectl debug 命令:

    • Pod :在下拉列表中选择您要调试的 Pod。

    • Target :指定所选 Pod 内的目标容器。

    • Image :开始键入要用于调试的镜像名称,然后从建议列表中选择它。

    • 可执行文件 :指定临时容器启动后要在其中运行的 shell 的绝对路径(例如, /bin/sh 适用于 BusyBox,或 /bin/bash 适用于 Ubuntu)。

    • 选项 :为调试容器提供其他配置参数。 有关示例,请参阅 Kubernetes 文档

    附加自定义调试容器对话框
  4. 点击 Attach to Pod

PyCharm 启动新的临时容器并成功将其附加到 Pod 后,会打开 控制台 选项卡,您可以在其中运行命令并检查 Pod。

调试控制台

如果您 附加 BusyBox ,PyCharm 会自动使用 sh。 对于 自定义镜像 ,IDE 使用在 可执行文件 字段中指定的 shell。

当您删除其附加的 Pod 时,该容器会被移除。

最近的命令

使用 临时调试容器 菜单附加临时容器时,PyCharm 会自动保存相应的 kubectl debug 命令。 您可以稍后在 最近 部分访问并重新运行它。

最近的命令

使用最近的命令启动临时容器

  1. 打开 Services 工具窗口:选择 视图(V) | 工具窗口(T) | 服务 或按 Alt+8

  2. 展开列出正在运行的 Pod 的节点,然后右键点击您要调试的 Pod。 在上下文菜单中选择 Ephemeral Debug Containers ,并选择所需的最近的命令。

    或者,选择所需的 Pod,点击工具栏中的 临时容器图标 ,然后在下拉列表中选择最近的命令。

管理最近的命令

  1. 访问最近的命令:

    • 设置 对话框(Ctrl+Alt+S )中,选择 构建、执行、部署 | Kubernetes

    • 打开 服务 工具窗口(Alt+8)。 右键点击任意正在运行的 Pod,并从上下文菜单中选择 Ephemeral Debug Containers | 编辑最近项

  2. 转到 临时调试容器 部分。

    • 要添加一个可预先配置并快速启动新临时容器的新命令,请点击 加号图标。 在 添加调试参数 对话框中,您可以为 kubectl debug 命令指定镜像、可执行文件和选项。

    • 要从最近的命令中移除某个命令,请在表格中选择它并点击 减号图标

    • 要编辑现有命令,请在表格中选择它并点击 编辑图标。 在 添加调试参数 对话框中,更改 kubectl debug 命令的镜像、可执行文件和选项。

Telepresence

Telepresence 是一款工具,使您能够访问 Kubernetes 集群中的服务、调试它们、进行并测试更改,就像这些服务在您的本地计算机上运行一样。

Kubernetes 插件提供与 Telepresence 的集成,可让您:

连接到 Telepresence

  1. 打开 Services 工具窗口:选择 视图(V) | 工具窗口(T) | 服务 或按 Alt+8

  2. 右键点击您的 Kubernetes 集群,并选择 连接Telepresence。 或者,点击工具栏中的 Telepresence 图标。 出现提示时,输入启动 Telepresence 守护程序所需的管理员帐户密码。 在 Windows 上,允许执行 telepresence.exe

  3. 安装 Telepresence 和 Traffic Manager 后,请再次点击 连接Telepresence

现在,您可以通过服务的 DNS 名称访问 Kubernetes 集群中的服务,仿佛该集群在您的工作站上运行。 例如,如果您有一个接受对 hello-node:9001 发出的请求的应用程序,您可以通过其名称进行访问。

Telepresence Connect

拦截来自集群的流量

拦截允许您将发往 Kubernetes 集群中某个服务的流量路由到本地服务。

  1. 在工具栏上,点击 Telepresence 图标创建新拦截 ),然后点击 创建新拦截

  2. 在打开的窗口中,在 服务 列表中选择要拦截的工作负载。 这可以是 Deployment、ReplicaSet 或 StatefulSet。

    端口 字段中,指定您的服务本地实例正在运行的端口。

    Telepresence Intercept

如果成功拦截该服务,您可以在本地访问它,并使用 IDE 功能来尝试、调试和分析性能您的集群中运行的应用程序。

退出 Telepresence

Telepresence 一次只能与一个集群交互,因此在连接到其他集群之前,您可能需要先将其停止。 退出 Telepresence 将停止所有活动的拦截。

  1. 打开 Services 工具窗口:选择 视图(V) | 工具窗口(T) | 服务 或按 Alt+8

  2. 右键点击您的 Kubernetes 集群,并选择 退出Telepresence。 或者,点击工具栏中的 退出 Telepresence 图标

使用拦截运行应用程序

在 PyCharm 中,您只需点击一次即可运行本地应用程序,同时将发往您的 Kubernetes 集群中某个服务的流量重定向到该本地应用程序。

这是通过为您的 Kubernetes 集群配置隧道(一个 Telepresence 拦截),并 将其添加为运行配置的 启动前任务来实现的。 每次您 运行此运行配置 时,PyCharm 都会创建一个 Telepresence 拦截,使您能够像在本地运行一样调试远程应用程序。

将拦截添加到您的运行配置

  1. 请确保:

    • 您的服务的原始实例已在您的 Kubernetes 集群中部署并正在运行,且其本地实例的源代码已在编辑器中打开。

    • 您的 PyCharm 实例已 连接到您的 Kubernetes 集群

  2. 在主类声明附近的装订区域中点击 ,并选择 为远程调试添加隧道。 如果您在 PyCharm 中至少连接了一个集群,则可以使用此操作。

    添加用于远程调试的隧道

    或者,如果您的应用程序已存在运行/调试配置,请在运行小部件中点击 ,并选择 为远程调试添加隧道

  3. 在打开的 将Kubernetes 隧道添加到运行配置 窗口中,选择集群和命名空间,然后点击 连接到集群。 出现提示时,输入启动 Telepresence 守护程序所需的管理员帐户密码。

  4. 如果已成功连接到集群,请配置拦截参数:

    • 服务 列表中,选择要拦截的工作负载。

    • 端口 字段中,指定您的服务本地实例正在运行的端口。

    • 可选地,为 telepresence intercept 命令指定其他选项。

    将 Kubernetes 隧道添加到运行配置

    如果您想查看 Telepresence 命令的输出,请展开 输出 部分。 如果在连接到 Telepresence 时遇到任何错误,将自动展开此部分。

  5. 点击 保存配置。 为检查拦截参数,PyCharm 将创建一个拦截,然后退出该拦截。

拦截参数将作为新的运行配置中的 添加调试隧道 启动前任务保存。 为将其与其他运行配置区分开来,此运行配置名称将包含 (Telepresence) 后缀,例如 MyApp (Telepresence)

现在,您已准备好 运行您的应用程序并拦截其远程版本

使用拦截运行应用程序

  1. 在运行小部件中,选择带有 (Telepresence) 后缀的运行配置。

    使用拦截运行应用程序
  2. 点击 以运行它,或点击 以启动调试器会话。

这将运行您的本地应用程序,同时按上述参数运行 telepresence intercept 命令。

Telepresence 现在会拦截发往您的集群中某个服务的所有流量,并将其路由到您的本地应用程序。 您可以在本地编写并调试已拦截的服务。

服务 工具窗口中,创建的拦截将显示在 Telepresence 拦截 节点下。 您的 Kubernetes 集群的根节点还会显示生成的 telepresence 命令及相关日志。

Services 工具窗口中的 Telepresence 拦截

当您停止此应用程序(点击 )时,PyCharm 也会停止拦截(telepresence leave)。

最后修改日期: 2025年 12月 2日