2.1 KiB
2.1 KiB
R1.2.1 任务报告
结论
已为 NC01 devops-infra 增加 YAML-first Kubernetes 历史对象留存。手动 retention plan|run|status 与 systemd policy timer 复用 scripts/src/gc-remote-kubernetes-retention.py 的同一个 fail-closed 筛选器;只删除终态、超过保留窗口、分组可识别且不属于每组最新保留数量的 PipelineRun,通过 Background ownerRef 级联回收下游对象。
配置与保护
- 配置真相:
config/unidesk-cli.yaml#gc.remote.targets.NC01.kubernetesObjectRetention与.policyTimer。 - 手动单批上限 500,自动单批上限 100,自动周期每 15 分钟。
- 固定保护活跃、排队、过新、未知分组、时间不可解析、扫描截断和 Table 形状漂移对象。
- 不直接删除 TaskRun、Pod、Secret、Event、PVC/PV 或 runtime workload。
- NC01 policy 仅启用
kubernetes-object-retention,journal、tmp、cache、image 和 PVC 阶段全部关闭。
真实运行证据
- 初始
devops-infra:PipelineRun 1923、TaskRun 1922、Pod 932、Secret 1613。 - 三个异步 job 分别成功删除 500、500、484 个 PipelineRun,全部批次成功。
- 终态 overview:PipelineRun 451、TaskRun 450、Pod 444、Secret 455;剩余对象主要为活跃、24 小时内对象和每组最新保留对象。
- timer
unidesk-devops-infra-retention.timer已loaded/active/waiting,配置、runner 和状态文件均由 YAML 渲染。 - 首次自动轮次
failedCount=0,只由 retention 阶段回收 6 个到龄 PipelineRun,下一轮已自动排期。 - Python
py_compile、git diff --check与bun scripts/cli.ts check --syntax-only通过;未运行 Vitest。
内存判定
memory-distribution只以/proc/meminfo的MemAvailable判定,swap 单独披露。- 清理后
MemAvailable约 2.8 GiB,距离 4 GiB 仍差约 1.25 GiB;WebProbe 不具备启动资格,未启动 Chromium。 - 剩余压力主要来自 k3s 常驻 PSS、Kafka/Tempo/Tekton 控制面和 Decision Center zombie;不得继续扩大为 raw delete、k3s 重启或无证据 reclaim。