我正在使用 JProfiler 12 并尝试通过 SSH 连接到 Docker 容器中的远程 JVM 进程。我已按照此处的说明进行操作:https://www.ej-technologies.com/products/jprofiler/whatsnew12.html#:~:text=Attaching%20to%20JVMs%20running https://www.ej-technologies.com/products/jprofiler/whatsnew12.html#:%7E:text=Attaching%20to%20JVMs%20running
一切都很顺利,直到我必须选择流程。该列表为空。没有错误消息。
我在任何地方都找不到任何此类问题。我发现其他人有文件夹权限问题,但这不是我的问题,因为我以 root 身份连接。即使我 chmod 文件夹权限为 777,它仍然什么也不做。
这就是我得到的:
这就是我应该得到的:
[2021 年 10 月 1 日更新]
一个问题是我使用的是 Kubernetes pod安全上下文 https://kubernetes.io/docs/tasks/configure-pod-container/security-context/使用 readOnlyRootFilesystem、allowPrivilegeEscalation 并删除一些功能。当我删除它们时,我可以看到该过程。但是当我单击“打开”时,它失败并出现以下错误:
这似乎表明我使用了错误的用户(root)。但是当我切换到该用户时,在我选择容器之前就收到此错误:
所以现在我被困住了一步。
我想出了一个解决方法。
事实证明,当你使用
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- <...capabilities...
and
spec:
securityContext:
runAsUser: <user id>
runAsGroup: <group id>
fsGroup: <id>
那么 JProfiler 无法连接到您的容器。所以摆脱这一切吧。您甚至可以在运行时执行此操作,而无需通过编辑 Kubernetes 部署来重建容器映像kubectl edit deployment
删除这些项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)