Repository: apecloud/kubeblocks

Issue:
[BUG] v1.0.1-beta.1, workoad not deleted
version:
```bash
Kubernetes: v1.29.2
KubeBlocks: 1.0.1-beta.1
kbcli: 1.0.0
```

1. create a cluster
2. wait till it is running
3. delete this cluster

```
2025-06-12T13:00:36.469Z	INFO	wait for the workloads to be deleted: map[{workloads.kubeblocks.io/v1, Kind=InstanceSet demo/acmysql-cluster-mysql}:0x4002e96008]	{"controller": "component", "controllerGroup": "apps.kubeblocks.io", "controllerKind": "Component", "Component": {"name":"acmysql-cluster-mysql","namespace":"demo"}, "namespace": "demo", "name": "acmysql-cluster-mysql", "reconcileID": "1885c021-56a9-4798-975d-1d3132f55fbc", "component": {"name":"acmysql-cluster-mysql","namespace":"demo"}}
```
Workload, i.e. instanceset, is not deleted.

By checking resource, we noticed that PODs , PVC, and PV have been deleted. But CLUSTER,CMP,ITS, SECRET and ConfigMap are left.

<img width="1357" alt="Image" src="https://github.com/user-attachments/assets/91e805ae-8516-4883-913a-28721e215a6e" />


For instance, check our regression workflow: https://github.com/apecloud/kubeblocks/actions/runs/15602790397/job/43946747034

Discussion:

Solution patch:
diff --git a/controllers/workloads/instanceset_controller.go b/controllers/workloads/instanceset_controller.go
index e7279e38c..6f4575689 100644
--- a/controllers/workloads/instanceset_controller.go
+++ b/controllers/workloads/instanceset_controller.go
@@ -112,14 +112,14 @@ func (r *InstanceSetReconciler) SetupWithManager(mgr ctrl.Manager, multiClusterM
 
 func (r *InstanceSetReconciler) setupWithManager(mgr ctrl.Manager, ctx *handler.FinderContext) error {
 	itsFinder := handler.NewLabelFinder(&workloads.InstanceSet{}, instanceset.WorkloadsManagedByLabelKey, workloads.InstanceSetKind, instanceset.WorkloadsInstanceLabelKey)
-	podHandler := handler.NewBuilder(ctx).AddFinder(itsFinder).Build()
+	itsHandler := handler.NewBuilder(ctx).AddFinder(itsFinder).Build()
 	return intctrlutil.NewControllerManagedBy(mgr).
 		For(&workloads.InstanceSet{}).
 		WithOptions(controller.Options{
 			MaxConcurrentReconciles: viper.GetInt(constant.CfgKBReconcileWorkers),
 		}).
-		Watches(&corev1.Pod{}, podHandler).
-		Owns(&corev1.PersistentVolumeClaim{}).
+		Watches(&corev1.Pod{}, itsHandler).
+		Watches(&corev1.PersistentVolumeClaim{}, itsHandler).
 		Owns(&batchv1.Job{}).
 		Owns(&corev1.Service{}).
 		Owns(&corev1.ConfigMap{}).



Test patch:
diff --git a/pkg/dataprotection/restore/manager_test.go b/pkg/dataprotection/restore/manager_test.go
index ea16284b3..38a665a37 100644
--- a/pkg/dataprotection/restore/manager_test.go
+++ b/pkg/dataprotection/restore/manager_test.go
@@ -26,6 +26,7 @@ import (
 
 	. "github.com/onsi/ginkgo/v2"
 	. "github.com/onsi/gomega"
+
 	batchv1 "k8s.io/api/batch/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -409,7 +410,7 @@ var _ = Describe("RestoreManager Test", func() {
 
 				By("create restore manager")
 				reqCtx := getReqCtx()
-				restoreMGR := NewRestoreManager(restore, recorder, k8sClient.Scheme(), k8sClient)
+				restoreMGR := NewRestoreManager(restore, recorder, k8sClient.Scheme())
 				backupSet, err := restoreMGR.GetBackupActionSetByNamespaced(reqCtx, k8sClient, continuousBackup.Name, testCtx.DefaultNamespace)
 				Expect(err).ShouldNot(HaveOccurred())
 
@@ -425,7 +426,7 @@ var _ = Describe("RestoreManager Test", func() {
 				})).Should(Succeed())
 
 				By("check length of backupsets")
-				restoreMGR = NewRestoreManager(restore, recorder, k8sClient.Scheme(), k8sClient)
+				restoreMGR = NewRestoreManager(restore, recorder, k8sClient.Scheme())
 				backupSet, err = restoreMGR.GetBackupActionSetByNamespaced(reqCtx, k8sClient, continuousBackup.Name, testCtx.DefaultNamespace)
 				Expect(err).ShouldNot(HaveOccurred())