k8s 对已完成job自动清理

job在处理完一个任务以后,状态会变成Completed,job在状态为Completed的时候默认不会自动清理的,还会继续占用系统资源。

TTL-after-finished控制器

kubernetes中有专门的控制器可以自动清理已完成的job,就是TTL-after-finished控制器。
TTL-after-finished控制器供了一种 TTL 机制来限制已完成执行的 Job 对象的生命期。
TTL-after-finished 控制器只支持 Job,可以通过指定job的.spec.ttlSecondsAfterFinished 字段来自动清理已结束的 Job(Complete 或 Failed)。可以设置指定的时间,在指定的时间完成后的TTL 秒内被清理。一旦 Job 的状态条件发生变化表明该 Job 是 Complete 或 Failed,计时器就会启动;一旦 TTL 已过期,该 Job 就能被级联删除。当 TTL 控制器清理作业时,它将做级联删除操作,即删除 Job 的同时也删除其依赖对象。

开启TTLAfterFinished

TTLAfterFinished默认是关闭的,需要手动开启,找到安装的kubernetes的kube-apiserver.yaml和kube-controller-manager.yaml,增加开启TTLAfterFinished的设置。多个feature-gates之间使用逗号分割。
kubernetes-apiserver开启TTLAfterFinished
kube-apiserver.yaml
k8s 对已完成job自动清理_第1张图片

kube-controller-manager开启TTLAfterFinished
kube-controller-manager.yaml
k8s 对已完成job自动清理_第2张图片

修改完kuber-apiserver和kube-controller-manager的yaml文件以后,需要重启kubelet服务,就可以生效了。

systemctl restart kubelet

k8s 对已完成job自动清理_第3张图片

我这边ttlSecondsAfterFinished配置的时间是60秒,60秒后这个job就被自动清理了。

你可能感兴趣的:(云原生,kubernetes,容器,云原生)