写点什么

运行在 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:501470

评论

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

DAMS大会 | 博睿数据分享《一体化智能可观测平台建设之路》

博睿数据

可观测性 智能运维 博睿数据 Bonree ONE

龙智荣获Perforce公司颁发的2022年度销售与技术两项大奖

龙智—DevSecOps解决方案

版本控制

Atlassian Server用户新选择 | 迁移到数据中心版前,您需要做这些准备(2)

龙智—DevSecOps解决方案

Atlassian Atlassian 云版 数据中心版 server版

PyTorch深度学习实战 | 预测工资——线性回归

TiAmo

深度学习 线性回归 PyTorch 梯度下降法

慕了!17年阿里架构师把Spring Boot的精髓都总结出来了

Java你猿哥

Java spring Spring Boot Spring MVC Java工程师

龙智被SmartBear评为2022年“最具动力营销团队”

龙智—DevSecOps解决方案

自动化测试 UI测试 UI测试自动测试

集成华为运动健康服务干货总览

HarmonyOS SDK

HMS Core

免费可商用开源GPT模型问世,50G权重直接下载,性能不输GPT-3

Openlab_cosmoplat

开源项目 开源社区

华大北斗高精度芯片助力上汽名爵MG7智能驾驶

江湖老铁

如何打造企业专属A/B平台?火山引擎DataTester开放平台技术揭秘

字节跳动数据平台

大数据 AB testing实战 开放平台 企业号 4 月 PK 榜 企业增长

版本控制 | 告别繁琐,P4VJS带来全新的Diff体验

龙智—DevSecOps解决方案

版本控制 版本管理

一种元数据同步的方法

KaiwuDB

数据复制 KaiwuDB 元数据同步

KaiwuDB 成为中国信通院数据库应用创新实验室-汽车行业工作组副组长单位

KaiwuDB

车联网 KaiwuDB 数据库行业标准制定 汽车工作组

又是一季金三银四,Spring之AOP知识要点总结

Java你猿哥

spring Spring Boot ssm aop

如何选择合适的云数据库架构与规格

NineData

数据库 阿里云 AWS RDS 数据库架构设计

机器学习实战系列[一]:工业蒸汽量预测(最新版本下篇)含特征优化模型融合等

汀丶人工智能

人工智能 数据挖掘 机器学习 LightGBM

以 100GB SSB 性能测试为例,通过 ByteHouse 云数仓开启你的数据分析之路

字节跳动数据平台

大数据 数据仓库 云原生 数据仓库服务 云数仓

“ONE”有引力,4月21日见!

博睿数据

智能运维 博睿数据 发布会 Bonree ONE

【ChatGPT系列话题】金融行业大语言模型应用落地

易观分析

人工智能 金融 模型

你kin你擦!阿里终于肯把内部高并发编程高阶笔记开源出来了

Java你猿哥

Java nginx 高并发 SpringCloud 面经

HummerRisk 使用教程:镜像检测

HummerCloud

镜像安全 云原生安全

Web2D工业组态工具软件——Sovit2D

2D3D前端可视化开发

web组态 组态编辑器 工业组态软件 web组态软件 2D组态

研发效能 | DevOps如何改变游戏公司工作方式?

龙智—DevSecOps解决方案

DevOps 游戏开发

软件测试/测试开发丨Web自动化测试中显式等待与隐式等待该怎么用

测试人

软件测试 自动化测试 测试开发

selenium源码通读·1 | 源码目录

Python 源码 自动化测试 selenium

既然有了MySQL,为什么还要有MongoDB

Java你猿哥

Java MySQL 数据库 mongodb Java工程师

AI大模型已经出现不可预测的能力

Baihai IDP

人工智能 深度学习 NLP 大模型 ChatGPT 企业号 4 月 PK 榜

超实用VS Code for Windows快捷键

SEAL安全

vscode 企业号 4 月 PK 榜

Hive 和 Spark 分区策略剖析

vivo互联网技术

spark hive

户外LED显示屏对恶劣环境的防护措施!

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏

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