![](/img/trans.png)
[英]How do you Debug/Take Apart/Learn from someone else's Python code (web-based)?
[英]How do you debug python code with kubernetes and skaffold?
我目前通過skaffold dev
通過 kube.netes 在 python3 下運行一個 django 應用程序。 我使用 Python 源代碼進行熱重載。 目前是否可以在 kube.netes 上使用 python 進行交互式調試?
例如,
def index(request):
import pdb; pdb.set_trace()
return render(request, 'index.html', {})
通常,在容器外,點擊端點將使我進入(pdb)
shell。
在當前設置中,我在Deployment
文件中將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
它應該允許您與容器中的調試器進行交互。 可能您可能需要調整pod以使用調試器,因此以下文章可能會有所幫助:
還有遠程呈現工具可以幫助您使用不同的應用程序調試方法:
使用遠程呈現 ,您可以為本地服務使用自定義工具(如調試器和IDE),並為服務提供對ConfigMap,機密和遠程群集上運行的服務的完全訪問權限。
使用
--swap-deployment
選項將現有部署與Telepresence代理交換。 交換允許您在本地運行服務並連接到遠程Kubernetes集群。 遠程集群中的服務現在可以訪問本地運行的實例。
可能值得研究Rookout ,它允許在Kubernetes pod上對Python進行in-prod實時調試,而無需重新啟動或重新部署。 您將失去路徑強制等,但您可以獲得足夠的靈活性,以便有效地模擬斷點類型的堆棧跟蹤。
這不使用 Skaffold,但您可以使用我編寫的開源項目將 VSCode 調試器附加到任何正在運行的 Python pod。
在集群上安裝它需要一些設置,但安裝后你可以使用一個命令調試任何 pod:
robusta playbooks trigger python_debugger name=myapp namespace=default
你可以看看okteto/okteto 。 有一個很好的教程解釋了如何直接在 Kube.netes 上進行開發和調試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.