簡體   English   中英

如何遠程調試托管在 Azure K8s 集群中的應用程序

[英]How to remote debug an application hosted in Azure K8s Cluster

基本背景

我的應用程序是 Java 應用程序,我的應用程序正在部署在 Azure 集群中。 萬事皆安。 但我想知道如何將 Eclipse 調試器與在 Azure 集群中運行的應用程序連接起來。

在啟動腳本中, JPDA端口與 8000 綁定,在dockerfile中,暴露了8000端口。

問題是如何將 eclipse 調試器與在 Azure 集群中運行的代碼連接起來。

我嘗試將IP地址放在Remote Java Application連接屬性Host:但沒有成功。

需要程序,用於遠程調試。

所以在谷歌搜索之后,我發現了一種忍者技術。 一種我們稱為port-forwarding的技術。

所以基本的想法是將正在運行的應用程序的端口轉發到我們本地系統的可用端口。

所以我找到了一個端口轉發命令:

kubectl port-forward pods/<podName> 8000:8000 -n <namespace>

在這個命令中,我們需要知道。 為此,我們需要知道在 Azure 上的 Kubernetes 集群中運行的 pod。 這意味着我們需要使用 Azure 連接或驗證您的本地計算機 CLI。

從此鏈接下載 Azure CLI 並安裝https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest

  • 現在打開 PowerShell 運行命令

    az login

  • 您的默認瀏覽器將打開添加您的 Azure 憑據並進行身份驗證,因此您的PowerShell將在您的authentication完成后向您顯示以下消息。

 
C:\Users\MachineName> az login
You have logged in. Now let us find all the subscriptions to which you have access...

[
  {
    "cloudName": "",
    "id": "",
    "isDefault": true,
    "name": "",
    "state": "Enabled",
    "user": {
      "name": "",
      "type": ""
    }
  }
]
  • 現在下一個要運行的命令是:

    az aks get-credentials --resource-group <ResourseGroupName> --name <Name of Kubernetes cluster>

  • 運行命令以獲取特定命名空間中正在運行的 pod(如果已定義)。

    kubectl get pods -n <namespace>

  • 現在,您將在 Azure 雲的 Kubernetes 集群中的特定命名空間中運行 pod。


NAME                         READY STATUS  RESTARTS    AGE

application-8664866df5-x4zns 2/2           Running 0   21m
  • 是時候運行我們的初始命令了。

    kubectl port-forward pods/<application-8664866df5-x4zns> 6000:8000 -n myNameSpace

  • 在 cli 你會看到


Forwarding from 127.0.0.1:6000 -> 8000
Forwarding from [::1]:6000 -> 8000

可能會混淆我為什么使用 6000 端口,因為我的 8000 端口已經在使用中。

是時候連接 eclipse:項目Right-click > debug > debug configuration > 搜索Remote Java Application

為我的調試器設置一個名稱是debugCluster Host :127.0.0.1 Port :6000

現在應用並按下調試按鈕一段時間后,您將看到您的調試器與在 Azure 集群中運行的實例連接。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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