在kubernetes中将作业的状态手动更改为成功

在kubernetes中将作业的状态手动更改为成功,kubernetes,kubernetes-jobs,Kubernetes,Kubernetes Jobs,对于某些疑难解答,我需要手动将正在运行的作业的状态从活动更改为成功,以使其完成。作业本身是一个无限循环,无法完成。无法使用删除作业的选项,因为它将作业置于失败状态 更新:作业实际上没有失败,而是卡住了,因此我将其删除,使其进入失败状态。此外,无法更改作业的代码(它不是bash脚本) 谢谢在我看来,你对治疗问题的症状比对其背后的实际原因更感兴趣 这是为了快速排除故障,我不想停止其余部分 为该作业的状态添加旁路 我认为更快的方法是确保你的其他工作在这一点上不那么可靠,而不是强迫Kubernetes将

对于某些疑难解答,我需要手动将正在运行的作业的状态从
活动
更改为
成功
,以使其完成。作业本身是一个无限循环,无法完成。无法使用删除作业的选项,因为它将作业置于失败状态

更新:作业实际上没有失败,而是卡住了,因此我将其删除,使其进入失败状态。此外,无法更改作业的代码(它不是bash脚本)


谢谢

在我看来,你对治疗问题的症状比对其背后的实际原因更感兴趣

这是为了快速排除故障,我不想停止其余部分 为该作业的状态添加旁路

我认为更快的方法是确保你的其他工作在这一点上不那么可靠,而不是强迫Kubernetes将这项工作/Pod标记为成功

我最接近您的目标是使用
kube代理直接
curl
api服务器。但是,该解决方案只有在作业首先失败的情况下才有效,不幸的是,它不能与正在运行的pod一起工作

在本例中,我使用了状态为1的作业:

容器:
-姓名:job
图片:busybox
args:
-/bin/sh
--c
-日期;呼应睡眠。。。。;睡眠5s;出口1;
然后运行
kubectl proxy

➜  ~ kubectl代理--端口=8080&
[1] 18372
➜  ~ 在127.0.0.1:8080开始发球
并将状态发布到api服务器:

curl localhost:8080/api/batch/v1/namespace/default/jobs/job3/status-XPATCH-H“Accept:application/json“-H”内容类型:application/strategic merge patch+json“-d'{“status”:{“successed”:1}”
],
“开始时间”:“2021-01-28T14:02:31Z”,
"成功":一,,
“失败”:1
}
}%
如果然后检查作业状态,我可以看到它被标记为已完成

➜  ~ 找工作
姓名完成期限年龄
作业3 1/1 45s 45s
另外,我尝试通过这种方式将作业或pod的状态设置为成功/完成,但这是不可能的。状态暂时更改,然后
控制器管理器
将状态恢复为运行。也许这个状态已更改的小
窗口可能是您想要的,它将允许您的其他工作继续进行。我只是假设,因为我不知道细节


有关如何以这种方式访问API的更多信息,请查看文档。

这是为了什么?您能够更改作业执行的代码吗?如果是,您在那里使用什么语言?谢谢。我不知道如何更改正在运行的pod中的代码。作业运行Java应用程序。为什么需要使其成功?这是某种管道的一部分吗?其他工作取决于它。成功的话,剩下的就可以继续了,否则如果我干掉这项工作,他们就会停止。这是为了快速排除故障,我不想停止其他操作以添加此作业状态的旁路。我会临时将shell命令
| | exit 0
附加到作业容器的入口点,以强制作业报告成功,即使其主命令失败。谢谢。我同意这不是最好的办法。