From 29d35473bdb29e6c3c90644199bcb4a418003189 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 3 Sep 2026 17:34:31 +0000 Subject: [PATCH 1/2] linode: ephemeral StorageClass uses Delete reclaim, not Retain Follow-up to #1311. The tagged StorageClass kept the LKE default's Retain reclaim policy, so on a live cluster every churned/deleted PVC (StatefulSet reschedule, operator recreation) leaves its Block Storage volume behind as a Released PV that bills until the cluster is torn down. Observed on a live HA cluster: 35 of 54 PVs Released, 830 GB parked. Flip the ephemeral cluster's StorageClass to reclaimPolicy: Delete so a deleted PVC frees its volume immediately while the CSI controller is alive. The tag-based sweep still reaps whatever survives an abrupt cluster-delete (volumes are tagged at birth via volumeTags); Delete only removes the within-life Released buildup. The StorageClass name is unchanged so charts referencing it still resolve. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01DBhvZuEUQU8ym347Xat4Yy --- .../linode-ha-provisioning/scripts/create-lke-pmm-ha.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh b/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh index 28c001110..19c9f4cb5 100755 --- a/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh +++ b/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh @@ -134,6 +134,9 @@ kubectl get nodes # --- storage class: tag every CSI volume at birth ---------------------------- # LKE's default SC has no volumeTags and a StorageClass's parameters are immutable, # so its volumes are born untagged and prune-lke-orphans.sh can never attribute them. +# Also flip reclaimPolicy to Delete (the default is Retain): on a throwaway cluster a +# churned/deleted PVC should free its volume immediately, not leave a Released PV +# billing until teardown. The name is kept so charts that reference it still resolve. kubectl delete storageclass linode-block-storage-retain --ignore-not-found kubectl apply -f - < Date: Thu, 3 Sep 2026 17:38:30 +0000 Subject: [PATCH 2/2] linode: trim SC comment to the -retain/Delete naming invariant (review) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01DBhvZuEUQU8ym347Xat4Yy --- .../linode-ha-provisioning/scripts/create-lke-pmm-ha.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh b/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh index 19c9f4cb5..515191b61 100755 --- a/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh +++ b/.claude/skills/linode-ha-provisioning/scripts/create-lke-pmm-ha.sh @@ -134,9 +134,8 @@ kubectl get nodes # --- storage class: tag every CSI volume at birth ---------------------------- # LKE's default SC has no volumeTags and a StorageClass's parameters are immutable, # so its volumes are born untagged and prune-lke-orphans.sh can never attribute them. -# Also flip reclaimPolicy to Delete (the default is Retain): on a throwaway cluster a -# churned/deleted PVC should free its volume immediately, not leave a Released PV -# billing until teardown. The name is kept so charts that reference it still resolve. +# The name stays LKE's `-retain` so charts and existing PVCs still resolve it, even +# though it now reclaims Delete: a churned PVC must free its volume mid-run. kubectl delete storageclass linode-block-storage-retain --ignore-not-found kubectl apply -f - <