前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S 使用 TTL 控制器自动清理完成的 Job Pod

K8S 使用 TTL 控制器自动清理完成的 Job Pod

作者头像
老麦
发布2022-12-24 09:53:30
1.1K0
发布2022-12-24 09:53:30
举报
文章被收录于专栏:Go与云原生Go与云原生

最近为集群 CI 默认添加了 .spec.ttlSecondsAfterFinished 参数, 以便在 cronjob 和 job 运行完成后自动清理过期 pod 。

但是在 CI 的时候却失败, 报错如下。

代码语言:javascript
复制
spec.jobTemplate.spec.ttlSecondsAfterFinished: Forbidden: disabled by feature-gate

核查资料得知, 在 v1.21 之前, 该开关默认是关闭的。刚好错误集群低于此版本。

Job TTL 控制器

K8S 提供了一个 TTL 控制器, 可以自动在 JOB CompleteFailed 之后, 经过一定时间清理 POD。

.spec.ttlSecondsAfterFinished 时间单位为

  • 如果值 N 等于0 , 则任务完成后立即清除
  • 如果值 N 大于0 , 则任务完成后经过 N
代码语言:javascript
复制
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

但是需要注意的是, 这个配置项

  1. 第一次 是在 k8s v1.12 引入的, api 版本为 alpha。换句话说,v1.12 之前的集群不能使用。
  2. alpha 阶段, 默认是不开启的。需要通过设置 kube-apiserver 和 kube-controller-manager 中的 feature-gates 参数进行开启。--feature-gates="...,TTLAfterFinished=true"
  3. 在 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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Job TTL 控制器
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档