立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

运行在 Kubernetes 上的应用程序的 Java 远程调试

  • 2020-03-12
  • 本文字数:1077 字

    阅读完需:约 4 分钟

运行在Kubernetes上的应用程序的Java远程调试

Kubernetes1.2 版本最近刚发布就立马成为容器(Docker,Rocket,Hyper 等等的事实上的集群管理路径。这里是一些关于 1.2 版本的有趣特点:


  • 集群现在可以扩容到 30,000 个容器一个集群

  • 优雅的关闭节点,过渡到集群里运行的其他节点

  • 自定义指定指标作为自动扩容的基础

  • 动态配置管理

  • 当你在本地笔记本上面开发微服务的时候,你可以使用 Kubernetes 来运行你的本地 Docker 容器,并且在你配置你的应用程序的时候,得到开发人员/QA/生产过程等相似过程。

  • 对于 Java 开发人员来说,有一件事肯定会发生:就是你如何看日志、做远程调试以及如何追踪协议栈。文章以下的内容是一些小提示:


为你的 Pod 跟踪日志


在一些集群管理系统中,你基本上不得不查找应用程序的本地 IP(如果是在容器里运行的话),无论如何都要 ssh 到它,然后找到日志并且跟踪它。有了 Kubernetes,你就不用必须做上述的任意事情了。除了你正在运行的那台机器(也就是你运行 Kubernetes client 的地方),你可以按照下面的来:


在你的集群里列出以下 pods



追踪日志


现在选择你想要追踪的日志,并且运行它!



如果必须的话,通过 Shell 连接


如果你由于某些原因必须登陆到 pod(在文件系统中试探一下,查看其它配置文件等等)



虚拟机远程调试你的应用程序


这样的话,查看你的应用程序上面发生了什么就会变得十分方便。为了做到这个,你只要做跟今天做的一样的事情就好了。当你 bootstrap 你的 JVM,你应该有方法启动 JVM 调试。例如,HawtApp Maven plugin 就是一个简单的 mvn 插件,可以将 Java Main 作为可执行的、简单的、灵活的 bootrtrap bin/run.sh 脚本(或者 windows 的批处理文件),允许你控制路径和通过环境变量调试。


令 Bootstrap Java 可以暴露到调试端口


比如:



通过 Kubernetes 密钥清单在 docker 容器里定义调试端口


现在你需要在你的 Docker 容器里面通过你的 Kubernetes 密钥清单(json/yaml)曝光端口 5005 (在这个例子里)



注意,我们已经添加了一个 env 变量到 Kubernetes 密钥清单文件到可以控制我们是否想要远程调试打开或者关闭(true/false)。Bootstrap 脚本(以上所述)会检查 env 变量,并且你可以通过 kube 密钥清单控制它(现在 Kube1.2 有了 ConfigMap,或者 OpenShift templates)。


最后一步是代理服务调试端口到你的本地机器。如果你在本地运行 kubectlclient,就会十分容易:


列出集群里的 pods



代理 pod 到一个特殊端口


上述代码会从你的本地环境(5005)端口转发到 pod 的端口 5005。现在你可以将你的远程调试器附加到 localhost:5005。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/juz9Lc_WwFUSeM2uS2Qm_Q


2020-03-12 22:501391

评论

发布
暂无评论
发现更多内容

前端小白躺平摆烂可以吗

Liam

前端 前端开发 前端面试 Mock 前端入门

[CSS入门到进阶] 4行CSS实现footer置底!超常见的需求,快来收藏

HullQin

CSS JavaScript html 前端 8月月更

设计模式的艺术 第五章工厂方法设计模式练习(设计一个程序来读取各种不同类型的图片格式,针对每种格式都设计一个图片读取器)

代廉洁

设计模式的艺术

【小程序项目开发-- 京东商城】uni-app之商品列表页面 (下)

计算机魔术师

8月月更

Python如何用类和对象来编程?

和牛

Python 8月月更

Java即时编译(JIT)原理与调优

柠檬汁Code(binbin0325)

JVM JIT 即时编译

官宣!华为云GaussDB两大数据库通过中国信通院多项评测

科技怪咖

defi质押挖矿dapp系统开发智能合约部署详解

开发微hkkf5566

如何为开源项目撰写 RFC

Databend

大数据 开源 #开源 databend

MobTech短信验证 Android端快速集成

MobTech袤博科技

android android-studio 短信验证

长安链源码分析启动(7)

长安链

软件测试 | 测试开发 | 接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock

测吧(北京)科技有限公司

Mock

揭秘华为云GaussDB(for Redis)六大秒级能力盘点

科技云未来

华为云发布《云原生2.0架构白皮书》,GaussDB技术再升级

sofiya

基于KubeEdge的边缘节点分组管理设计与实现

华为云开发者联盟

云计算 云原生 后端

【Django | 开发】 (国际化项目&支持多语言)

计算机魔术师

8月月更

软件测试 | 测试开发 | 常见接口协议解析

测吧(北京)科技有限公司

TCP/IP

在线图片隐写术解密解码传递数据

入门小站

工具

软件测试 | 测试开发 | 一文带你了解K8S容器编排(上)

测吧(北京)科技有限公司

k8s

字节跳动端智能工程链路 Pitaya 的架构设计

字节跳动终端技术

机器学习 客户端 端智能 Python. Pitaya

在线XML转HTMLTable工具

入门小站

工具

教育部“产学合作协同育人”项目华为云GaussDB项目入选名单公布

sofiya

中大型现代服务行业的ERP,Telework现代服务中台

sofiya

设计模式的艺术 第十六章责任链设计模式练习(提供一个假条审批模块:如果员工请假天数小于3天,主任审批该请假条;如果天数大于或等于3天,小于10天,经理审批;如果天数大于或等于10天,小于30天,总经理审批;如果超过30天,总经理不能审批,提示相应拒绝信息)

代廉洁

设计模式的艺术

Databend SQL Planner 全新设计

Databend

sql 大数据 开源 #开源 databend

演讲实录|吴亚昆:云时代智能运维与可观测性探索

观测云

创新技术领航者!华为云GaussDB获颁2022年云原生数据库领域权威奖项

科技云未来

华为云GaussDB(for Redis)全面对比Codis

科技云未来

数字藏品系统开发:NFT系统开发

开源直播系统源码

数字藏品 数字藏品软件开发 数字藏品源码出售 数字藏品开发

【微信小程序开发】自定义tabBar案例(定制消息99+小红心)

计算机魔术师

8月月更

快手能做好ToB吗?

ToB行业头条

tob 快手

运行在Kubernetes上的应用程序的Java远程调试_行业深度_才云科技_InfoQ精选文章