我创建了一个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
答案 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提供更多的保证。