2017-07-24 38 views

回答

5

如果吊艙已經死了,您不能將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 
+0

謝謝。你的例子和busybox一起工作,但是當我爲Jenkins做同樣的事情時,它說「錯誤:沒有這樣的容器zzzz」:( – gunit

+0

你確定它是正確的節點嗎?最後容器被垃圾收集了 –

+0

原來我的問題不是爲詹金斯奴隸指定足夠的RAM和CPU,這樣當到達需要更多資源的特定位置時,吊艙幾乎會立即死亡 – gunit

相關問題