首页 > 解决方案 > 是否可以使用服务名称在 kubernetes 中远程调试 java 程序

问题描述

现在我正在使用 kubectl 代理转发在 kubernetes(v1.15.2) 中远程调试我的 java 程序,如下所示:

kubectl port-forward soa-report-analysis 5018:5018 -n dabai-fat

我可以使用intellij idea远程连接我的localhost端口5018来远程调试远程数据中心kubernetes集群中的pod,但现在我面临的一个问题是每次我必须在pod升级后更改pod名称以重新调试,任何方式来保持稳定的调试渠道?

标签: kubernetes

解决方案


我可以建议任何想在 Kubernetes 中调试 Java(以及 Go、NodeJS、Python、.NET Core)应用程序的方法的人查看skaffold
它是一个简单的 CLI 工具,它使用您曾经使用的现有构建和部署配置。无需额外安装集群,修改现有部署配置等。
安装CLI:https
://skaffold.dev/docs/install/ 打开你的项目,尝试:

skaffold init

这将使 skaffold 创建

脚手架.yaml

(skaffold 唯一需要的配置文件)

接着

skaffold debug

它将使用您现有的构建和部署配置来构建容器并部署它。如果需要,必要的参数将被注入容器中,端口转发将自动启动。

有关更多信息,请查看: https ://skaffold.dev/docs/workflows/debug/

这可以提供一种一致的方式来调试您的应用程序,而不必一直了解当前的 pod 或部署状态。


推荐阅读