diff --git a/pkg/controller/nodeipam/ipam/cloud_cidr_allocator.go b/pkg/controller/nodeipam/ipam/cloud_cidr_allocator.go index 8d6ef878da..6f4e4cfcc7 100644 --- a/pkg/controller/nodeipam/ipam/cloud_cidr_allocator.go +++ b/pkg/controller/nodeipam/ipam/cloud_cidr_allocator.go @@ -191,10 +191,14 @@ func (ca *cloudCIDRAllocator) AllocateOrOccupyCIDR(node *v1.Node) error { // updateCIDRAllocation assigns CIDR to Node and sends an update to the API server. func (ca *cloudCIDRAllocator) updateCIDRAllocation(nodeName string) error { - var err error - var node *v1.Node defer ca.removeNodeFromProcessing(nodeName) + node, err := ca.nodeLister.Get(nodeName) + if err != nil { + glog.Errorf("Failed while getting node %v for updating Node.Spec.PodCIDR: %v", nodeName, err) + return err + } + cidrs, err := ca.cloud.AliasRanges(types.NodeName(nodeName)) if err != nil { nodeutil.RecordNodeStatusChange(ca.recorder, node, "CIDRNotAvailable") @@ -210,12 +214,6 @@ func (ca *cloudCIDRAllocator) updateCIDRAllocation(nodeName string) error { } podCIDR := cidr.String() - node, err = ca.nodeLister.Get(nodeName) - if err != nil { - glog.Errorf("Failed while getting node %v for updating Node.Spec.PodCIDR: %v", nodeName, err) - return err - } - if node.Spec.PodCIDR == podCIDR { glog.V(4).Infof("Node %v already has allocated CIDR %v. It matches the proposed one.", node.Name, podCIDR) // We don't return here, in order to set the NetworkUnavailable condition later below.