Merge pull request #95559 from prameshj/elb-update

Do not skip externalLB update if some nodes are not found.
This commit is contained in:
Kubernetes Prow Robot 2020-10-19 21:00:08 -07:00 committed by GitHub
commit 6d3ccd8e6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 1 deletions

View File

@ -561,7 +561,11 @@ func (g *Cloud) getInstancesByNames(names []string) ([]*gceInstance, error) {
return nil, err
}
if len(foundInstances) != len(names) {
return nil, cloudprovider.InstanceNotFound
if len(foundInstances) == 0 {
// return error so the TargetPool nodecount does not drop to 0 unexpectedly.
return nil, cloudprovider.InstanceNotFound
}
klog.Warningf("getFoundInstanceByNames - input instances %d, found %d. Continuing LoadBalancer Update", len(names), len(foundInstances))
}
return foundInstances, nil
}

View File

@ -372,6 +372,24 @@ func TestUpdateExternalLoadBalancer(t *testing.T) {
[]string{fmt.Sprintf("/zones/%s/instances/%s", vals.ZoneName, nodeName)},
pool.Instances,
)
anotherNewNodeName := "test-node-3"
newNodes, err = createAndInsertNodes(gce, []string{nodeName, newNodeName, anotherNewNodeName}, vals.ZoneName)
assert.NoError(t, err)
// delete one of the existing nodes, but include it in the list
err = gce.DeleteInstance(gce.ProjectID(), vals.ZoneName, nodeName)
require.NoError(t, err)
// The update should ignore the reference to non-existent node "test-node-1", but update target pool with rest of the valid nodes.
err = gce.updateExternalLoadBalancer(vals.ClusterName, svc, newNodes)
assert.NoError(t, err)
pool, err = gce.GetTargetPool(lbName, gce.region)
require.NoError(t, err)
namePrefix := fmt.Sprintf("/zones/%s/instances/", vals.ZoneName)
assert.ElementsMatch(t, pool.Instances, []string{namePrefix + newNodeName, namePrefix + anotherNewNodeName})
}
func TestEnsureExternalLoadBalancerDeleted(t *testing.T) {