1:物理機部署的Springboot項目遠程DEBUG
1.1:idea配置
點擊"Edit Configurations",再點擊+,選擇Remote,
接下來是idea的連接遠程主機的jvm配置,遠程主機項目啟動的時候需要加上啟動參數,啟動參數在填寫完Host和Port和選擇JDK版本之后會自動生成,不同的JDK版本的參數是不一樣的。
1.2啟動項目
1.3測試
至此,物理機遠程debug已經完成。
2:Docker遠程部署debug
idea的配置和物理機是一樣的,主要區別就是docker啟動的時候需要暴露出JVM遠程debug監聽的端口
首先,正常把Springboot項目打成jar包,然后使用Docker命令把jar包打成docker鏡像
Dockerfile文件內容如下:和以往不同的主要是暴露出遠程debug的端口
start.sh啟動腳本的內容如下:
然后把jar包打成docker鏡像
查看鏡像是否創建成功:
啟動容器:啟動的時候記得要加上遠程debug的端口映射
查看容器是否啟動成功:
測試:和物理機的測試一樣。
3:kuberneters遠程debug
kubernetes的遠程debug是建立的第二步docker鏡像remote_debug的基礎上,主要區別就是正常創建pod之后需要在pod上暴露出遠程debug的端口,然后在新建一個NotePort類型的Service,暴露出對應的端口供遠程debug使用。
3.1使用pod控制器Deployment創建pod
注意:使用pod控制器Deployment創建pod之前要確保k8s集群中的每台機器都打包了remote_debug這個鏡像,不會創建pod的時候會找不到對應的鏡像的。
使用Deployment創建pod的yaml內容,test_debug.yaml
apiVersion
查看控制器和pod是否創建成功
創建訪問APP的service,app-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: app-service
namespace: dev
spec:
selector:
app: debug
type: NodePort # service類型
ports:
- port: 8001
# nodePort: 5006 # 指定綁定的node的端口(默認的取值范圍是:30000-32767), 如果不指定,會默認分配
targetPort: 8001
查看訪問APP的service是否創建成功
創建暴露debug端口的service,remote-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: remote-service
namespace: dev
spec:
selector:
app: debug
type: NodePort # service類型
ports:
- port: 30435 # service端口
nodePort: 30435 # 主機端口 指定綁定的node的端口(默認的取值范圍是:30000-32767), 如果不指定,會默認分配
targetPort: 30435 # pod端口
測試(和物理機部署測試一樣)
只不過這里瀏覽器訪問的時候要訪問app-service暴露的端口
http://master:32341/test
然后idea啟動debug就可以愉快的debug了。