From 3ee977a29b961b090bf94f65b3d4e5496c9d1be8 Mon Sep 17 00:00:00 2001 From: hzma Date: Wed, 9 Aug 2023 11:41:43 +0800 Subject: [PATCH] move unnecessary init process after startWorkers (#3124) --- pkg/controller/controller.go | 60 ++++++++++++++++++++---------------- pkg/controller/gc.go | 10 +----- pkg/controller/init.go | 1 + 3 files changed, 36 insertions(+), 35 deletions(-) diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 0bbea18848a..cb228e49ed1 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -633,6 +633,8 @@ func NewController(config *Configuration) *Controller { // is closed, at which point it will shutdown the workqueue and wait for // workers to finish processing their current work items. func (c *Controller) Run(ctx context.Context) { + // The init process can only be placed here if the init process do really affect the normal process of controller, such as Nodes/Pods/Subnets... + // Otherwise, the init process should be placed after all workers have already started working defer c.shutdown() klog.Info("Starting OVN controller") @@ -691,24 +693,10 @@ func (c *Controller) Run(ctx context.Context) { util.LogFatalAndExit(err, "failed to initialize ipam") } - if err := c.initNodeChassis(); err != nil { - util.LogFatalAndExit(err, "failed to initialize node chassis") - } - if err := c.initNodeRoutes(); err != nil { util.LogFatalAndExit(err, "failed to initialize node routes") } - if err := c.initDenyAllSecurityGroup(); err != nil { - util.LogFatalAndExit(err, "failed to initialize 'deny_all' security group") - } - - // remove resources in ovndb that not exist any more in kubernetes resources - if err := c.gc(); err != nil { - util.LogFatalAndExit(err, "failed to run gc") - } - - c.registerSubnetMetrics() if err := c.initSyncCrdSubnets(); err != nil { util.LogFatalAndExit(err, "failed to sync crd subnets") } @@ -716,24 +704,14 @@ func (c *Controller) Run(ctx context.Context) { util.LogFatalAndExit(err, "failed to sync crd vlans") } - if c.config.PodDefaultFipType == util.IptablesFip { - if err := c.initSyncCrdVpcNatGw(); err != nil { - util.LogFatalAndExit(err, "failed to sync crd vpc nat gateways") - } - } - - if c.config.EnableLb { - if err := c.initVpcDnsConfig(); err != nil { - util.LogFatalAndExit(err, "failed to initialize vpc-dns") - } - } - if err := c.addNodeGwStaticRoute(); err != nil { util.LogFatalAndExit(err, "failed to add static route for node gateway") } // start workers to do all the network operations c.startWorkers(ctx) + + c.initResourceOnce() <-ctx.Done() klog.Info("Shutting down workers") } @@ -1035,3 +1013,33 @@ func (c *Controller) startWorkers(ctx context.Context) { go wait.Until(c.runDelPodAnnotatedIptablesFipWorker, time.Second, ctx.Done()) } } + +func (c *Controller) initResourceOnce() { + c.registerSubnetMetrics() + + if err := c.initNodeChassis(); err != nil { + util.LogFatalAndExit(err, "failed to initialize node chassis") + } + + if err := c.initDenyAllSecurityGroup(); err != nil { + util.LogFatalAndExit(err, "failed to initialize 'deny_all' security group") + } + + if c.config.PodDefaultFipType == util.IptablesFip { + if err := c.initSyncCrdVpcNatGw(); err != nil { + util.LogFatalAndExit(err, "failed to sync crd vpc nat gateways") + } + } + + if c.config.EnableLb { + if err := c.initVpcDnsConfig(); err != nil { + util.LogFatalAndExit(err, "failed to initialize vpc-dns") + } + } + + // remove resources in ovndb that not exist any more in kubernetes resources + // process gc at last in case of affecting other init process + if err := c.gc(); err != nil { + util.LogFatalAndExit(err, "failed to run gc") + } +} diff --git a/pkg/controller/gc.go b/pkg/controller/gc.go index 920fe02c34a..35e965c7398 100644 --- a/pkg/controller/gc.go +++ b/pkg/controller/gc.go @@ -26,7 +26,7 @@ func (c *Controller) gc() error { c.gcChassis, c.gcLogicalSwitch, c.gcCustomLogicalRouter, - c.gcLogicalSwitchPort, + // The lsp gc is processed periodically by markAndCleanLSP, will not gc lsp when init c.gcLoadBalancer, c.gcPortGroup, c.gcStaticRoute, @@ -277,14 +277,6 @@ func (c *Controller) gcVip() error { return nil } -func (c *Controller) gcLogicalSwitchPort() error { - klog.Info("start to gc logical switch port") - if err := c.markAndCleanLSP(); err != nil { - return err - } - return c.markAndCleanLSP() -} - func (c *Controller) markAndCleanLSP() error { klog.V(4).Infof("start to gc logical switch ports") pods, err := c.podsLister.List(labels.Everything()) diff --git a/pkg/controller/init.go b/pkg/controller/init.go index b5d7a4286ce..99338eb752e 100644 --- a/pkg/controller/init.go +++ b/pkg/controller/init.go @@ -422,6 +422,7 @@ func (c *Controller) InitIPAM() error { } } } + nodes, err := c.nodesLister.List(labels.Everything()) if err != nil { klog.Errorf("failed to list nodes: %v", err)