应用场景:
IDEA远程调试kubernetes环境中的容器应用(Java应用)应用场景:Java开发的项目在本地运行正常,然后将容器运行方式的项目发布到远端服务器上线运行后,出现了异常情况,此时频繁去修改代码发布镜像进行问题验证,将耗费较大的时间成本。
为了提高问题定位和代码调试效率,使用端口代理的方式,将远端容器应用的端口映射出来,使用远端代码调试方式进行debug代码。
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文章来源:https://www.toymoban.com/news/detail-497570.html
3. 在IDEA启动运行配置中加入Remote JVM Debug配置
在出现的窗口面板中,Configgurations Logs配置参数如下:文章来源地址https://www.toymoban.com/news/detail-497570.html
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调试
- 首先,在本地IDEA中运行Remote Debug
- 在postman上配置POD所在集群的主节点IP地址,端口为POD中项目的业务端口,注意不要配成上边暴露的远端debug端口34567
到了这里,关于IDEA远程调试kubernetes环境中的容器应用(Java应用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!