我目前正在通过skaffold dev
通过kubernetes在python3下运行django应用程序。我正在使用Python源代码进行热重装。目前是否可以在kubernetes上使用python进行交互式调试?
例如,
def index(request):
import pdb; pdb.set_trace()
return render(request, 'index.html', {})
通常,在容器外部,碰到端点将使我进入(pdb)
shell。
在当前设置中,我在stdin
文件中将tty
和true
设置为Deployment
。该代码确实在断点处停止,但没有使我能够访问(pdb)
shell。
答案 0 :(得分:4)
有一个kubectl
命令可让您attach到吊舱中正在运行的容器:
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
它应该允许您与容器中的调试器进行交互。 可能您可能需要调整pod才能使用调试器,因此以下文章可能会有所帮助:
还有telepresence工具可帮助您使用其他方法进行应用程序调试:
使用 telepresence ,您可以将自定义工具(例如调试器和IDE)用于本地服务,并为该服务提供对ConfigMap,密钥和在远程群集上运行的服务的完全访问权限。
使用
--swap-deployment
选项将现有部署与Telepresence代理交换。交换可让您在本地运行服务并连接到远程Kubernetes集群。现在,远程集群中的服务可以访问本地运行的实例。
答案 1 :(得分:0)
值得研究Rookout,它允许在Kubernetes容器上进行Python的生产中实时调试,而无需重新启动或重新部署。您失去了强制路径等功能,但获得了灵活性,可以有效地动态模拟断点类型的堆栈跟踪。