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