0

基本背景

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

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

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

我试图将 IP 地址放在Remote Java Application连接属性中Host:,但没有成功。

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

4

1 回答 1

2

所以在谷歌搜索之后,我发现了一种忍者技术。我们知道的一种技术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 configurationRemote Java Application

为我的调试器设置一个名称是debugCluster Host:127.0.0.1 Port:6000

现在应用并按下调试按钮一段时间后,您将看到您的调试器已连接到在 Azure 集群中运行的实例。

在此处输入图像描述

于 2020-04-10T17:24:50.753 回答