当前位置: 首页 > 知识库问答 >
问题:

kubernetes如何自动删除已完成的作业?

吕德惠
2023-03-14

我无法自动删除由CronJob启动的已完成作业。正如我在此处和此处的QA中以及在官方文档中所阅读的,这可以通过建立作业历史限制< code > . spec . successfuljobshistorylimit 和< code > . spec . failed jobshistorylimit 来完成。我做过,两种情况下都成立为1。但是我的群集保存了不止一个已完成的作业,事实上,它保存的数据超过了默认值,即3个成功的作业和1个失败的作业。

我当前的CronJob配置是

 apiVersion: batch/v1beta1
 kind: CronJob
 metadata:
    name: some-name-cron
 spec:
   schedule: "00 05 1/1 * ?"
   successfulJobsHistoryLimit: 1
   failedJobsHistoryLimit: 1
   jobTemplate:
     spec: ...

我的版本是: - 客户端版本: 客户端版本: 版本。信息{主要:“1”, 次要:“9”, - 服务器版本: 服务器版本: 版本.信息{大调:“1”, 小调:“8”,

那么,我做错了什么?

我已经附加了一个图像与k8s仪表板。

共有1个答案

束新
2023-03-14

您可以使用作业历史记录限制successfulJobsHistoryLimit和failedJobsHitoryLimit来设置应保留多少已完成和失败的作业。

您可以在 Kubernetes 文档中查看更多详细信息:

库伯内特斯-Cronjob:工作历史限制

 类似资料:
  • 有没有一种方法,自动删除已完成的作业除了使一个Cron作业清理已完成的作业? K8s 作业文档指出,已完成作业的预期行为是让它们保持已完成状态,直到手动删除。因为我每天通过 CronJobs 运行数千个作业,我不想保留已完成的作业。

  • 我正在运行一个Kubernetes的工作,并试图在它完成几个小时后查看它的日志。但是,当我执行时,没有列出pod(返回时只是),而当我执行时,该作业的pod不在那里。如何在已完成的作业中配置删除pod的操作,以及如何更改该操作以使pod保持更长的时间以便读取其日志?

  • 我正在尝试使用golang-kubernetes客户端go-lib根据作业的状态筛选完成的作业。 我已经检查了其他答案,解释了如何使用kubectl获取作业,如下所示: 但我不知道如何将jsonpath输出“转化”为过滤器或列表选项 如果我按状态阶段和标签搜索pod,我会这样做: 但是,如果我要实现jsonpath 这将遍历所有作业,并检查状态下的succeeded键是否等于1。适用于所有工作。

  • 或是否有办法在完成后完全删除自身? 我希望这样,当我< code > kubectl get jobs/deployments/pods 时,它们不会在完成后出现(容器退出)。 我想到的一种可能的方法是调用,但我不确定这是否安全。

  • 我们在晚上安排的cron作业正确启动,但映像本身的运行时间比计划的晚得多。我们预计拉取映像或从集群请求资源时会出现问题。通常我可以在输出的事件部分中看到此类错误。在本节中,我可以看到诸如等事件。但是作业完成后,不再显示任何事件。 是否可以查看已完成作业的这些事件? 或者有没有另一种方法来调查这样的问题?

  • 我使用spring Boot2、jpa和Hibernate。Db是后置,我尝试删除一个带有子级的对象 如果我删除了Samplings,Samplings、testsamplings和Compressions也应该被删除。 从sample_letter=?的示例中删除和sampling_id=?和sampling_year=? 2018-10-03 22:21:05.832错误14511--[nio