diff --git a/pkg/controller/network/ippool/ippool_controller.go b/pkg/controller/network/ippool/ippool_controller.go index 85c0ed5ee1797687f4fe845037c411910e206ddd..bbf1fe7ceb440d86135dafc2bed9f8f7f82e84bf 100644 --- a/pkg/controller/network/ippool/ippool_controller.go +++ b/pkg/controller/network/ippool/ippool_controller.go @@ -339,12 +339,14 @@ func (c *IPPoolController) processIPPoolItem() bool { if err == nil { c.ippoolQueue.Forget(key) return true - } else if delay != nil { - c.ippoolQueue.AddAfter(key, *delay) } + if delay != nil { + c.ippoolQueue.AddAfter(key, *delay) + } else { + c.ippoolQueue.AddRateLimited(key) + } utilruntime.HandleError(fmt.Errorf("error processing ippool %v (will retry): %v", key, err)) - c.ippoolQueue.AddRateLimited(key) return true } diff --git a/pkg/simple/client/network/ippool/calico/provider.go b/pkg/simple/client/network/ippool/calico/provider.go index 4cb5c5846e5efd8c724e07cba4e2b7278b6155f0..b4d6222080664c5379a44ed9d550f644729fd6a2 100644 --- a/pkg/simple/client/network/ippool/calico/provider.go +++ b/pkg/simple/client/network/ippool/calico/provider.go @@ -695,9 +695,16 @@ func NewProvider(podInformer informercorev1.PodInformer, ksclient kubesphereclie }) p.block = blockI - if err := p.syncIPPools(); err != nil { - klog.Fatalf("failed to sync calico ippool to kubesphere ippool, err=%v", err) - } + go func() { + for { + if err := p.syncIPPools(); err != nil { + klog.Infof("failed to sync calico ippool to kubesphere ippool, err=%v", err) + time.Sleep(3 * time.Second) + continue + } + break + } + }() return p }