如何使用kubernetes和skaffold调试python代码?

如何使用kubernetes和skaffold调试python代码?,python,kubernetes,skaffold,Python,Kubernetes,Skaffold,我目前正在通过kubernetes运行python3下的django应用程序,方法是通过skaffold dev。我使用Python源代码进行了热重新加载。目前是否可以在kubernetes上使用python进行交互式调试 比如说, def index(request): import pdb; pdb.set_trace() return render(request, 'index.html', {}) 通常,在容器外部,命中端点会将我放入(pdb)shell中 在当前设置

我目前正在通过kubernetes运行python3下的django应用程序,方法是通过
skaffold dev
。我使用Python源代码进行了热重新加载。目前是否可以在kubernetes上使用python进行交互式调试

比如说,

def index(request):
    import pdb; pdb.set_trace()
    return render(request, 'index.html', {})
通常,在容器外部,命中端点会将我放入
(pdb)
shell中


在当前设置中,我在
部署
文件中将
stdin
tty
设置为
true
。代码确实在断点处停止,但它不允许我访问
(pdb)
shell。

有一个
kubectl
命令,允许您访问pod中正在运行的容器:

kubectl attach <pod-name> -c <container-name> [-n namespace] -i -t

-i  (default:false) Pass stdin to the container
-t  (default:false) Stdin is a TTY
kubectl-attach-c[-n名称空间]-i-t
-i(默认值:false)将stdin传递给容器
-t(默认值:false)Stdin是一个TTY
它应该允许您与容器中的调试器交互。 您可能需要调整pod以使用调试器,因此以下文章可能会有所帮助:

还有一个工具可以帮助您使用不同的应用程序调试方法:

使用远程呈现允许您为本地服务使用自定义工具,如调试器和IDE,并为服务提供对ConfigMap、secrets和远程群集上运行的服务的完全访问

使用
--swap deployment
选项将现有部署与远程呈现代理进行交换。交换允许您在本地运行服务并连接到远程Kubernetes群集。远程集群中的服务现在可以访问本地运行的实例


可能值得研究的是,哪种方法允许在不重新启动或重新部署的情况下在Kubernetes吊舱上进行Python的产品内实时调试。您失去了路径强制等功能,但获得了动态有效模拟断点类型堆栈跟踪的灵活性