Kubernetes pod 标记为"已完成",尽管退出代码为"255"



情况:我有一个经常失败的CronJob(目前这是意料之中的(。由于执行作业的容器具有挎斗,因此容器之间的依赖关系通过 bash 脚本和/etc/liveness文件夹中的常见emptyDir挂载来表示:

spec:
containers:
- args:
- -c
- set -x;
...
./process; # execute the main process
rc=$?;
rm /etc/liveness; # clean-up
exit $rc;
command:
- /bin/bash

问题:在作业失败的情况下,我在日志中看到以下内容:

+ rc=255
+ rm /etc/liveness
+ exit 255

retryPolicy设置为never时,发生故障的 Pod 将进入Completed状态,这具有误导性:

scheduler-1594015200-wl9xc   0/2     Completed     0          24m

Pod 的状态字段是一个 PodStatus 对象,它有一个阶段字段。

参考: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase

状态和阶段不同。所以我了解到,上面发生的事情是我的 pod 最终处于状态Completed和阶段Failed

根据官方文档,

作业创建一个或多个 Pod,并确保指定数量的 它们成功终止

容器在以下情况下进入终止状态

它已成功完成执行或某些失败时 原因。

因此,如果将重试策略设置为从不,就会发生这种情况。

最新更新