作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Jenkinsfile 中出现错误后,从属代理 pod 似乎总是很快就会死亡并消失。有没有办法在我身处其中时执行它并使其保持事件状态?我使用 Helm 在 Kubernetes 上运行 Jenkins
最佳答案
如果 Pod 已经死亡,您就无法 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
一旦您通过 ssh 连接到节点,您就有多个调试选项。
获取输出:
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
关于jenkins - 有没有办法通过 SSH(执行)进入 Kubernetes Jenkins 从属 pod 进行调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288080/
我是一名优秀的程序员,十分优秀!