3.2 KiB
R1.2.8 任务报告
结论
NC01 的 Tekton 历史对象留存已从单一 devops-infra 策略收敛为 YAML-first 的五命名空间策略集,覆盖 devops-infra、agentrun-ci、hwlab-ci、pikaoa-ci 与 selfmedia-ci。策略仅删除已终态且超过窗口的 PipelineRun 根对象,并通过 ownerReferences 的 Background 级联回收从属 TaskRun、Pod、Secret 与 PVC;活跃对象、每组最新对象、未到龄对象、未知分组和时间戳解析失败对象均受保护。实现已由 PR #2340 合并,运行面配置与仓库同源且无漂移。
设计与实现
config/unidesk-cli.yaml以defaults + policies表达公共参数和五个独立策略;各策略使用长期稳定的 repository、node、lane 等 owner 标签分组,不使用含提交号的易变标签。gc remote <provider> retention plan/run、policy 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 个到龄 PipelineRun,policyCount=5、failedCount=0、服务结果为 success,下一轮已正常排期。随后全局 PipelineRun 为 90 个;五个目标命名空间分别为 devops-infra=53、agentrun-ci=5、hwlab-ci=12、pikaoa-ci=14、selfmedia-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-note 与 hwlab-cloud-web,与此前大规模 Decision Center 泄漏不同,不阻塞本任务。持续留存由 YAML-first 定时策略自动执行;后续若调整窗口、分组或上限,只修改 owning YAML 并走受控安装入口。