diff --git a/pkg/proxy/iptables/proxier.go b/pkg/proxy/iptables/proxier.go index 56643a2cb2d..87a3c9cc612 100644 --- a/pkg/proxy/iptables/proxier.go +++ b/pkg/proxy/iptables/proxier.go @@ -556,8 +556,6 @@ func (proxier *Proxier) OnServiceUpdate(allServices []api.Service) { proxier.haveReceivedServiceUpdate = true newServiceMap, hcAdd, hcDel, staleUDPServices := buildServiceMap(allServices, proxier.serviceMap) - proxier.serviceMap = newServiceMap - for _, hc := range hcAdd { glog.V(4).Infof("Adding health check for %+v, port %v", hc.namespace, hc.nodeport) // Turn on healthcheck responder to listen on the health check nodePort @@ -572,7 +570,13 @@ func (proxier *Proxier) OnServiceUpdate(allServices []api.Service) { healthcheck.DeleteServiceListener(hc.namespace, hc.nodeport) } - proxier.syncProxyRules() + if len(newServiceMap) != len(proxier.serviceMap) || !reflect.DeepEqual(newServiceMap, proxier.serviceMap) { + proxier.serviceMap = newServiceMap + proxier.syncProxyRules() + } else { + glog.V(4).Infof("Skipping proxy iptables rule sync on service update because nothing changed") + } + proxier.deleteServiceConnections(staleUDPServices.List()) }