当前位置: 首页 > 知识库问答 >
问题:

对Azure库伯内特斯pods进行线程转储/堆转储

叶坚
2023-03-14

我们正在用java编写的Azure kubernetes上运行我们的kafka流应用程序。我们是库伯内特斯的新手。为了调试一个问题,我们需要对正在运行的pod进行线程转储。

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

> < li>

使用以下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 .

提交包含以下部署yaml文件的映像

apiVersion: apps/v1种类:部署元数据:名称:my-application-v1.0.0.0规格:副本:1选择器:matchLabels:名称:my-application-pod应用程序:my-application-app模板:元数据:名称:my-application-pod应用程序:my-application-app规格:node selector:agent pool:agent pool 1容器:-名称:my-application-0映像:myregistry.azurecr.io/my-application:v1.0.0.0 imagePullPolicy:Always命令:["java ","-jar "," my-application-1 . 0 . 0 . 0 . 0

要让shell运行容器,您可以运行下面的命令:

库贝特尔执行委员会

在命令下运行线程转储

JStack PID

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

共有1个答案

尹欣怿
2023-03-14

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

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

如果您的线程转储很大,您可能想考虑先管道化到< code>pv以获得一个漂亮的进度条。

 类似资料:
  • 我有一个停靠的symfony项目,我正试图在Kubernetes集群的GPC中对其进行delpoy。在开发中,我使用docker compose,我有两个用于php fpm和nginx的单独容器。 当我运行docker compose up--build时,一切都正常,但是当我尝试创建kubernetes集群时,在运行kubectl apply-f nginx之后,我遇到了这个错误。部署。亚马尔:

  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我按照https://docs.atlas.mongodb.com/security-vpc-peering/创建了VPC对等互连并检查了激活的双方(GCP和Atlas)。我的GCP VPC本机已启用。 MongoDB cidr192.168.0.0/16 GCP pod ip10.4.0.0/16 我将10.4.0.0/16添加到Atlas白名单中,并尝试通过其中一个POD中的专用连接字符串进行

  • 我在Kubernetes是个新手。我想知道在kubernetes环境中最好的生产部署场景是什么。 在过去的学派中,我习惯于将Web服务器(例如Nginx或Apache)放在DMZ层,而将其放在其他层(我们称之为层)。这样,只有web服务器在DMZ上,恶意攻击只能在web服务器VM上进行。 据我所知,K8S部署不再需要这种方法;这是因为K8S自己处理网络、吊舱和流量。所以我在考虑最确定的部署方案。

  • 我正在学习Spring Bootkubernetes并尝试为我的服务设置Spring Cloud网关。我相信使用Spring Cloud网关,我们不再需要使用功能区来进行负载平衡。所以如果我不使用功能区,那么路由的配置也会改变。我查看了网站以寻求建议,我发现如下:- 在这种情况下,uri具有服务可用的端口的硬编码值。这是推荐的方法吗? 然后还有另一种配置的味道,看起来像这样,不确定url表达式想做

  • 据我所知,作业对象应该在一定时间后收获豆荚。但是在我的GKE集群(库伯内特斯1.1.8)上,“kubectl get pods-a”似乎可以列出几天前的豆荚。 所有这些都是使用乔布斯API创建的。 我确实注意到在使用 kubectl 删除作业后,pod 也被删除了。 我在这里主要担心的是,我将在批量作业中在集群上运行成千上万个pod,并且不想让内部待办系统过载。