kubernetes - 为 Kubernetes CronJob 创建的 Pod 设置保留策略

标签 kubernetes kubernetes-cronjob

我了解 Kubernetes CronJob 创建的 pod 会按照 CronJob 中指定的时间表运行。但是,保留策略似乎是任意的,我看不到可以将失败/成功的 pod 保留一段时间的方法。

最佳答案

我不确定你在这里问的是什么。

CronJob 不会创建 Pod。它创建工作(也管理),这些工作正在创建 pod。
根据 Kubernetes Jobs Documentation如果 Jobs 由更高级别的 Controller 直接管理,例如 CronJobs,则 Jobs 可以根据指定的基于容量的清理策略由 CronJobs 清理。简而言之,在您删除 CronJob 之前,不会删除 Pod 和作业。您将能够从 Pods/Jobs/CronJob 检查日志。只需使用 kubctl 描述

默认情况下,CronJob 保留 3 个 successJob 的历史记录,只有 1 个 failedJob 的历史记录。您可以通过参数更改 CronJob 规范中的此限制:

spec:
  successfulJobsHistoryLimit 10
  failedJobsHistoryLimit 0

0 表示 CronJob 不会保留任何失败作业的历史记录
10 表示 CronJob 将保留 10 个成功作业的历史记录

您将无法从失败的作业中保留 pod,因为当作业失败时,它将重新启动,直到成功或达到规范中给出的 backoffLimit。

您还有其他选择是暂停 CronJob。
kubctl patch cronjob <name_of_cronjob> -p '{"spec:"{"suspend":true}}'

如果 spuspend 的值为 true,则 CronJob 将不会创建任何新作业或 Pod。您将可以访问已完成的 Pod 和作业。

如果以上都没有帮助您,请您提供更多信息,您到底期望什么?
CronJob 规范会有所帮助。

关于kubernetes - 为 Kubernetes CronJob 创建的 Pod 设置保留策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55220477/

相关文章:

nginx - FastAPI文档不适用于Nginx Ingress Controller

kubernetes - [错误 KubeletVersion] : the kubelet version is higher than the control plane version

kubernetes - 使用Kubectl工具时如何添加自定义HTTP header

kubernetes - GKE LimitRange 将默认 cpu 限制为 100m

kubernetes - 使用 Kubernetes CronJob : How to avoid deployments overriding minReplicas 基于时间的扩展

ruby - 除了 ClientIP 之外,还有其他方法可以为 kubernetes 中的 sessionAffinity 提供自定义值吗?

kubernetes - 来自 Kubernetes cronjob 的 grpcurl 调用

kubernetes - 这个 cron 作业有什么问题,它没有运行。如何调试它

cron - 从 Kubernetes Cron 作业调用端点