kubernetes:Cronjobs属性failedJobsHistoryLimit不生效,不能自动清理状态为Error的Pod

简介: kubernetes:Cronjobs属性failedJobsHistoryLimit不生效,不能自动清理状态为Error的Pod

Cronjobs属性failedJobsHistoryLimit不生效


问题现象

在 《Kubernetes: Job 和 CronJob 的实现原理》一文中,我们提到cron中有如下属性可以设置任务保留个数

  • (1.8版本后).spec.successfulJobsHistoryLimit.spec.failedJobsHistoryLimit是可选的。 这两个域声明了有多少执行完成和失败的任务会被保留。 默认设置为3和1。限制设置为0代表相应类型的任务完成后不会保留。
  • 特别注意:1.8版本之前,是保留所有的历史job
  • 但是,当我们设置Cronjobs属性failedJobsHistoryLimit为2(默认为1),他并没有自动清理状态为Error的Pod,
  • 错误pod的增多,导致不停占用我们node节点的cpu和memory资源,甚至造成资源耗尽。


问题解决

在job中添加如下两个属性:

  • activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试
  • backoffLimit 就是来保证一个 Job 到底能重试多少次。Job 在运行的时候不可能去无限的重试,所以我们需要一个参数来控制重试的次数。

注意:backoffLimit,默认是6。如果需要修改backoffLimit值,同时需要设置restartPolicy为Never,如果设置restartPolicy为OnFailure,当job失败时达到backoffLimit的重试次数,就会停止job运行。

  • restartPolicy,在 Job 里面我们可以设置 Never、OnFailure、Always 这三种重试策略。在希望 Job 需要重新运行的时候,我们可以用 Never;希望在失败的时候再运行,再重试可以用 OnFailure;或者不论什么情况下都重新运行时 Alway


参考链接:

https://kubernetes.io/zh/docs/tasks/job/automated-tasks-with-cron-jobs/

https://github.com/kubernetes/kubernetes/issues/53331

https://github.com/kubernetes/kubernetes/issues/52390

 



相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
前端开发 编解码 数据格式
浅谈响应式编程在企业级前端应用 UI 开发中的实践
浅谈响应式编程在企业级前端应用 UI 开发中的实践
24 0
浅谈响应式编程在企业级前端应用 UI 开发中的实践
|
1月前
|
Kubernetes 应用服务中间件 nginx
提升K8S故障排除效率:详解Pod内抓包的高效策略!
提升K8S故障排除效率:详解Pod内抓包的高效策略!
40 0
|
2天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes详解(六)——Pod对象部署和应用
在Kubernetes系列中,本文聚焦Pod对象的部署和管理。首先,通过`kubectl run`命令创建Pod,如`kubectl run pod-test --image=nginx:1.12 --port=80 --replicas=1`。接着,使用`kubectl get deployment`或`kubectl get pods`查看Pod信息,添加`-o wide`参数获取详细详情。然后,利用Pod的IP地址进行访问。最后,用`kubectl delete pods [Pod名]`删除Pod,但因Controller控制器,删除后Pod可能自动重建。了解更多细节,请参阅原文链接。
9 5
|
11天前
|
Kubernetes Perl 容器
在 Kubernetes 中重启 pod 的 3 种方法
【4月更文挑战第25天】
31 1
在 Kubernetes 中重启 pod 的 3 种方法
|
13天前
|
Kubernetes 网络协议 调度
kubernetes最小调度单元pod详解(二)
kubernetes最小调度单元pod详解(二)
|
13天前
|
Kubernetes 应用服务中间件 调度
kubernetes最小调度单元pod详解(一)
kubernetes最小调度单元pod详解(一)
|
29天前
|
Kubernetes 固态存储 调度
Kubernetes节点亲和性分配Pod
Kubernetes节点亲和性分配Pod
33 0
Kubernetes节点亲和性分配Pod
|
29天前
|
存储 Kubernetes 调度
Kubernetes Pod生命周期
Kubernetes Pod生命周期
32 0
Kubernetes Pod生命周期
|
29天前
|
存储 Kubernetes 应用服务中间件
Kubernetes Pod
Kubernetes Pod
85 0
Kubernetes Pod
|
1月前
|
存储 Kubernetes 调度
kubernetes核心技术之Pod知识总结
【4月更文挑战第2天】kubernetes核心技术之Pod知识总结
56 0