kubernetes - 在我的情况下,为什么 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
解决方案
这是由于restartPolicy
你的 pod 的,默认情况下它是Always
,这意味着 pod 期望它的所有容器都是长时间运行的(例如,HTTP 服务器),如果 pod 中的任何容器退出(即使成功使用代码 0),它将重新启动。在这种情况下,您希望设置restartPolicy
为OnFailure
。请参阅https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy。
除此之外,Job而不是 Pod 是运行到完成应用程序所需的资源类型,因为 Job 为您管理 pod 并提供比非托管 Pod 更多的保证。
推荐阅读
- android - 这是展示广告的正确方式吗?
- python-3.x - WebScraping:获取 HTML 表格中的嵌套元素
- java - 如何防止在 Concurrent Future Java 中交换多线程响应?
- c - 在 C 到 D 之间转换 typedef 的问题
- powershell - 如何将非临时文件移动到专用子目录?
- python - matplotlib 颜色栏更新/删除会破坏轴布局
- php - 从 foreach 循环外的多维数组中获取最后一个值
- python - 解密 AWS Lambda 中的环境变量在 Python 3.6 中不起作用
- javascript - 将一些 html 添加到带有 append 的 body 标记,但 Tesseract 功能不起作用
- spring-cloud - 从 spring restdocs 生成的 dslContract 不适用于 queryParameters