拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何设定intellij远程除错?

如何设定intellij远程除错?

白鹭 - 2022-03-02 2131 0 0

我正在尝试在测验环境中除错我的应用程序,我的应用程序在 pod 中运行,我说 'pod' 因为我对Kubernetes不熟悉,它的管理客户端看起来像这样:应用程序运行示意图我已经知道我应该像这样设定想法 RUN/Debug Configurations 示意图并且应该重新启动并重新部署我的应用程序,我首先更改了 Dockfile。原始指令是FROM xxx/java:alpine VOLUME /tmp ADD recruitment.jar app.jar ENTRYPOINT ["java","-Xmx2048m","-jar","/app.jar"],我将其更改为,FROM xxx/java:alpine VOLUME /tmp ADD recruitment.jar app.jar ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-jar","/app.jar"] 但它总是显示这样的错误Error running 'face_remote': Unable to open debugger port (888.88.888.888[not real]:5005): java.io.IOException "handshake timeout"我不确定这个 ip,因为我使用 'ping 888.88.888.888' 指令不能成功。我使用这个 ip 因为 Swagger 请求 url 的域名的 ip 是 this.this main enter image description here. 我猜如果应用程序在 docker 或 k8s 中运行,它会有不同的互动模式。不像只是在linux中运行

uj5u.com热心网友回复:

大部分附加影像不可见。

  • IP 地址应该可以从您的本地系统 [888.88.888.888] 访问,请注意确保这是正确的。
  • 除错埠也需要从本地系统映射 - 使用埠转发 ex:kubectl port-forward 5005:5005

如果您已配置埠转发,则可以使用 localhost:5005 进行除错

uj5u.com热心网友回复:

我看到你可以检查三件事:

检查 IP 地址: jar 档案在 Docker 容器中运行,该容器在 pod 中运行。要访问 pod,您通常需要通过服务和入口。您使用的 ip 很可能会到达入口/服务或任何其他更高层。

要附加远程除错器,您需要直接连接到 PodIP这样做的一种方法是首先使用工具kubectl连接到您的 kubernetes 集群(需要一些配置)并从您的 pod 进行埠转发:kubectl port-forward my-pod-c93b8b6df-8c4aa 5005:5005pod(例如,pod 实体名称是 my-pod-c93b8b6df-8c4aa) .

这将打开从本地计算机到 pod 的连接。然后你需要通过kubectl describe pods my-pod-c93b8b6df-8c4aaIntelliJ 识别 PodIP 并使用它

检查埠是否暴露: 确保5005在测验环境中从 pod 暴露埠(类似于在本地运行容器时暴露埠)。

如何做到这一点取决于您如何运行 Kubernetes 集群。如果你使用 Helm chart,你可以在部署 yaml 的 port 部分添加这样的配置:

- containerPort: 5005
  name: debug
  protocol: TCP

检查除错命令地址: 最后一件事是确保在命令列选项中添加正确的地址。正如 IntelliJ 在除错编辑器中建议的那样:用于 JDK9 …suspend=n,address=*:5005和 JDK8 及以下使用…suspend=n,address=5005

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *