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了。
原文地址:https://www.cnblogs.com/wkynf/p/15115295.html
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(54)-工作流设计-所有流程监控
- (收藏)搭建.NET Framework 3.0开发环境 及SharePoint 2007/WSS 3环境
- WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(48)-工作流设计-起草新申请
- 把windows2003“搬”到手机上。
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(53)-工作流设计-我的批阅
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(52)-美化EasyUI皮肤和图标
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--系统权限全套完整图
- 互联网时代的产品升级和用户反馈故事
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(50)-Easyui 扁平化皮肤
- 微信终于做了它最擅长的业务,市场已经轰动
- Bootstrap Metronic 学习记录(二)菜单栏
- WCF技术剖析之十一:异步操作在WCF中的应用(上篇)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- redis设计与实现系列1-SDS
- LinkedList - 876. Middle of the Linked List
- Array - 48. Rotate Image
- string- 43. Multiply Strings
- Array - 34. Find First and Last Position of Element in Sorted Array
- Array - 31. Next Permutation
- Docker快速部署一个属于你自己的博客
- golang实现BST和AVL
- golang实现跳表(SkipList)
- 一致性哈希的golang实现
- Array - 75. Sort Colors
- Array - 309. Best Time to Buy and Sell Stock with Cooldown
- Array - 55. Jump Game
- 【技术创作101训练营】超简单的公司Git+个人Git共存方式
- css高度坍塌与清除浮动