远程调试k8s里的java应用

在jvm参数里增加这个参数

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

  

以下为在Dockerfile里增加该jvm参数,记得要暴露调试端口,当然你也可以在k8s的deployment里增加jvm环境变量。增加jvm主要是这两方式,任选其一。

FROM harbor.y.com/library/java:8
MAINTAINER javalittleman@gmail.com
ENV LANG C.UTF-8
ENV TZ Asia/Shanghai
WORKDIR /usr/local/app
ADD target/javalittleman-boot.jar ./app.jar
EXPOSE 8083
EXPOSE 5005
CMD java -Djava.security.egd=file:/dev/./urandom -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar

  

661283-20211212092115780-1292840141

在idea里的运行配置里增加远程调试配置,注意Host需要填写能直接调试的IP,这个不一定都是被调试应用的负载IP,比如:用port-forward,那这个地方填写的是你k8s节点的IP或者域名,如果是用server的LoadBlancer来暴露的调试端口,那你这里填写的是负载IP,还如server里如果用的NodePort的话,那你就填写k8s节点IP,但这个时候填写的端口并不是你应用端口,而是k8s随机生成的端口,等等,这些都是k8s最基本的网络概念,大家自行尝试。


image

启动debug后就可以欢快的调试了。

image

posted @ 2021-12-12 09:53  爪哇小汉  阅读(1736)  评论(0编辑  收藏  举报