diff --git a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go index 9d4551eefa..8cb2c364cf 100644 --- a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go +++ b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go @@ -772,6 +772,19 @@ func (az *Cloud) reconcileLoadBalancer(clusterName string, service *v1.Service, glog.V(2).Infof("ensure(%s) abort backoff: lb(%s) - updating", serviceName, lbName) return nil, err } + + if isInternal { + // Refresh updated lb which will be used later in other places. + newLB, exist, err := az.getAzureLoadBalancer(lbName) + if err != nil { + glog.V(2).Infof("getAzureLoadBalancer(%s) failed: %v", lbName, err) + return nil, err + } + if !exist { + return nil, fmt.Errorf("load balancer %q not found", lbName) + } + lb = &newLB + } } } diff --git a/pkg/cloudprovider/providers/azure/azure_wrap.go b/pkg/cloudprovider/providers/azure/azure_wrap.go index d80ac4455c..e37ac8ca95 100644 --- a/pkg/cloudprovider/providers/azure/azure_wrap.go +++ b/pkg/cloudprovider/providers/azure/azure_wrap.go @@ -173,3 +173,19 @@ func (az *Cloud) getSubnet(virtualNetworkName string, subnetName string) (subnet return subnet, exists, err } + +func (az *Cloud) getAzureLoadBalancer(name string) (lb network.LoadBalancer, exists bool, err error) { + var realErr error + + lb, err = az.LoadBalancerClient.Get(az.ResourceGroup, name, "") + exists, realErr = checkResourceExistsFromError(err) + if realErr != nil { + return lb, false, realErr + } + + if !exists { + return lb, false, nil + } + + return lb, exists, err +}