2
在我的Jenkins文件出现错误后,该slave-agent pod似乎总是死掉,并很快就消失。有没有办法让它进入并保持它在我进入时的状态?我在Kubernetes上使用头盔运行Jenkins有没有办法将SSH(exec)放入Kubernetes Jenkins slave pod中进行调试?
在我的Jenkins文件出现错误后,该slave-agent pod似乎总是死掉,并很快就消失。有没有办法让它进入并保持它在我进入时的状态?我在Kubernetes上使用头盔运行Jenkins有没有办法将SSH(exec)放入Kubernetes Jenkins slave pod中进行调试?
如果吊舱已经死了,您不能将kubectl exec
放入容器中。
但是,您可以直接进入运行您的容器的节点并直接检查(现在已停止)的容器。 (您不能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
检查文件系统:
从容器中创建的图像,创建一个新的容器,并得到一个shell:
nodexxx:~# docker commit zzzz debug
nodexxx:~# docker run -it zzzz sh
/# cat /artifact
quick death
谢谢。你的例子和busybox一起工作,但是当我为Jenkins做同样的事情时,它说“错误:没有这样的容器zzzz”:( – gunit
你确定它是正确的节点吗?最后容器被垃圾收集了 –
原来我的问题不是为詹金斯奴隶指定足够的RAM和CPU,这样当到达需要更多资源的特定位置时,吊舱几乎会立即死亡 – gunit