From ff30f09f1117bdc00cec8452a705dba02fa7c40b Mon Sep 17 00:00:00 2001 From: antoinetran Date: Thu, 14 Aug 2025 11:39:31 +0000 Subject: [PATCH] fix: vcluster will not delete unmanaged nodes for fake nodes (#1944) Signed-off-by: antoinetran --- pkg/controllers/resources/nodes/fake_syncer.go | 7 +++++++ pkg/controllers/resources/nodes/syncer.go | 1 + 2 files changed, 8 insertions(+) diff --git a/pkg/controllers/resources/nodes/fake_syncer.go b/pkg/controllers/resources/nodes/fake_syncer.go index 033eff4016..bdf4c94245 100644 --- a/pkg/controllers/resources/nodes/fake_syncer.go +++ b/pkg/controllers/resources/nodes/fake_syncer.go @@ -83,6 +83,12 @@ func (r *fakeNodeSyncer) FakeSync(ctx *synccontext.SyncContext, vObj client.Obje return ctrl.Result{}, fmt.Errorf("%#v is not a node", vObj) } + if node.GetLabels() == nil || (node.GetLabels() != nil && node.GetLabels()[translate.MarkerLabel] != translate.VClusterName) { + // This node is not managed by vcluster, doing nothing to it. + ctx.Log.Infof("Unmanaged fake node %s, doing nothing.", vObj.GetName()) + return ctrl.Result{}, nil + } + needed, err := r.nodeNeeded(ctx, node.Name) if err != nil { return ctrl.Result{}, err @@ -164,6 +170,7 @@ func createFakeNode( "kubernetes.io/arch": runtime.GOARCH, "kubernetes.io/hostname": translate.SafeConcatName("fake", name), "kubernetes.io/os": "linux", + translate.MarkerLabel: translate.VClusterName, }, Annotations: map[string]string{ "node.alpha.kubernetes.io/ttl": "0", diff --git a/pkg/controllers/resources/nodes/syncer.go b/pkg/controllers/resources/nodes/syncer.go index dede02b8c2..c9c5b5b843 100644 --- a/pkg/controllers/resources/nodes/syncer.go +++ b/pkg/controllers/resources/nodes/syncer.go @@ -276,6 +276,7 @@ func registerIndices(ctx *synccontext.RegisterContext) error { func (s *nodeSyncer) SyncToHost(ctx *synccontext.SyncContext, event *synccontext.SyncToHostEvent[*corev1.Node]) (ctrl.Result, error) { if event.HostOld == nil { if event.Virtual.GetLabels() == nil || (event.Virtual.GetLabels() != nil && event.Virtual.GetLabels()[translate.MarkerLabel] != translate.VClusterName) { + ctx.Log.Infof("Unmanaged virtual node %s, doing nothing.", event.Virtual.Name) return ctrl.Result{}, nil } }