fix: skip not found nodes when reconciling LB backend address pools

This commit is contained in:
Qi Ni 2021-09-29 07:59:40 +08:00
parent 1e21fe694e
commit 0406ba32ea
2 changed files with 13 additions and 4 deletions

View File

@ -965,6 +965,11 @@ func (ss *scaleSet) EnsureHostInPool(service *v1.Service, nodeName types.NodeNam
vmName := mapNodeNameToVMName(nodeName)
ssName, instanceID, vm, err := ss.getVmssVM(vmName, azcache.CacheReadTypeDefault)
if err != nil {
if errors.Is(err, cloudprovider.InstanceNotFound) {
klog.Infof("EnsureHostInPool: skipping node %s because it is not found", vmName)
return "", "", "", nil, nil
}
return "", "", "", nil, err
}
@ -1340,6 +1345,11 @@ func (ss *scaleSet) EnsureHostsInPool(service *v1.Service, nodes []*v1.Node, bac
func (ss *scaleSet) ensureBackendPoolDeletedFromNode(nodeName, backendPoolID string) (string, string, string, *compute.VirtualMachineScaleSetVM, error) {
ssName, instanceID, vm, err := ss.getVmssVM(nodeName, azcache.CacheReadTypeDefault)
if err != nil {
if errors.Is(err, cloudprovider.InstanceNotFound) {
klog.Infof("ensureBackendPoolDeletedFromNode: skipping node %s because it is not found", nodeName)
return "", "", "", nil, nil
}
return "", "", "", nil, err
}

View File

@ -2145,7 +2145,7 @@ func TestEnsureHostsInPool(t *testing.T) {
expectedVMSSVMPutTimes: 1,
},
{
description: "EnsureHostsInPool should gather report the error if something goes wrong in EnsureHostInPool",
description: "EnsureHostsInPool should skip not found nodes",
nodes: []*v1.Node{
{
ObjectMeta: metav1.ObjectMeta{
@ -2159,7 +2159,7 @@ func TestEnsureHostsInPool(t *testing.T) {
backendpoolID: testLBBackendpoolID1,
vmSetName: testVMSSName,
expectedVMSSVMPutTimes: 0,
expectedErr: true,
expectedErr: false,
},
}
@ -2205,9 +2205,8 @@ func TestEnsureBackendPoolDeletedFromNode(t *testing.T) {
expectedErr error
}{
{
description: "ensureBackendPoolDeletedFromNode should report the error that occurs during getVmssVM",
description: "ensureBackendPoolDeletedFromNode should skip not found nodes",
nodeName: "vmss-vm-000001",
expectedErr: cloudprovider.InstanceNotFound,
},
{
description: "ensureBackendPoolDeletedFromNode skip the node if the VM's NIC config is nil",