Kubernetes吊舱标记为“已完成”,尽管出口代码为“255”`

Kubernetes吊舱标记为“已完成”,尽管出口代码为“255”`,kubernetes,kubernetes-cronjob,Kubernetes,Kubernetes Cronjob,情况: 我有一份经常失败的工作(目前这是意料之中的)。由于执行作业的容器有一个侧车,因此容器之间的依赖关系通过bash脚本和/etc/liveness文件夹中的emptyDir的公共装载来表示: spec: containers: - args: - -c - set -x; ... ./process; # execute the ma

情况: 我有一份经常失败的工作(目前这是意料之中的)。由于执行作业的容器有一个侧车,因此容器之间的依赖关系通过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,并确保指定数量的POD 它们成功地终止

集装箱何时进入

它已成功完成执行,或在某些时间内失败 原因

因此,如果将retryPolicy设置为never,则会发生这种情况。

根据

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

集装箱何时进入

它已成功完成执行,或在某些时间内失败 原因

因此,如果将retryPolicy设置为“永不”,则会发生这种情况

Pod的状态字段是一个PodStatus对象,它有一个相位字段

参考:

状态和阶段不同。所以我了解到,上面发生的事情是,我的POD最终处于状态
完成
和阶段
失败

Pod的状态字段是一个PodStatus对象,它有一个相位字段

参考:


状态和阶段不同。因此,我了解到,上面发生的事情是,我的播客最终处于状态
已完成
和阶段
失败

,很抱歉,我没有得到你的答案。那么为什么pod状态为
已完成
而不是
失败
?pod失败了。作业已完成。您好@coderanger正如您在
kubectl get pods
命令输出的我的问题中所看到的,pod未
失败
,它已
完成
。另外,从单据中:Description:失败。Pod中的所有容器均已终止,且至少有一个容器因故障而终止。也就是说,容器要么以非零状态退出,要么被系统终止。对不起,我没有得到你的答案。那么为什么pod状态为
已完成
而不是
失败
?pod失败了。作业已完成。您好@coderanger正如您在
kubectl get pods
命令输出的我的问题中所看到的,pod未
失败
,它已
完成
。另外,从单据中:Description:失败。Pod中的所有容器均已终止,且至少有一个容器因故障而终止。也就是说,容器要么以非零状态退出,要么被系统终止。裁判: