簡體   English   中英

你如何使用 kube.netes 和 skaffold 調試 python 代碼?

[英]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文件中將stdintty設置為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM