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