测试版本信息
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.3", GitCommit:"ca643a4d1f7bfe34773c74f79527be4afd95bf39", GitTreeState:"clean", BuildDate:"2021-07-15T21:04:39Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:53:14Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}
start k8s
minikube start --feature-gates=EphemeralContainers=true
start a simple java pod:
kubectl run arthas-demo --image=hengyunabc/atest:0.0.3
Dockerfile:
FROM openjdk:8-jdk
RUN wget https://arthas.aliyun.com/math-game.jar
ENTRYPOINT ["/bin/sh", "-c", "java -jar math-game.jar"]
Check pods status:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
arthas-demo 1/1 Running 0 5m58s
Debug ephemeral containers
kubectl debug -it arthas-demo --image=openjdk:8-jdk --target=arthas-demo
ps 可以看到进程,但是jps看不到,并且jstack -l失败
root@arthas-demo:/# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2392 744 ? Ss 10:00 0:00 /bin/sh -c java -jar math-game.jar
root 8 0.1 0.7 4054728 62724 ? Sl 10:00 0:10 java -jar math-game.jar
root 18 0.0 0.0 5756 3600 pts/0 Ss+ 10:00 0:00 bash
root 115 1.0 0.0 5756 3552 pts/0 Ss 11:50 0:00 bash
root 121 0.0 0.0 9396 3012 pts/0 R+ 11:50 0:00 ps aux
root@arthas-demo:/# jps
122 Jps
root@arthas-demo:/# jstack -l 8
8: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
尝试
尝试把应用容器里的 /tmp/hsperfdata_root/
目录复制到临时容器里,仍然失败:
root@arthas-demo:/# cp -r /proc/8/root/tmp/hsperfdata_root/ /tmp
root@arthas-demo:/# jps
148 Jps
8 jar
root@arthas-demo:/# jstack -l 8
8: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding