Three local-path PVs stuck Released for ~80 days, their delete helper pod never found, ~7,200 warning events #901
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#901
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on 2026-08-22 while decommissioning the retired
null-dbstack (coilyco-bridge/deploy#677). Filed because it is adjacent, unowned, and I am not fixing it.Observed
Three PersistentVolumes are stuck in
Releasedand their reclaim never completes:Each re-errors continuously from
local-path-provisioner:Roughly 2,400 events apiece, so about 7,200 accumulated warnings. With
deploy#677's orphaned ExternalSecrets now cleared andnull-dbgone, these are the largest remaining source of standing Warning noise on the cluster.Mechanism
local-path-provisionerreclaims a volume by spawning a short-livedhelper-pod-delete-<pv>that wipes the backing directory, then removes the PV. The helper pod is not being found, so the provisioner never gets its completion signal, never deletes the PV, and retries on its backoff forever.Not established from here: whether the helper pod fails to schedule, is created and reaped before the provisioner observes it, or is blocked by something in the
local-path-storageconfig. That distinction is the fix, and it needs provisioner logs, which I did not read.Why it is not merely noise
The claims are dead.
data-forgejo-runner-0and-1belong toforgejo-runner, a StatefulSet that is currently at 0 replicas and has been scaled down since well before the demo lockdown.openclawhas no pods in the cluster at all. So nothing is going to reattach these.Two costs while they sit there:
/var/lib/rancher/k3s/storage/are still occupied. Only ~3 GiB here, so this is not the main disk story, but it is 3 GiB that the cluster believes it has released and has not.VolumeFailedDeleteon a volume someone cares about would land in an event stream already carrying 7,200 identical warnings, which is exactly the condition under which it gets missed.Contrast: the reclaim path does work
Worth recording, because it narrows the cause. The
null-dbPV deleted today (pvc-ae288d3a-..., 5Gi, local-path,Delete) wentBoundtoReleasedto fully removed within about a minute, with noVolumeFailedDeleteand no stuck directory. Verified byget pvreturningNotFoundand by the node's filesystem pressure dropping.So local-path reclaim is healthy in general today. Whatever broke these three was specific to them, or specific to conditions around 79 to 80 days ago. Both remaining claims trace to workloads that were scaled to zero or removed rather than deleted cleanly, which is a plausible shared trigger worth checking first.
Suggested
local-path-provisionerlogs for one of the three PV names to establish why the helper pod is missing rather than guessing between the three candidates above.kubernetes.io/pv-protectionfinalizer is the blunt path and leaves the on-disk directory behind, so the directory wants removing too, in that order.openclawshould still have a namespace at all. It has a PVC claim and no workloads.Related
coilyco-bridge/deploy#677- the orphaned-ExternalSecret sweep this was found alongside, now nearly closedcoilyco-flight-deck/agentic-os#1060- dev-base release blocked with kai-server root at 87% critical. These 3 GiB will not resolve that, but the two share a disk-accounting story and are worth reading togetherCleared.
VolumeFailedDeletehas stopped entirely.What they were
Three PVs, Released for 82 days,
reclaim=Delete, finalizerkubernetes.io/pv-protection:The event count had climbed to 2,624 each by the time I looked, up from the 2,014 in the original title, so this was still actively accumulating.
Verified safe before deleting
data-forgejo-runner-0and-1still exist and are Bound, but to different PVs (pvc-435457c7,pvc-eb193ec4, both 73d). The stuck pair are the older volumes from before the runner StatefulSet was recreated. Nothing references them.openclawnamespace does not exist at all./var/lib/rancher/k3s/storageis0700 rootand atest -daskaireturns a false negative. The scan also reports zero unattributed paths.So this was pure API-object cleanup. No data at risk and no disk to reclaim: the provisioner had been retrying deletes of directories that were already gone, which is why it produced only noise.
What was done
Patched
persistentVolumeReclaimPolicytoRetainfirst, so the provisioner stopped attempting the delete that could never succeed, then deleted the three PV objects.After
Roughly 7,900 warning events per cycle stop being generated. Closing.