K8S 使用 TTL 控制器自动清理完成的 Job Pod
2023-02-18 16:39:38 时间
最近为集群 CI 默认添加了 .spec.ttlSecondsAfterFinished
参数, 以便在 cronjob 和 job 运行完成后自动清理过期 pod 。
但是在 CI 的时候却失败, 报错如下。
spec.jobTemplate.spec.ttlSecondsAfterFinished: Forbidden: disabled by feature-gate
核查资料得知, 在 v1.21 之前, 该开关默认是关闭的。刚好错误集群低于此版本。
Job TTL 控制器
K8S 提供了一个 TTL 控制器, 可以自动在 JOB Complete
或 Failed
之后, 经过一定时间清理 POD。
.spec.ttlSecondsAfterFinished
时间单位为 秒
- 如果值 N 等于0 , 则任务完成后立即清除
- 如果值 N 大于0 , 则任务完成后经过 N 秒
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100 # 100 秒后清理
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
但是需要注意的是, 这个配置项
- 第一次 是在 k8s v1.12 引入的, api 版本为
alpha
。换句话说,v1.12 之前的集群不能使用。 - 在
alpha
阶段, 默认是不开启的。需要通过设置 kube-apiserver 和 kube-controller-manager 中的 feature-gates 参数进行开启。--feature-gates="...,TTLAfterFinished=true"
- 在 k8s v1.21 的时候, api 版本更新为
beta
, 默认开启。如果要关闭, 则需要对应修改 feature-gates 的 TTLAfterFinished 值为false
。
https://v1-18.docs.kubernetes.io/docs/concepts/workloads/controllers/ttlafterfinished/ https://v1-21.docs.kubernetes.io/docs/concepts/workloads/controllers/ttlafterfinished/
相关文章
- 常见算法合集[java源码+持续更新中...]
- 分布式事务(二)Java事务API(JTA)规范
- 北漂不易,逆风前行[给想在北京工作的java同学们诚恳的建议!]
- Java工程师的生活、读书、技术栈
- 十大基础排序算法[java源码+动静双图解析+性能分析]
- 分享两个免费下载Windows系统镜像
- CSRF-跨站请求伪造-相关知识
- 在VMware上安装Metasploitable2
- SSRF-服务器端请求伪造-相关知识
- RCE-远程命令执行和代码执行漏洞-知识
- 文件包含漏洞-知识点
- 包含漏洞-读写文件以及执行命令
- XXE-XML外部实体注入-知识点
- Ninjutsu_v3_08_2020-安全渗透系统安装
- 单兵渗透工具-Yakit-Windows安装使用
- SpringBoot-快速搭建并快速验证是否可用
- Metasploit-模块介绍
- Kali-登录暴力破解器工具-medusa使用
- PS软件下载及安装Photoshop cc 2018下载链接及安装教程(包括2023版本)
- 顺应时代趋势,CSN的安全可控之路