基本背景
我的应用程序是Java应用程序,我的应用程序正在部署在Azure群集中。 一切都很好。但是我想知道如何将Eclipse调试器与Azure群集中运行的应用程序连接。
在启动脚本中,JPDA
端口绑定了8000,而dockerfile
8000
端口则暴露。
问题是如何将eclipse调试器与在Azure群集中运行的代码连接。
我试图将IP地址放在
Remote Java Application
连接属性Host:
中,但没有成功。
需要过程,用于远程调试。
答案 0 :(得分:1)
因此,在谷歌搜索之后,我发现了一种忍者技术??。我们称为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群集中运行的实例连接。