From d3a1510e0208e75a76f222e7d671a13ab74cda28 Mon Sep 17 00:00:00 2001 From: Girish Kalele Date: Wed, 31 Aug 2016 15:02:26 -0700 Subject: [PATCH] Fix kube-proxy logic to change iptables chains when ESIPP is turned on or off --- pkg/proxy/iptables/proxier.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/proxy/iptables/proxier.go b/pkg/proxy/iptables/proxier.go index 83a8ec89c86..36a5cbfb1d0 100644 --- a/pkg/proxy/iptables/proxier.go +++ b/pkg/proxy/iptables/proxier.go @@ -346,6 +346,10 @@ func (proxier *Proxier) sameConfig(info *serviceInfo, service *api.Service, port if info.sessionAffinityType != service.Spec.SessionAffinity { return false } + onlyNodeLocalEndpoints := apiservice.NeedsHealthCheck(service) && featuregate.DefaultFeatureGate.ExternalTrafficLocalOnly() + if info.onlyNodeLocalEndpoints != onlyNodeLocalEndpoints { + return false + } return true } @@ -446,6 +450,9 @@ func (proxier *Proxier) OnServiceUpdate(allServices []api.Service) { // Turn on healthcheck responder to listen on the health check nodePort healthcheck.AddServiceListener(serviceName.NamespacedName, info.healthCheckNodePort) } + } else { + // Delete healthcheck responders, if any, previously listening for this service + healthcheck.DeleteServiceListener(serviceName.NamespacedName, 0) } proxier.serviceMap[serviceName] = info @@ -895,6 +902,9 @@ func (proxier *Proxier) syncProxyRules() { writeLine(natChains, utiliptables.MakeChainLine(svcXlbChain)) } activeNATChains[svcXlbChain] = true + } else if activeNATChains[svcXlbChain] { + // Cleanup the previously created XLB chain for this service + delete(activeNATChains, svcXlbChain) } // Capture the clusterIP.