我的Jenkins文件出错后,那个slave-agent pod似乎总是死掉并迅速消失。当我进去的时候,有没有办法进入它并让它保持活力?我使用Helm在Kubernetes上运行Jenkins
答案 0 :(得分:5)
如果吊舱已经死亡,则无法kubectl exec
进入容器。
但是,您可以直接ssh到运行pod的节点并直接检查(现已停止的)容器。 (一旦停止,你就不能docker exec
进入它)
这样的事情:
# this pod will die pretty quickly
$ kubectl run --restart=Never --image=busybox deadpod -- sh -c "echo quick death | tee /artifact"
pod "deadpod" created
$ kubectl describe pod deadpod
Name: deadpod
Namespace: default
Node: nodexxx/10.240.0.yyy
Containers:
deadpod:
Container ID: docker://zzzzzzzzz
[...]
$ ssh nodexxx
一旦进入节点,就会有几个调试选项。
获取输出:
nodexxx:~# docker logs zzzz
quick death
检查文件系统:
nodexxx:~# mkdir debug; cd debug
nodexxx:~/debug# docker export zzz | tar xv
[...]
nodexxx:~/debug# ls -l; cat artifact
[...]
quick death
从容器中创建一个图像,创建一个新容器并获取一个shell:
nodexxx:~# docker commit zzzz debug
nodexxx:~# docker run -it zzzz sh
/ # cat /artifact
quick death