如何远程调试托管在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:UsersMachineName> 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>
现在,您的运行Pod将位于Azure云的Kubernetes群集的特定命名空间中。
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中您将看到
/li>
Forwarding from 127.0.0.1:6000 -> 8000
Forwarding from [::1]:6000 -> 8000
我为什么使用6000端口可能会感到困惑,因为我的8000端口已经在使用中了。
连接到eclipse的时间:
项目Right-click
>debug
debug configuration
>搜索Remote Java Application
。
将调试器的名称设置为类似于我的名称调试群集
Host
:127.0.0.1
Port
:6000
现在应用并按下调试按钮,稍后您将看到调试器已连接到在Azure群集中运行的实例。
这篇关于如何远程调试托管在Azure K8s集群中的应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!