在这里输入图像描述kubectl run onfail1 --image=alpine --restart=OnFailure -- exit 0.最后,这个 pod status=CrashLoopBackOff.我认为应该完成,因为退出代码 = 0,所以这个...
在此处输入图片描述
kubectl run onfail1 --image=alpine --restart=OnFailure --exit 0。
最后这个pod status=CrashLoopBackOff。
我认为应该完成,因为退出代码=0,所以这个pod不需要重新启动。
为什么?这个状态应该已完成。你能告诉我为什么吗?
要使 Pod 进入“已完成”状态,成功完成后不应重新启动它。以下是实现此目的的方法:
解决方案 1:使用 kubectl create job使用 Kubernetes Job,它旨在运行任务直至完成:
kubectl create job onfail1 --image=alpine -- /bin/sh -c "exit 0"
解决方案 2:使用 kubectl run 并加上 --restart=Never
kubectl run onfail1 --image=alpine --restart=Never -- /bin/sh -c "exit 0"
--restart=OnFailure:如果 pod 以非零退出代码退出,则会重新启动 pod,这可能会导致意外重启,如果容器退出得太快,则会导致 CrashLoopBackOff。--restart=Never:这可防止 pod 重新启动,使其成功完成并显示已完成状态。