This is an automated email from the ASF dual-hosted git repository.

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 100deddc34b HDDS-15289. Kubernetes check stuck cleaning up PV/PVC 
(#10281)
100deddc34b is described below

commit 100deddc34bebe9d0714d1542fc5a43710598206
Author: Rishabh Patel <[email protected]>
AuthorDate: Sun May 17 00:00:46 2026 -0700

    HDDS-15289. Kubernetes check stuck cleaning up PV/PVC (#10281)
---
 .../definitions/ozone/definitions/persistence.yaml |  3 +++
 .../examples/ozone-ha/datanode-statefulset.yaml    |  3 +++
 .../k8s/examples/ozone-ha/httpfs-statefulset.yaml  |  3 +++
 .../main/k8s/examples/ozone-ha/om-statefulset.yaml |  3 +++
 .../k8s/examples/ozone-ha/recon-statefulset.yaml   |  3 +++
 .../k8s/examples/ozone-ha/s3g-statefulset.yaml     |  3 +++
 .../k8s/examples/ozone-ha/scm-statefulset.yaml     |  3 +++
 .../k8s/examples/ozone/datanode-statefulset.yaml   |  3 +++
 .../k8s/examples/ozone/httpfs-statefulset.yaml     |  3 +++
 .../main/k8s/examples/ozone/om-statefulset.yaml    |  3 +++
 .../main/k8s/examples/ozone/recon-statefulset.yaml |  3 +++
 .../main/k8s/examples/ozone/s3g-statefulset.yaml   |  3 +++
 .../main/k8s/examples/ozone/scm-statefulset.yaml   |  3 +++
 hadoop-ozone/dist/src/main/k8s/examples/testlib.sh | 31 ++++++++++++++++------
 14 files changed, 62 insertions(+), 8 deletions(-)

diff --git 
a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/persistence.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/persistence.yaml
index 32465b68b51..8d210622ad2 100644
--- 
a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/persistence.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/persistence.yaml
@@ -22,6 +22,9 @@ description: Add real PVC based persistence
   trigger:
     kind: StatefulSet
   value:
+      persistentVolumeClaimRetentionPolicy:
+        whenDeleted: Delete
+        whenScaled: Retain
       volumeClaimTemplates:
       - metadata:
           name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/datanode-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/datanode-statefulset.yaml
index d7599c60d53..3102445ed80 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/datanode-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/datanode-statefulset.yaml
@@ -61,6 +61,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-statefulset.yaml
index 2c076ae8fcd..967c2b1ba2c 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/httpfs-statefulset.yaml
@@ -50,6 +50,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/om-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/om-statefulset.yaml
index 335acfa9f92..da491f2d616 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/om-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/om-statefulset.yaml
@@ -61,6 +61,9 @@ spec:
         - name: data
           mountPath: /data
       volumes: []
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-statefulset.yaml
index 445c2e222d7..6363e7fb931 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/recon-statefulset.yaml
@@ -59,6 +59,9 @@ spec:
         - name: data
           mountPath: /data
       volumes: []
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/s3g-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/s3g-statefulset.yaml
index 1cb4fa23433..1ed0deb3099 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/s3g-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/s3g-statefulset.yaml
@@ -50,6 +50,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/scm-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/scm-statefulset.yaml
index a0be3d58edb..a1dc034d41f 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/scm-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-ha/scm-statefulset.yaml
@@ -80,6 +80,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml
index d7599c60d53..3102445ed80 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml
@@ -61,6 +61,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-statefulset.yaml
index 2c076ae8fcd..967c2b1ba2c 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/httpfs-statefulset.yaml
@@ -50,6 +50,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
index 335acfa9f92..da491f2d616 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
@@ -61,6 +61,9 @@ spec:
         - name: data
           mountPath: /data
       volumes: []
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-statefulset.yaml
index 445c2e222d7..6363e7fb931 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/recon-statefulset.yaml
@@ -59,6 +59,9 @@ spec:
         - name: data
           mountPath: /data
       volumes: []
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml
index 1cb4fa23433..1ed0deb3099 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml
@@ -50,6 +50,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
index 0cbca685248..7505a017d8d 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
@@ -68,6 +68,9 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
+  persistentVolumeClaimRetentionPolicy:
+    whenDeleted: Delete
+    whenScaled: Retain
   volumeClaimTemplates:
   - metadata:
       name: data
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh 
b/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh
index 81fc26f70f5..685300c22c9 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh
+++ b/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh
@@ -90,17 +90,32 @@ pre_run_setup() {
   wait_for_startup
 }
 
+dump_pv_pvc_state() {
+   local -r label="${1:-state}"
+   echo "===== PV/PVC ${label} ====="
+   kubectl get pv,pvc -o wide --all-namespaces 2>&1 || true
+   echo "----- PV finalizers / status -----"
+   kubectl get pv -o 
custom-columns=NAME:.metadata.name,STATUS:.status.phase,CLAIM:.spec.claimRef.name,FINALIZERS:.metadata.finalizers,DELETION:.metadata.deletionTimestamp
 2>&1 || true
+   echo "----- Recent events (last 30) -----"
+   kubectl get events --sort-by=.lastTimestamp --all-namespaces 2>&1 | tail 
-30 || true
+   echo "===== end ${label} ====="
+}
+
 reset_k8s_env() {
    print_phase "Deleting existing k8s resources"
    #reset environment
-   kubectl delete statefulset --all
-   kubectl delete daemonset --all
-   kubectl delete deployment --all
-   kubectl delete service --all
-   kubectl delete configmap --all
-   kubectl delete pod --all
-   kubectl delete pvc --all
-   kubectl delete pv --all
+   local -r DEL_TIMEOUT="${RESET_TIMEOUT:-120s}"
+   dump_pv_pvc_state "before delete"
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found statefulset --all
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found daemonset --all
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found deployment --all
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found service --all
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found configmap --all
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found pod --all
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found pvc --all
+   dump_pv_pvc_state "after pvc delete"
+   kubectl delete --timeout="$DEL_TIMEOUT" --ignore-not-found pv --all
+   dump_pv_pvc_state "after pv delete"
 }
 
 start_k8s_env() {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to