首页 > 解决方案 > 在我的情况下,为什么 pod 状态会以 crashloopbackoff 的形式出现?

问题描述

我创建了一个仅计算 pi 并退出的 pod,它应该再次运行。在监视时,我观察到状态正在运行,然后变成已完成,最后是 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

标签: kubernetescontainerskubernetes-pod

解决方案


这是由于restartPolicy你的 pod 的,默认情况下它是Always,这意味着 pod 期望它的所有容器都是长时间运行的(例如,HTTP 服务器),如果 pod 中的任何容器退出(即使成功使用代码 0),它将重新启动。在这种情况下,您希望设置restartPolicyOnFailure。请参阅https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

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


推荐阅读