gitea-runner: el janitor deja el uso del volumen en su log

Tras el desalojo del 2026-08-12 no quedaba nada que mirar: el emptyDir
muere con el pod, así que la causa hubo que deducirla por descarte.

Ahora el janitor mide /dind (montado en solo lectura) antes y después de
cada barrido y lo escribe en su log, cada 6h. La próxima vez habrá curva
de crecimiento medida en vez de conjeturas.

No se usa Prometheus porque no puede verlo: kubelet_volume_stats_* solo
emite series para PVCs y container_fs_usage_bytes viene vacío en k3s.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-12 20:17:09 +00:00
co-authored by Claude Opus 5
parent 472bb6e5b9
commit e6ba49a1af
+14 -1
View File
@@ -109,11 +109,20 @@ spec:
# anterior (1,5G) queda colgada y nadie la borra. # anterior (1,5G) queda colgada y nadie la borra.
# prune SIN -a a propósito: borra solo las dangling, jamás una imagen con tag, # prune SIN -a a propósito: borra solo las dangling, jamás una imagen con tag,
# así que no vacía la caché de act ni la de buildkit y los builds no se frenan. # así que no vacía la caché de act ni la de buildkit y los builds no se frenan.
# Además deja el uso del volumen en su propio log cada vuelta. El emptyDir
# muere con el pod, así que tras un desalojo no queda nada que inspeccionar:
# el 2026-08-12 hubo que deducir la causa por descarte. Con esto, la próxima
# vez `kubectl logs -c janitor` da la curva de crecimiento ya medida.
# Prometheus no vale para esto: kubelet_volume_stats_* solo cubre PVCs.
- args: - args:
- | - |
sleep 30
while true; do while true; do
antes=$(du -sm /dind 2>/dev/null | cut -f1)
docker image prune -f >/dev/null 2>&1 || true
ahora=$(du -sm /dind 2>/dev/null | cut -f1)
echo "[janitor] $(date -Iseconds) dind ${ahora}MB de 10240MB (antes del barrido ${antes}MB)"
sleep 21600 sleep 21600
docker image prune -f || true
done done
command: command:
- /bin/sh - /bin/sh
@@ -131,6 +140,10 @@ spec:
requests: requests:
cpu: 10m cpu: 10m
memory: 32Mi memory: 32Mi
volumeMounts:
- mountPath: /dind
name: dind-storage
readOnly: true
dnsPolicy: ClusterFirst dnsPolicy: ClusterFirst
nodeSelector: nodeSelector:
kubernetes.io/hostname: chemavx-k8 kubernetes.io/hostname: chemavx-k8