IDEA工具远程DEBUG调试K8S环境中的容器应用(Java应用)

应用场景:

IDEA远程调试kubernetes环境中的容器应用(Java应用)应用场景:Java开发的项目在本地运行正常,然后将容器运行方式的项目发布到远端服务器上线运行后,出现了异常情况,此时频繁去修改代码发布镜像进行问题验证,将耗费较大的时间成本。

为了提高问题定位和代码调试效率,使用端口代理的方式,将远端容器应用的端口映射出来,使用远端代码调试方式进行debug代码。


 Command line arguments for remote JVM

根据不同的JDK版本,IDEA提供了相应的远程DEBUG参数,在配置POD的delopment文件中可以使用如下参数:

JDK 5-8

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

JDK 9 or later

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005

1. 修改服务部署的deployment.yaml文件

修改指定服务的deployment.yaml文件,为容器添加远程调试的 JVM配置参数:

env:
- name: JAVA_TOOL_OPTIONS
  value: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

2. 暴露调试端口的两种方式

2.1 使用命令行方式暴露调试端口

启动容器后,会自动开启一个监听 5005 端口的调试服务,可以使用远程调试工具(如 IntelliJ IDEA、Eclipse 等)连接到该端口进行调试。

在Kubernetes 集群环境中,将容器内部的调试端口转发到本地端口上。

kubectl port-forward pod-name 5005:5005

注意:pod-name 是要进行调试的容器所在POD的名称或 ID。


2.2 使用nodePort方式暴露调试端口

当然,如果不想使用上边暴露指定端口的方式的话,可以使用nodePort方式,手动修改POD的services配置文件,加入下面的配置:

- name: debug
  nodePort: 34567
  port: 5005
  porttocol: TCP
  targetPort: 5005

上边配置说明给目标POD增加了一个新的端口映射。5005 --》 34567


3. 在IDEA启动运行配置中加入Remote JVM Debug配置

在出现的窗口面板中,Configgurations Logs配置参数如下:

Debugger mode: Attatch to remote JVM

Transport: Socket

#指定的POD服务所在节点IP地址
Host: 1.1.1.1

#指定POD服务暴露的调试端口
Port: 34567

#下面的这行参数不用关心,自动产生的
Command line argumens for remote JVM: 
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=34567

4. DEBUG调试

  1. 首先,在本地IDEA中运行Remote Debug
  2. 在postman上配置POD所在集群的主节点IP地址,端口为POD中项目的业务端口,注意不要配成上边暴露的远端debug端口34567
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒家肉山大魔王

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值