1. 程式人生 > 其它 >idea遠端debug(物理機、docker、k8s)

idea遠端debug(物理機、docker、k8s)

IDEA遠端DEBUG

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: apps/v1
kind: Deployment
metadata:
name: remote-debug
namespace: dev
spec:
replicas: 3
selector:
matchLabels:
app: debug
template:
metadata:
labels:
app: debug
spec:
containers:
- name: test
image: remote_debug
imagePullPolicy: Never
ports:
- containerPort: 8001
- containerPort: 30435

檢視控制器和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埠

檢視暴露debug埠的service是否建立成功

測試(和物理機部署測試一樣)

只不過這裡瀏覽器訪問的時候要訪問app-service暴露的埠

http://master:32341/test

然後idea啟動debug就可以愉快的debug了。

至此,本文已經結束,相信會對大家使用idea進行遠端debug有一定的幫助!