我遇到这样的情况:我运行Kubernetes Job,然后想要删除作业完成时Job的容器运行的pod。 Kubernetes documentation says用户有责任删除广告连播。
但是,我的目标是通过旋转一个大喇叭形吊舱来运行CPU密集型作业,让作业运行,然后在完成作业时,自动核对吊舱。我的想法是,当创收工作运行时,支付昂贵的资源密集型吊舱是值得的。一旦工作结束,收入流就会结束,我需要削减开支,从而使收购中心成为可能。
我正在考虑让我的代码在作业容器中在程序完成时向订阅者发送的发布者发送消息。订阅者知道如何运行命令kubectl delete jobs/myContainer
来核对pod。
但是,也许有更好的方法。因此,我问。
提前致谢。
答案 0 :(得分:2)
为什么你需要删除pod?如果作业成功完成(退出代码0),那么pod将完成,它将不再使用cpu / memory resurces,并且应该在需要时进行垃圾收集。
答案 1 :(得分:0)
有一个新的API,可以在完成作业和所有相关元素后删除作业。 TTLAfterFinished。
您可以在作业的.spec.ttlSecondsAfterFinished
属性中定义它。清理将在作业完成或失败后X
秒进行。
从2019年3月16日开始,此API处于Alpha版本,版本为1.12,并且只能在启用了Alpha功能的情况下使用。