2016-01-22 217 views
1

有两种状态码的一次性吊舱,从API或命令运行:为什么pods返回Error或ExitCode:0即使它们成功运行?

kubectl run --restart=Never --image test:v0.1 ...

pod生成输出文件到NFS服务器,并且我已经成功获取文件。

kubectl get pods -ao wide

NAME  READY  STATUS  RESTARTS AGE  
test-90 0/1  ExitCode:0 0   23m  192.168.1.43 
test-91 0/1  ExitCode:0 0   23m  192.168.1.43 
test-92 0/1  ExitCode:0 0   23m  192.168.1.43 
test-93 0/1  ExitCode:0 0   23m  192.168.1.43 
test-94 0/1  Error  0   23m  192.168.1.46 
test-95 0/1  Error  0   23m  192.168.1.46 
test-96 0/1  Error  0   23m  192.168.1.46 
test-97 0/1  Error  0   23m  192.168.1.46 
test-98 0/1  Error  0   23m  192.168.1.46 
test-99 0/1  ExitCode:0 0   23m  192.168.1.43 

ExitCode:0荚的描述:

Name:       test-99 
Namespace:      default 
Image(s):      test:v0.1 
Node:       192.168.1.43/192.168.1.43 
Status:       Succeeded 
Replication Controllers:  <none> 
Containers: 
    test: 
    State:    Terminated 
     Exit Code:  0 
    Ready:    False 
    Restart Count:  0 

Error荚的描述:

Name:       test-98 
Namespace:      default 
Image(s):      test:v0.1 
Node:       192.168.1.46/192.168.1.46 
Status:       Succeeded 
Replication Controllers:  <none> 
Containers: 
    test: 
    State:    Terminated 
     Reason:   Error 
     Exit Code:  0 
    Ready:    False 
    Restart Count:  0 

他们的NFS卷:

Volumes: 
    input: 
    Type:  NFS (an NFS mount that lasts the lifetime of a pod) 
    Server:  192.168.1.46 
    Path:  /srv/nfs4/input 
    ReadOnly: false 
    output: 
    Type:  NFS (an NFS mount that lasts the lifetime of a pod) 
    Server:  192.168.1.46 
    Path:  /srv/nfs4/output 
    ReadOnly: false 
    default-token-nmviv: 
    Type:  Secret (a secret that should populate this volume) 
    SecretName: default-token-nmviv 

kubectl logs由于容器只产生输出文件而不返回任何值。

在此先感谢!

+0

你使用什么版本的kubernetes? 'kubectl version' –

+0

@ Yu-JuHong Kubernetes 1.1.2在Ubuntu 14.04上,任何传递到pod的命令都会返回错误状态。 – Yang

+0

我遇到了与Kubernetes v1.1.4相同的问题,你有没有找到原因呢?我实际上只是遵循简单的hello-world示例,将restartPolicy设置为从不。 – zyxue

回答

0

ExitCode 0意味着它正常终止

退出代码可以使用,如果你管到另一个过程,所以这个过程知道下一步该怎么做(如果以前的进程失败做到这一点,否则做传递的数据东西.. )

+0

谢谢!我测试了容器中的脚本,退出代码正好是'0',但为什么一些荚用'Error'终止? – Yang

+0

嗯,我认为复制控制器说成功,如果它成功地启动每个请求的pod,这在巡视情况下是一次性的过程,所以只要图像可以运行,它就会始终成功。现在为什么该吊舱可能会退出并显示错误取决于您实际运行的内容。它可能无法挂载nfs存储并失败。你需要在图像中输出一些东西来检查并获得有用的日志 – MrE

+0

谢谢!我刚才检查了nfs服务器中的输出文件,并且按预期存储了这些文件。这个问题真的有线。 – Yang