Kubernetes v1.16.3版本开启 Job ttlSecondsAfterFinished 自动清理机制

前言

Kubernetes v1.23 之前,Job 在处于 Completed 后,默认是不会被清理的。

完成的 Job 通常不需要留存在系统中。在系统中一直保留它们会给 API 服务器带来额外的压力。

Kubernetes v1.23 之后, TTL 控制器所提供的 TTL 机制。

通过设置 Job 的 .spec.ttlSecondsAfterFinished 字段,可以让该控制器清理掉已结束的资源。

TTL-after-finished 控制器只支持 Job。

复制代码
apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-ttl
spec:
  ttlSecondsAfterFinished: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

Job pi-with-ttl 在结束 100 秒之后,可以成为被自动删除的对象。

如果该字段设置为 0,Job 在结束之后立即成为可被自动删除的对象。 如果该字段没有设置,Job 不会在结束之后被 TTL 控制器自动清除。

https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/ttlafterfinished/

https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/#clean-up-finished-jobs-automatically

配置开启alpha版本,TTLAfterFinished特性

在安装 Kubernetes 的机器上,配置文件一般默认在 /etc/kubernetes

如果存在多个 feature-gates 开启特性,则用逗号分隔。

修改 /etc/kubernetes/manifests/kube-apiserver.yaml 文件,新增

复制代码
- --feature-gates=TTLAfterFinished=true

修改 /etc/kubernetes/manifests/kube-controller-manager.yaml 文件,新增

复制代码
- --feature-gates=TTLAfterFinished=true

重启 kubelet

复制代码
systemctl restart kubelet

修改成功后,重启 kubelet 即可生效,自动清除 Job。

posted @   牛奔  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2021-11-18 gin解决CORS跨域问题
2021-11-18 go语言中iota和左移<< 右移<<
2021-11-18 gin Http请求Body和Header的获取 request post form Query header
2019-11-18 RabbitMQ+PHP教程
点击右上角即可分享
微信分享提示