proxy: queue syncs on node events rather than syncing immediately

The proxies watch node labels for topology changes, but node labels
can change in bursts especially in larger clusters. This causes
pressure on all proxies because they can't filter the events, since
the topology could match on any label.

Change node event handling to queue the request rather than immediately
syncing. The sync runner can already handle short bursts which shouldn't
change behavior for most cases.

Signed-off-by: Dan Williams <dcbw@redhat.com>
This commit is contained in:
Dan Williams 2022-07-18 09:20:58 -05:00
parent 5108b0a3a0
commit f197509879
2 changed files with 6 additions and 6 deletions

View File

@ -633,7 +633,7 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) {
proxier.mu.Unlock()
klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels)
proxier.syncProxyRules()
proxier.Sync()
}
// OnNodeUpdate is called whenever modification of an existing
@ -657,7 +657,7 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) {
proxier.mu.Unlock()
klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels)
proxier.syncProxyRules()
proxier.Sync()
}
// OnNodeDelete is called whenever deletion of an existing node
@ -672,7 +672,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) {
proxier.nodeLabels = nil
proxier.mu.Unlock()
proxier.syncProxyRules()
proxier.Sync()
}
// OnNodeSynced is called once all the initial event handlers were

View File

@ -955,7 +955,7 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) {
proxier.mu.Unlock()
klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels)
proxier.syncProxyRules()
proxier.Sync()
}
// OnNodeUpdate is called whenever modification of an existing
@ -978,7 +978,7 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) {
proxier.mu.Unlock()
klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels)
proxier.syncProxyRules()
proxier.Sync()
}
// OnNodeDelete is called whenever deletion of an existing node
@ -992,7 +992,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) {
proxier.nodeLabels = nil
proxier.mu.Unlock()
proxier.syncProxyRules()
proxier.Sync()
}
// OnNodeSynced is called once all the initial event handlers were