From d59687c367a32b0b30f39377ef682181a55e202c Mon Sep 17 00:00:00 2001 From: Will Daly Date: Tue, 6 Aug 2024 09:01:42 -0700 Subject: [PATCH] kube-proxy: initialization wait for node and serviceCIDR synced Follow-on from https://github.com/kubernetes/kubernetes/pull/126532 to wait for pre-sync events delivered for the remaining two informers in kube-proxy (node and serviceCIDR). --- pkg/proxy/config/config.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pkg/proxy/config/config.go b/pkg/proxy/config/config.go index 373cd0a1c64..fcb41f00e87 100644 --- a/pkg/proxy/config/config.go +++ b/pkg/proxy/config/config.go @@ -300,11 +300,10 @@ type NodeConfig struct { // NewNodeConfig creates a new NodeConfig. func NewNodeConfig(ctx context.Context, nodeInformer v1informers.NodeInformer, resyncPeriod time.Duration) *NodeConfig { result := &NodeConfig{ - listerSynced: nodeInformer.Informer().HasSynced, - logger: klog.FromContext(ctx), + logger: klog.FromContext(ctx), } - _, _ = nodeInformer.Informer().AddEventHandlerWithResyncPeriod( + handlerRegistration, _ := nodeInformer.Informer().AddEventHandlerWithResyncPeriod( cache.ResourceEventHandlerFuncs{ AddFunc: result.handleAddNode, UpdateFunc: result.handleUpdateNode, @@ -313,6 +312,8 @@ func NewNodeConfig(ctx context.Context, nodeInformer v1informers.NodeInformer, r resyncPeriod, ) + result.listerSynced = handlerRegistration.HasSynced + return result } @@ -403,12 +404,11 @@ type ServiceCIDRConfig struct { // NewServiceCIDRConfig creates a new ServiceCIDRConfig. func NewServiceCIDRConfig(ctx context.Context, serviceCIDRInformer networkingv1beta1informers.ServiceCIDRInformer, resyncPeriod time.Duration) *ServiceCIDRConfig { result := &ServiceCIDRConfig{ - listerSynced: serviceCIDRInformer.Informer().HasSynced, - cidrs: sets.New[string](), - logger: klog.FromContext(ctx), + cidrs: sets.New[string](), + logger: klog.FromContext(ctx), } - _, _ = serviceCIDRInformer.Informer().AddEventHandlerWithResyncPeriod( + handlerRegistration, _ := serviceCIDRInformer.Informer().AddEventHandlerWithResyncPeriod( cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { result.handleServiceCIDREvent(nil, obj) @@ -422,6 +422,9 @@ func NewServiceCIDRConfig(ctx context.Context, serviceCIDRInformer networkingv1b }, resyncPeriod, ) + + result.listerSynced = handlerRegistration.HasSynced + return result }