gpt4 book ai didi

azure - 获取 Azure Kubernetes Pod 的线程转储/堆转储

转载 作者:行者123 更新时间:2023-12-03 00:44:50 25 4
gpt4 key购买 nike

我们正在用 Java 编写的 Azure kubernetes 上运行我们的 kafka 流应用程序。我们是 Kubernetes 新手。为了调试问题,我们想要获取正在运行的 Pod 的线程转储。

以下是我们执行转储的步骤。

  1. 使用以下 docker 文件构建我们的应用程序。

    FROM mcr.microsoft.com/java/jdk:11-zulu-alpine
    RUN apk update && apk add --no-cache gcompat
    RUN addgroup -S user1 && adduser -S user1 -G user1
    USER user1
    WORKDIR .
    COPY target/my-application-1.0.0.0.jar .
  2. 使用以下部署 yaml 文件提交镜像

api版本:apps/v1种类:部署元数据:名称:我的应用程序-v1.0.0.0规范:副本:1选择器:匹配标签:名称:我的应用程序 Pod应用程序:我的应用程序应用程序模板:元数据:名称:我的应用程序 Pod标签:名称:我的应用程序 Pod应用程序:我的应用程序应用程序规范:节点选择器:代理池:代理池1容器:- 名称:我的应用程序0图片:myregistry.azurecr.io/my-application:v1.0.0.0imagePullPolicy:始终命令:[“java”,“-jar”,“my-application-1.0.0.0.jar”,“input1”,“$(connection_string)”]环境:- 名称:连接字符串值来自:配置映射 key 引用:名称:我的应用程序配置映射键:连接字符串资源:限制:中央处理器:“4”要求:中央处理器:“0.5”

  • 要为正在运行的容器获取 shell,您可以运行以下命令:

    kubectl exec -it -- sh

  • 要在命令下运行线程转储

    jstack PID > threadDump.tdump

  • 但是获取权限被拒绝错误 enter image description here

    有人可以建议如何解决这个问题或采取线程/堆转储的步骤吗?提前致谢

    最佳答案

    由于您可能需要在本地进行线程转储,因此您可以绕过在 Pod 中创建文件,并将其直接流式传输到本地计算机上的文件:

    kubectl exec -i POD_NAME -- jstack 1 > threadDump.tdump

    如果您的线程转储很大,您可能需要考虑首先通过管道传输到 pv 以获得漂亮的进度条。

    关于azure - 获取 Azure Kubernetes Pod 的线程转储/堆转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70120207/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com