写点什么

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

评论

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

2025年最新盘点:国内外70家主流低代码/零代码开发平台

优秀

低代码 零代码

AidaV2荣获全球DEAI黑客松奖项,革新去中心化金融生态

科技汇

HTML 开发者的智能助手:通义灵码在 VSCode 中的应用

阿里巴巴云原生

html 前端

JavaScript AI 通义灵码 VSCode插件安装与功能详解

阿里巴巴云原生

JavaScript

Java 地位岌岌可危?Python、JavaScript 借 AI 疯狂 “攻城略地”,Java 反击战打响

飞算JavaAI开发助手

TON生态游戏开发全攻略:Web3超级入口的实战指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

CAD怎么进行图纸间复制粘贴

极客天地

CAD怎么将相连的线条合并

极客天地

Python并发总结:多线程、多进程与异步编程

不在线第一只蜗牛

Python Linux

当心!片段代码正悄然侵蚀你的编程思维根基

飞算JavaAI开发助手

天润融通AI Agent打造“AI金牌导购”,全面升级车企客户服务体验

天润融通

天润融通走进天虹|大模型驱动,助力零售行业服务质效飞跃

天润融通

【双周会】就在今晚,Apache SeaTunnel Community Call 会议通知

Apache SeaTunnel

JavaScript AI 通义灵码 VSCode插件安装与功能详解

阿里云云效

JavaScript 云计算

PHP开发效率提升利器:通义灵码在VSCode中的应用与技巧

阿里巴巴云原生

php #云计算

吐血整理:3 款小众但超强的免费 AI 编程利器,开发效率一飞冲天

飞算JavaAI开发助手

多线程开发常见问题汇总

量贩潮汐·WholesaleTide

多线程

互联网寒冬再临,掌握这个编程技能让你稳如泰山(附转型秘籍)

飞算JavaAI开发助手

如何使用通义灵码学习JavaScript和DOM

阿里巴巴云原生

JavaScript 人工智能 前端

Web3游戏全栈开发实战指南:智能合约与去中心化生态构建全解析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

一键美化PPT的AI工具怎么用?PPT自动美化全攻略!

职场工具箱

人工智能 效率工具 PPT AIGC AI生成PPT

JVM实战—频繁YGC和频繁FGC的后果

量贩潮汐·WholesaleTide

Java JVM

2025 程序员财富密码:巧用这 4 款 AI 工具,私单收入暴涨 5 倍

飞算JavaAI开发助手

USDT支付系统开发,OTC承兑商支付系统开发

区块链软件开发推广运营

dapp 交易所开发 链游开发 公链开发 代币开发

AI 编程时代的核心驱动力 ——iVX 平台的创新实践与未来展望

代码制造者

无代码

CAD多段线夹点编辑的方法

极客天地

PHP开发效率提升利器:通义灵码在VSCode中的应用与技巧

阿里云云效

php

HTML 开发者的智能助手:通义灵码在 VSCode 中的应用

阿里云云效

html 云计算 前端

文本情感分析预处理教程:从数据采集到可视化

电子尖叫食人鱼

数据库 数据分析

CAD"二维多段线"出现原因

极客天地

如何使用通义灵码学习JavaScript和DOM

阿里云云效

JavaScript 云计算

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