Kubernetes 等待 pod/job

Max*_*999 5 kubernetes

推送后,我想创建一个 kaniko 构建作业,它目前可以工作,但在作业完成后,它显示:

kaniko-5jbhf                  0/1     Completed   0          9m13s
Run Code Online (Sandbox Code Playgroud)

然而,当我运行以下命令时,它只是无限期地暂停:

kubectl wait --timeout=-1s --for=condition=Completed pod/kaniko
Run Code Online (Sandbox Code Playgroud)

我的问题可以概括为两部分:1)。我如何等待 Pod/作业完成?2)。作业完成后如何删除?

我已经尝试过 ttlSecondsAfterFinished 但在集群中启用功能门是有问题的,并且没有如何执行此操作的示例。

小智 5

为了wait评估资源的状态,您需要正确识别它。对于第二个片段,您需要提供pod id而不是作业名称:kubectl wait --timeout=-1s --for=condition=Completed pod/kaniko-5jbhf。但是,将作业本身称为 的语法似乎是正确的job/kaniko

供进一步参考wait

现在,对于Job删除,如果您不想使用功能门,我认为您可以以编程方式访问 API来定位并删除完成的文件Jobs,或者使它们依赖于级联删除它们的父对象。具体来说Jobs,只有CronJobs. 缺点是它们CronJobs是按时间安排的对象,这意味着您需要开始基于时间的对象进行设计。

考虑到按照设计,Jobs它们应该在完成后保留下来,以保存与处理数据时发生的事情相关的数据。此外,从v1.12开始,它们还被设计为删除自身,这意味着启用这些功能门可能是实现您想要的最直接的方法。