首页
/ Kueue对象保留策略配置指南

Kueue对象保留策略配置指南

2025-07-08 21:51:03作者:胡唯隽

Kueue作为Kubernetes的作业队列系统,提供了对象保留策略(Object Retention Policies)功能,允许管理员精细控制已完成作业相关资源的保留行为。本文将深入解析该功能的实现原理、典型应用场景及配置方法。

核心概念

对象保留策略定义了作业完成后其关联Kubernetes资源(如Pod、Job等)的自动清理规则。通过该机制可实现:

  • 避免集群资源因残留对象积累而耗尽
  • 满足不同业务场景对作业历史的保留需求
  • 平衡存储成本与审计追溯需求

策略配置详解

基础配置结构

在ClusterQueue资源中通过objectRetentionPolicies字段声明策略,支持以下维度配置:

apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
  name: research-queue
spec:
  objectRetentionPolicies:
    - conditions:
        - status: Completed
        - status: Failed
      retainObjects:
        expiredAfter: 720h # 保留30天
        maxCount: 1000    # 最多保留1000个对象

条件匹配规则

支持基于作业状态的条件筛选:

  • Completed:成功完成的作业
  • Failed:执行失败的作业
  • Pending:排队中的作业(特殊场景使用)

保留控制参数

  1. 时间维度控制

    • expiredAfter:设置对象存活时长(如24h、720h)
    • 支持纳秒级精度(如300s、1.5h)
  2. 数量维度控制

    • maxCount:限制同类型对象最大保留数量
    • 采用LRU(最近最少使用)算法进行淘汰

典型配置模式

生产环境推荐配置

objectRetentionPolicies:
  - conditions: [Completed]
    retainObjects:
      expiredAfter: 168h  # 成功作业保留7天
      maxCount: 500
  - conditions: [Failed]
    retainObjects:
      expiredAfter: 720h  # 失败作业保留30天
      maxCount: 200

调试环境配置

objectRetentionPolicies:
  - conditions: [Completed, Failed]
    retainObjects:
      expiredAfter: 0h  # 立即清理

实现原理

Kueue控制器通过以下机制实现策略:

  1. 监听Job状态变化事件
  2. 匹配ClusterQueue中定义的策略规则
  3. 维护最后访问时间戳注解(kueue.x-k8s.io/last-access-time)
  4. 定时执行清理任务(默认5分钟间隔)

最佳实践

  1. 分级配置策略

    • 核心业务队列设置较长保留期
    • 测试队列采用短保留策略
  2. 监控建议

    • 监控kueue_retention_operations_total指标
    • 设置StorageObject剩余配额告警
  3. 特殊场景处理

    • 关键故障作业可添加"kueue.x-k8s.io/keep-alive"注解临时豁免清理
    • 批量作业建议配合TTLAfterFinished使用

注意事项

  1. 策略变更不会影响已标记删除的对象
  2. 系统资源不足时可能提前触发清理
  3. 与Kubernetes原生TTL控制器共存时,以最早触发的策略为准
登录后查看全文
热门项目推荐
相关项目推荐