如何在 IntelliJ 的 Kubernetes pods 中调试 Kotlin 应用程序 运行?
How to debug Kotlin applications running in Kubernetes pods in IntelliJ?
我使用以下设置在 Kubernetes 中成功调试 Spring 在 Java 中编写的引导应用程序:
- 将
-Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
添加到Dockerfile
中的mvn spring-boot:run
命令行。
- 添加
- name: java-debug
containerPort: 5005
到 Deployment
的 spec.containers.ports
和
- name: java-debug
protocol: TCP
port: 5005
targetPort: 5005
到 Service
. 的 spec.ports
- 添加
Remote
运行 配置 Debugger mode
设置为 Attach to remove JVM
和 Service
. 的主机
对 Kotlin 项目执行相同的操作,调试器连接到 JVM 并接受断点,但是,无论我多久执行一次代码,它都不会在断点处停止。根据日志和应用反馈,代码在k8s上执行。
我正在使用 IntelliJ 2019.1.2 CE 在 microk8s 上进行本地测试。
正如 mdaniel 所指出的,如果我需要做我想做的事情,这确实是不良做法的标志。需要通过可配置的日志记录和集成测试来完成此任务。
我使用以下设置在 Kubernetes 中成功调试 Spring 在 Java 中编写的引导应用程序:
- 将
-Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
添加到Dockerfile
中的mvn spring-boot:run
命令行。 - 添加
到- name: java-debug containerPort: 5005
Deployment
的spec.containers.ports
和
到- name: java-debug protocol: TCP port: 5005 targetPort: 5005
Service
. 的 - 添加
Remote
运行 配置Debugger mode
设置为Attach to remove JVM
和Service
. 的主机
spec.ports
对 Kotlin 项目执行相同的操作,调试器连接到 JVM 并接受断点,但是,无论我多久执行一次代码,它都不会在断点处停止。根据日志和应用反馈,代码在k8s上执行。
我正在使用 IntelliJ 2019.1.2 CE 在 microk8s 上进行本地测试。
正如 mdaniel 所指出的,如果我需要做我想做的事情,这确实是不良做法的标志。需要通过可配置的日志记录和集成测试来完成此任务。