gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:45:26 26 4
gpt4 key购买 nike

对于一些故障排除,我需要手动将正在运行的作业的状态从 active 更改为 successful 以使其完成。作业本身是一个无法完成的无限循环。无法使用删除作业的选项,因为它会使作业处于失败状态。

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

谢谢

最佳答案

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

This is for quick troubleshooting where I do not want to stop the restto add a bypass for the status of this job.

我认为更快的方法是实际确保您的其他作业不太依赖于此作业,而不是试图强制 Kubernetes 将此作业/Pod 标记为成功。

我能达到您的目标的最接近的事情是直接使用 kube-proxy curl api-server。但该解决方案仅在作业首先失败时才有效,不幸的是它不适用于正在运行的 pod。

对于这个例子,我使用了以状态 1 退出的作业:

      containers:
- name: job
image: busybox
args:
- /bin/sh
- -c
- date; echo sleeping....; sleep 5s; exit 1;

然后运行kubectl-proxy:

➜  ~ kubectl proxy --port=8080 &
[1] 18372
➜ ~ Starting to serve on 127.0.0.1:8080

并将状态发布到 api-server:

curl localhost:8080/apis/batch/v1/namespaces/default/jobs/job3/status -XPATCH  -H "Accept: application/json" -H "Content-Type: application/strategic-merge-patch+json" -d '{"status": {"succeeded": 1}}'
    ],
"startTime": "2021-01-28T14:02:31Z",
"succeeded": 1,
"failed": 1
}
}%

如果然后检查作业状态,我可以看到它已标记为已完成。

➜  ~ k get jobs
NAME COMPLETIONS DURATION AGE
job3 1/1 45s 45s

附言。我尝试通过这种方式将作业或 Pod 的状态设置为成功/完成,但这是不可能的。状态暂时改变了,然后 controller-manager 将状态恢复为运行。也许这个状态已更改的小 window 可能是您想要的,它会让您的其他工作继续进行。我只是假设这一点,因为我不知道细节。

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

关于kubernetes - 在kubernetes中手动将作业状态更改为成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65816790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com