2017-07-24 39 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

相关问题