为部署在 Kubernetes 环境中的Java应用程序启用远程调试
在开发期间,开发人员必须调试他们的应用程序以解决代码问题。为了调试部署在 Kubernetes 集群中远程机器上的Java应用程序,首先开发人员必须执行一些步骤以使其应用程序准备好进行调试。以下是为在 Kubernetes 环境中作为容器运行的任何Java应用程序启用远程调试的手动步骤。
分步实施
第 1 步:在部署 yaml 文件的“env”部分中添加用于启用调试的Java选项 (JAVA_OPTS) 及其值作为变量,如下所示:
– name: JAVA_OPTS
value: “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9991”
第 2 步:使用以下命令重新启动 pod。假设部署 yaml 文件名为“my-app-deployment.yaml”。
Kubectl delete -f my-app-deployment.yaml
kubectl create -f my-app-deployment.yaml
第 3 步:为您的应用程序创建调试服务。假设您已将其命名为“my-app-debug-svc.yaml”或更改现有服务 yaml 文件(如果存在)。请参阅下面的示例服务 yaml 文件,在您的服务 yaml 文件中进行突出显示的更改。添加 nodePort 使外部应用程序(这里是您的 IDE)能够访问部署在 Kubernetes 集群中的容器。
apiVersion: v1
kind: Service
metadata:
name: my-app-debug-svc
namespace:
labels:
service: my-app-debug
release: “1.0”
spec:
type: NodePort
ports:
– port: 9991
nodePort: 9991
protocol: TCP
name: debug-port
selector:
app: my-app
service: my-app-debug
release: “1.0”
第 4 步:使用以下命令启动调试服务。
Kubectl create -f my-app-debug-svc.yaml
第 5 步:在 IDE 中编辑配置以进行远程调试。以下是在 IntelliJ IDE 中编辑配置的步骤:
- 在 InteliiJ IDE 中打开您的代码库。
- 转到编辑配置:
- 单击 + 号并选择远程。为您的远程调试配置提供任何名称。例如,我的调试。提供您要调试的应用程序正在运行的服务器机器的主机名和端口。 “远程 jvm 的命令行参数”字段值将自动填充。单击应用,然后单击确定。
- 设置断点。
- 单击调试图标。
- 检查控制台。它应该说“已连接到目标 VM,地址:'
: ',传输:'socket'”。
这就是您准备远程调试Java应用程序的全部内容!