【问题标题】:How to remote debug an application hosted in Azure K8s Cluster如何远程调试托管在 Azure K8s 集群中的应用程序
【发布时间】:2020-07-23 12:07:20
【问题描述】:

基本背景

我的应用程序是一个 Java 应用程序,我的应用程序正在部署在 Azure 集群中。 一切都是好的。但我想知道如何将 Eclipse 调试器与运行在 Azure 集群中的应用程序连接起来。

在启动脚本中,JPDA 端口与 8000 绑定,dockerfile 8000 端口被暴露。

问题是如何将 eclipse 调试器与运行在 Azure 集群中的代码连接起来。

我尝试将 IP 地址放入 Remote Java Application 连接属性 Host: 但没有成功。

需要程序,用于远程调试。

【问题讨论】:

    标签: kubernetes azure-devops remote-debugging portforwarding jpda


    【解决方案1】:

    所以在谷歌搜索之后,我发现了一种忍者技术??。一种我们称为port-forwarding 的技术。

    所以基本的想法是将正在运行的应用程序的端口转发到我们本地系统的可用端口。

    所以我找到了一个端口转发命令:

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

    在这个命令中,我们需要知道 .为此,我们需要了解在 Azure 上的 Kubernetes 集群中运行的 pod。这意味着我们需要将您的本地计算机 CLI 与 Azure 连接或验证。

    从此链接下载 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 集群中运行的实例。

    【讨论】:

    • 这是什么秘密?
    • 我没有得到你!
    猜你喜欢
    • 2013-08-03
    • 2014-01-30
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多