如何使用kubernetes和skaffold调试python代码?
我目前正在通过kubernetes运行python3下的django应用程序,方法是通过如何使用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中 在当前设置
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以使用调试器,因此以下文章可能会有所帮助:
--swap deployment
选项将现有部署与远程呈现代理进行交换。交换允许您在本地运行服务并连接到远程Kubernetes群集。远程集群中的服务现在可以访问本地运行的实例
可能值得研究的是,哪种方法允许在不重新启动或重新部署的情况下在Kubernetes吊舱上进行Python的产品内实时调试。您失去了路径强制等功能,但获得了动态有效模拟断点类型堆栈跟踪的灵活性