Files
2026-07-16 14:17:26 +02:00

3.2 KiB
Raw Permalink Blame History

R1.2.8 任务报告

结论

NC01 的 Tekton 历史对象留存已从单一 devops-infra 策略收敛为 YAML-first 的五命名空间策略集,覆盖 devops-infraagentrun-cihwlab-cipikaoa-ciselfmedia-ci。策略仅删除已终态且超过窗口的 PipelineRun 根对象,并通过 ownerReferences 的 Background 级联回收从属 TaskRun、Pod、Secret 与 PVC;活跃对象、每组最新对象、未到龄对象、未知分组和时间戳解析失败对象均受保护。实现已由 PR #2340 合并,运行面配置与仓库同源且无漂移。

设计与实现

  • config/unidesk-cli.yamldefaults + policies 表达公共参数和五个独立策略;各策略使用长期稳定的 repository、node、lane 等 owner 标签分组,不使用含提交号的易变标签。
  • gc remote <provider> retention plan/runpolicy install/status 和 systemd timer 共用同一个解析器、筛选器与每策略删除上限。
  • 自动任务每 15 分钟运行;--limit 仍受 owning YAML 上限约束,不引入隐藏默认值。
  • 只删除 PipelineRun 根对象,不直接枚举删除从属对象;由 Kubernetes 所有权关系完成级联。
  • 未触碰 Webterm、PK01,未运行 Vitest,未人工触发 PaC、Tekton 或 Argo 交付链。

验证实证

合并前真实 dry-run 扫描 459 个 PipelineRun,其中 451 个终态、372 个可删除;同时保护 8 个活跃对象、56 个未到龄对象和 23 个每组最新对象,未知分组与无效时间戳均为 0。

受控首轮运行任务 nc01-kubernetes-retention-1784203383-4051025 成功删除 373 个根对象,失败批次为 0;执行范围内 PipelineRun 从 465 降至 93。级联稳定后,全 Kubernetes 对象概览由约 450 个 PipelineRun、699 个 TaskRun、673 个 Pod、545 个 Secret,下降到 99、214、294、248。

14:15 的首个自然 systemd 周期再次按同一策略自动删除 9 个到龄 PipelineRunpolicyCount=5failedCount=0、服务结果为 success,下一轮已正常排期。随后全局 PipelineRun 为 90 个;五个目标命名空间分别为 devops-infra=53agentrun-ci=5hwlab-ci=12pikaoa-ci=14selfmedia-ci=6

运行面 policy status 显示 desired/installed 配置与 runner 的 SHA-256 完全一致,policySync.inSync=true,无 drift。

内存结果

清理执行高峰期间 k3s 仍在处理级联和活跃 CI,对象下降没有立即转化为物理内存回收,因此未把瞬时结果误报为收益。自然定时轮完成且负载趋稳后:

  • /proc/meminfo 的真实 MemAvailable=4,674,322,432 字节,约 4.35 GiB,swap 明确不计入,已超过 4 GiB WebProbe 门槛。
  • k3s-server PSS 约 3.17 GB,较级联高峰约 3.99 GB 回落约 0.82 GB。
  • 内存 PSI full avg60 为 0.08%,目标缺口为 0。
  • swap 仍只是可靠磁盘上的安全垫,不作为物理可用内存或 WebProbe 启动资格。

遗留观察

当前仅观察到 4 个僵尸子进程,分别归属 todo-notehwlab-cloud-web,与此前大规模 Decision Center 泄漏不同,不阻塞本任务。持续留存由 YAML-first 定时策略自动执行;后续若调整窗口、分组或上限,只修改 owning YAML 并走受控安装入口。