You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Python脚本时遇Exit Code 0的CrashLoopBackOff问题

Python脚本在Kubernetes中执行后触发CrashLoopBackOff的解决办法

问题背景

我有个极简Python脚本,就一行打印语句:

print("Completed")

用Docker打包后,通过Deployment部署到Kubernetes,结果脚本正常执行完(退出码0),Pod却不停重启,最后进入CrashLoopBackOff状态,而不是停在Completed状态。

用到的配置文件

Dockerfile

FROM python:3.9   
WORKDIR /app  
COPY Test.py /app/Test.py   
RUN python3 -m pip install --upgrade pip    
ENTRYPOINT ["python"]   
CMD ["Test.py"]   

原Deployment YAML

apiVersion: apps/v1   
kind: Deployment   
metadata:  
  name: test-01   
spec:   
  replicas: 1   
  selector:   
    matchLabels:   
      bb: web   
  template:   
    metadata:   
      labels:   
        bb: web   
    spec:   
      containers:   
      - name: test-01   
        image: testrepo/testingpy:latest   

实际现象

Pod启动后正常执行脚本,输出Completed后退出,退出码是0(正常完成),但Kubernetes会反复重启它,最终Pod状态变成CrashLoopBackOff:

State:          Waiting
  Reason:       CrashLoopBackOff
Last State:     Terminated
  Reason:       Completed
  Exit Code:    0

查看日志只有脚本的打印内容:

kubectl logs etl-patient-c5d44fcc-scc9s --all-containers   
Completed

试过没用的操作

  • 在Deployment的YAML里加restartPolicy: OnFailure,部署直接报错
  • 换了几个Python版本,结果一模一样

注:YAML实际缩进没问题,只是显示的时候格式乱了。

解决办法

问题根源

Deployment是用来部署长期运行的服务的,它的Pod模板默认restartPolicy: Always——不管容器是正常退出还是异常退出,只要终止了就会重启。你的脚本是一次性任务,执行完就退出,自然会被反复重启,次数多了就触发CrashLoopBackOff。

正确的资源选择:用Job代替Deployment

Kubernetes里的Job资源就是专门用来跑一次性任务的,任务完成后Pod会保持Completed状态,不会被重启。

示例Job YAML

apiVersion: batch/v1
kind: Job
metadata:
  name: test-job-01
spec:
  template:
    metadata:
      labels:
        bb: web
    spec:
      containers:
      - name: test-01
        image: testrepo/testingpy:latest
      restartPolicy: OnFailure  # 只在容器异常退出(非0码)时重启,也可以设为Never
  backoffLimit: 4  # 失败后的重试次数,按需调整

为什么加restartPolicy到Deployment会报错?

Deployment属于长期运行的负载类型,Kubernetes强制要求它的Pod模板restartPolicy必须是Always,不允许改成OnFailure或Never,这就是你之前部署报错的原因。只有Job、CronJob这类批处理资源才能设置其他重启策略。


内容的提问来源于stack exchange,提问作者Adithya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:43:13