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) vmName := mapNodeNameToVMName(nodeName)
ssName, instanceID, vm, err := ss.getVmssVM(vmName, azcache.CacheReadTypeDefault) ssName, instanceID, vm, err := ss.getVmssVM(vmName, azcache.CacheReadTypeDefault)
if err != nil { 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 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) { func (ss *scaleSet) ensureBackendPoolDeletedFromNode(nodeName, backendPoolID string) (string, string, string, *compute.VirtualMachineScaleSetVM, error) {
ssName, instanceID, vm, err := ss.getVmssVM(nodeName, azcache.CacheReadTypeDefault) ssName, instanceID, vm, err := ss.getVmssVM(nodeName, azcache.CacheReadTypeDefault)
if err != nil { 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 return "", "", "", nil, err
} }

View File

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