2

我正在运行 K8S 作业,带有以下标志:

apiVersion: batch/v1
kind: Job
metadata:
  name: my-EP
spec:
  template:
    metadata:
      labels:
        app: EP
    spec:
      restartPolicy: "Never"
      containers:
      - name: EP
        image: myImage

作业开始,运行我的脚本,该脚本运行一些向我发送电子邮件的应用程序,然后终止。应用程序将退出代码返回给 bash 脚本。当我运行命令时:kubectl get pods,我得到以下信息:

NAME               READY   STATUS      RESTARTS   AGE
my-EP-94rh8   0/1     Completed   0          2m2s

有时会出现问题,网络未连接或没有可用的许可证。我希望 pod 用户可以看到它。我的问题是,当我运行上面的 get pods 命令时,我可以传播脚本退出代码吗?IE 而不是“已完成”状态,我想查看我的应用程序退出代码 - 0、1、2、3.... 或者也许有办法在描述命令中的 Pod 状态中查看它?目前我看到:

Pods Statuses:  0 Running / 1 Succeeded / 0 Failed

这可能吗?

4

1 回答 1

2

k8s 作业上的非零退出代码将进入Failedpod 状态。确实没有办法让您显示退出代码,kubectl get pods但您可以输出 pod 状态,-ojson然后通过管道将其用于jq查找退出代码。这篇文章中的以下内容可能会起作用

 kubectl get pod pod_name -c container_name-n namespace -ojson | jq .status.containerStatuses[].state.terminated.exitCode

或者这个,items[]在 json

kubectl get pods -ojson | jq .items[].status.containerStatuses[].state.terminated.exitCode

或者,u/blaimi如前所述,您可以在没有的情况下执行此操作jq,如下所示:

kubectl get pod pod_name -o jsonpath --template='{.status.containerStatuses[*].state.terminated.exitCode}
于 2021-07-17T19:55:41.450 回答