How to remote debug an application hosted in Azure K8s Cluster

佐手、 提交于 2020-07-23 09:13:09

问题


Basic background

My Application is a Java application, My application is getting deployed in Azure cluster. everything is good. But I want to know how to connect Eclipse debugger with the application running in Azure cluster.

In the startup script, JPDA port is bind with 8000 and in dockerfile 8000 port is exposed.

The issue is how to connect eclipse debugger with code running in Azure cluster.

I tried to put the IP address in Remote Java Application connection properties Host: but not a success.

Need procedure, for remote debugging.


回答1:


So after googling, I found one ninja technique 🤣🤣. A technique we know as port-forwarding.

So basic idea is to forward a running application's port to our local system's available port.

So I found one command for port-forwarding:

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

In this command, we need to know . For this, we need to know running pods in Kubernetes cluster on Azure. It means we need to connect or authenticate your local machine CLI with Azure.

Download Azure CLI from this link and Install https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest

  • Now open PowerShell run command

    az login

  • Your default browser will open add your Azure credentials and Authenticate, so your PowerShell will show you following message when your authentication is done.

 
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": ""
    }
  }
]
  • Now next command to run is:

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

  • Run Command to get running pods in a specific namespace if defined any.

    kubectl get pods -n <namespace>

  • Now you will have your running pods in specific namespace in Kubernetes cluster of Azure cloud.


NAME                         READY STATUS  RESTARTS    AGE

application-8664866df5-x4zns 2/2           Running 0   21m
  • Time to run our initial command.

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

  • In the cli you will see


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

Might be confused why I use 6000 port, because, my 8000 port is already in use.

Time to connect with eclipse: Project Right-click > debug > debug configuration > search for Remote Java Application.

Set a name for the debugger like mine is debugCluster Host: 127.0.0.1 Port: 6000

Now Apply and Press Debug button in some time you will see your debugger is connected with Instance running in Azure cluster.



来源:https://stackoverflow.com/questions/61145418/how-to-remote-debug-an-application-hosted-in-azure-k8s-cluster

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!