在我的情况下,为什么pod状态会以crashloopbackoff的形式出现?

时间:2019-09-07 04:56:14

标签: kubernetes containers kubernetes-pod

我创建了一个Pod,该Pod仅计算pi并退出,它应该再次运行。在监视中,我观察到状态正在运行,然后变为完成状态,最后是crashloopbackoff。

我尝试了不同的图像,但是问题是相同的。

apiVersion: v1
kind: Pod
metadata:
  name: pi
spec:
    containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]

Running and Completed status in a series. But i see CrashLoopBackOff.
qvamjak@qvamjak:~/Jobs$ kubectl get pods
NAME           READY   STATUS             RESTARTS   AGE
pi             0/1     CrashLoopBackOff   16         63m

1 个答案:

答案 0 :(得分:0)

这是由于您的pod的restartPolicy所致,默认情况下为Always,这意味着Pod希望其所有容器(例如HTTP服务器)长期运行(如果有容器)在pod出口(即使成功使用代码0),它将重新启动。在这种情况下,您要将restartPolicy设置为OnFailure。参见https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

除此之外,Job(而不是Pod)是您要运行到完成的应用程序所需的资源类型,因为Job可以为您管理Pod,并且比非托管Pod提供更多的保证。