in pkg/lbcontroller/lbcontroller.go [155:190]
func (c *LBController) RemoveIPFromNode(ctx context.Context, nodeName, volumeID string) error {
node, err := c.nodeLister.Get(nodeName)
if err != nil {
if errors.IsNotFound(err) {
klog.V(5).Infof("Node %q not found, skip RemoveIPFromNode for volume %q", nodeName, volumeID)
return nil
}
return err
}
ip, ok := node.Annotations[NodeAnnotation]
if !ok {
klog.V(5).Infof("Node %q does not have annotation %q, skip RemoveIPFromNode for volume %q", nodeName, NodeAnnotation, volumeID)
return nil
}
c.mutex.Lock()
defer c.mutex.Unlock()
if _, exists := c.ipMap[ip]; !exists {
klog.V(5).Infof("%q does not exist in LB controller IP map, skip RemoveIPFromNode for volume %q", ip, volumeID)
return nil
}
klog.V(5).Infof("Removing IP annotation %q from node %q for volume %q", ip, nodeName, volumeID)
nodeCopy := node.DeepCopy()
delete(nodeCopy.Annotations, NodeAnnotation)
_, err = c.clientset.CoreV1().Nodes().Update(ctx, nodeCopy, metav1.UpdateOptions{})
if err != nil {
return err
}
c.ipMap[ip]--
klog.V(6).Infof("RemoveIPFromNode: For volume %q, node %q, IP updated %q, LB controller IP map %v", volumeID, nodeName, ip, c.ipMap)
return nil
}