无法通过 google kubernetes 集群中的堆栈驱动程序调试 java 应用程序

Unable to debug java app through stack driver in google kubernetes cluster

我正在尝试通过堆栈驱动程序在 GKE 集群上调试 java 应用程序。 我用 Allow full access to all Cloud APIs 创建了一个 GKE 集群 我正在关注文档:https://cloud.google.com/debugger/docs/setup/java

这是我的 DockerFile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} alnt-watchlist-microservice.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/alnt-watchlist-microservice.jar"]

在文档中,它被写入以在 DockerFile 中添加以下行:

RUN  mkdir /opt/cdbg && \
     wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
     tar xvz -C /opt/cdbg

RUN java -agentpath:/opt/cdbg/cdbg_java_agent.so 
    -Dcom.google.cdbg.module=tpm-watchlist
    -Dcom.google.cdbg.version=v1
    -jar /alnt-watchlist-microservice.jar

当我构建 DockerFile 时,它​​失败并提示 tar: invalid magic ,tar: short read.

在 stackdriver 调试控制台中,它始终显示 'No deployed application found'。它将显示哪个应用程序?我已经在我的 kubernetes 集群上部署了 2 个服务。

我已经执行了 gcloud debug source gen-repo-info-file --output-directory="WEB-INF/classes/ 在我的项目目录中。

生成源-context.json。创建后,我尝试构建 docker 图像但失败了。

当您部署容器化应用程序时,调试器就可以使用了。您收到 No deployed application found 错误,因为您的调试器代理无法下载或解压缩 dockerfile。

请检查 this discussion 以解决 tar: invalid magic , tar: short read. 错误。

不幸的是,Alpine 似乎没有定期使用 Debugger 进行测试。这里有一个可能对您有帮助的示例设置:https://github.com/GoogleCloudPlatform/cloud-debug-java#alpine-linux

我解决了这个问题。

首先,您必须使用 java 图片 "gcr.io/google-appengine/openjdk" 而不是 Alpine 图片。

其次, 我把入口点没有逗号分隔(基本上是错误的格式)

ENTRYPOINT ["java","-agentpath:/opt/cdbg/cdbg_java_agent.so", "-Djava.security.egd=file:/dev/./urandom"  ,"-Dcom.google.cdbg.module=watchlist"]