mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
kube-proxy: sync rules when current node labels change detected
This commit is contained in:
parent
c9cf3f5b72
commit
80c6524cd0
@ -26,6 +26,7 @@ import (
|
|||||||
"encoding/base32"
|
"encoding/base32"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@ -599,9 +600,14 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) {
|
|||||||
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
oldLabels := proxier.nodeLabels
|
||||||
|
newLabels := node.Labels
|
||||||
proxier.mu.Lock()
|
proxier.mu.Lock()
|
||||||
proxier.nodeLabels = node.Labels
|
proxier.nodeLabels = newLabels
|
||||||
proxier.mu.Unlock()
|
proxier.mu.Unlock()
|
||||||
|
if !reflect.DeepEqual(oldLabels, newLabels) {
|
||||||
|
proxier.syncProxyRules()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnNodeUpdate is called whenever modification of an existing
|
// OnNodeUpdate is called whenever modification of an existing
|
||||||
@ -611,9 +617,14 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) {
|
|||||||
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
oldLabels := proxier.nodeLabels
|
||||||
|
newLabels := node.Labels
|
||||||
proxier.mu.Lock()
|
proxier.mu.Lock()
|
||||||
proxier.nodeLabels = node.Labels
|
proxier.nodeLabels = newLabels
|
||||||
proxier.mu.Unlock()
|
proxier.mu.Unlock()
|
||||||
|
if !reflect.DeepEqual(oldLabels, newLabels) {
|
||||||
|
proxier.syncProxyRules()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnNodeDelete is called whever deletion of an existing node
|
// OnNodeDelete is called whever deletion of an existing node
|
||||||
@ -626,6 +637,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) {
|
|||||||
proxier.mu.Lock()
|
proxier.mu.Lock()
|
||||||
proxier.nodeLabels = nil
|
proxier.nodeLabels = nil
|
||||||
proxier.mu.Unlock()
|
proxier.mu.Unlock()
|
||||||
|
proxier.syncProxyRules()
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnNodeSynced is called once all the initial event handlers were
|
// OnNodeSynced is called once all the initial event handlers were
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@ -905,9 +906,14 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) {
|
|||||||
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
oldLabels := proxier.nodeLabels
|
||||||
|
newLabels := node.Labels
|
||||||
proxier.mu.Lock()
|
proxier.mu.Lock()
|
||||||
proxier.nodeLabels = node.Labels
|
proxier.nodeLabels = newLabels
|
||||||
proxier.mu.Unlock()
|
proxier.mu.Unlock()
|
||||||
|
if !reflect.DeepEqual(oldLabels, newLabels) {
|
||||||
|
proxier.syncProxyRules()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnNodeUpdate is called whenever modification of an existing
|
// OnNodeUpdate is called whenever modification of an existing
|
||||||
@ -917,9 +923,14 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) {
|
|||||||
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
oldLabels := proxier.nodeLabels
|
||||||
|
newLabels := node.Labels
|
||||||
proxier.mu.Lock()
|
proxier.mu.Lock()
|
||||||
proxier.nodeLabels = node.Labels
|
proxier.nodeLabels = newLabels
|
||||||
proxier.mu.Unlock()
|
proxier.mu.Unlock()
|
||||||
|
if !reflect.DeepEqual(oldLabels, newLabels) {
|
||||||
|
proxier.syncProxyRules()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnNodeDelete is called whever deletion of an existing node
|
// OnNodeDelete is called whever deletion of an existing node
|
||||||
@ -932,6 +943,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) {
|
|||||||
proxier.mu.Lock()
|
proxier.mu.Lock()
|
||||||
proxier.nodeLabels = nil
|
proxier.nodeLabels = nil
|
||||||
proxier.mu.Unlock()
|
proxier.mu.Unlock()
|
||||||
|
proxier.syncProxyRules()
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnNodeSynced is called once all the initial event handlers were
|
// OnNodeSynced is called once all the initial event handlers were
|
||||||
|
Loading…
Reference in New Issue
Block a user