應用場景:
IDEA遠程調試kubernetes環(huán)境中的容器應用(Java應用)應用場景:Java開發(fā)的項目在本地運行正常,然后將容器運行方式的項目發(fā)布到遠端服務器上線運行后,出現了異常情況,此時頻繁去修改代碼發(fā)布鏡像進行問題驗證,將耗費較大的時間成本。
為了提高問題定位和代碼調試效率,使用端口代理的方式,將遠端容器應用的端口映射出來,使用遠端代碼調試方式進行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 使用命令行方式暴露調試端口
啟動容器后,會自動開啟一個監(jiān)聽 5005 端口的調試服務,可以使用遠程調試工具(如 IntelliJ IDEA、Eclipse 等)連接到該端口進行調試。
在Kubernetes 集群環(huán)境中,將容器內部的調試端口轉發(fā)到本地端口上。
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文章來源:http://www.zghlxwxcb.cn/news/detail-689952.html
3. 在IDEA啟動運行配置中加入Remote JVM Debug配置
在出現的窗口面板中,Configgurations Logs配置參數如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-689952.html
Debugger mode: Attatch to remote JVM
Transport: Socket
#指定的POD服務所在節(jié)點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所在集群的主節(jié)點IP地址,端口為POD中項目的業(yè)務端口,注意不要配成上邊暴露的遠端debug端口34567
到了這里,關于IDEA工具遠程DEBUG調試K8S環(huán)境中的容器應用(Java應用)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!