Google stackdriver 调试在 Kubernetes 中不起作用

Google stackdriver debug not working in Kubernetes

我们在 Google Kubernetes Engine 上有一个基于 Python 3.6 运行 的服务器应用程序。我添加了 Google StackDriver Debug 以帮助调试一些生产问题,但我无法让我们的应用程序显示在 Stackdriver 调试控制台中。 'application to debug' 下拉菜单保持为空。

kubernetes 集群配置了 cloud-debug 范围并且应用程序正确启动。此外,我们的项目启用了 Stackdriver Debugging API。当 运行 在我的机器上本地应用程序时,云调试按预期工作,但我找不到它不能在我们的生产环境中工作的原因

在我的例子中,问题不在于平台的范围,而是你不能简单地在官方 python-alpine docker 图像上 pip install google-python-cloud-debugger 的事实。 Alpine Linux 支持没有定期测试,我的问题与 C 库中缺少符号有关。 Alpine Linux 使用 MUSL C 库,它需要一个 google 专门为该库构建的云调试器。为此准备了特定的 docker 图像后,我让它可以使用提供的凭据。

作为替代方法,您可以使用 Visual Studio 代码和旧 debugpy

调试 Python pods

I wrote an open source tool that will inject debugpy into any running Python pod without prior setup.

要使用它,您需要:

  1. 在您的集群中安装该工具(参见 Github page
  2. 运行 来自具有集群访问权限的机器的本地命令:
robusta playbooks trigger python_debugger name=myapp namespace=default
  1. 端口转发到集群(工具打印说明)
  2. 附加 VSCode 到本地主机和您要转发的端口

这通过在同一节点上创建一个新 pod 然后使用 debug-toolkit

注入 debugpy 来实现