idea遠端debug(物理機、docker、k8s)
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了。