From 8b107121926d41a0b6ffb29170a9891ebae189eb Mon Sep 17 00:00:00 2001 From: Vallery Lancey Date: Thu, 4 Apr 2019 16:59:05 -0700 Subject: [PATCH] Revert "Deprecated --cleanup-ipvs flag in kube-proxy" This reverts commit 4f1bb2bd2fc5b792e8b63986257d2f9bee1f96cf. --- cmd/kube-proxy/app/server.go | 10 +++++++--- pkg/proxy/ipvs/proxier.go | 25 +++++++++++++------------ 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/cmd/kube-proxy/app/server.go b/cmd/kube-proxy/app/server.go index e07f14b01c..b30d9b3b74 100644 --- a/cmd/kube-proxy/app/server.go +++ b/cmd/kube-proxy/app/server.go @@ -100,8 +100,10 @@ type Options struct { ConfigFile string // WriteConfigTo is the path where the default configuration will be written. WriteConfigTo string - // CleanupAndExit, when true, makes the proxy server clean up iptables, ipvs, etc rules, then exit. + // CleanupAndExit, when true, makes the proxy server clean up iptables rules, then exit. CleanupAndExit bool + // CleanupIPVS, when true, makes the proxy server clean up ipvs rules before running. + CleanupIPVS bool // WindowsService should be set to true if kube-proxy is running as a service on Windows. // Its corresponding flag only gets registered in Windows builds WindowsService bool @@ -141,7 +143,7 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) { fs.BoolVar(&o.CleanupAndExit, "cleanup-iptables", o.CleanupAndExit, "If true cleanup iptables and ipvs rules and exit.") fs.MarkDeprecated("cleanup-iptables", "This flag is replaced by --cleanup.") fs.BoolVar(&o.CleanupAndExit, "cleanup", o.CleanupAndExit, "If true cleanup iptables and ipvs rules and exit.") - fs.MarkDeprecated("cleanup-ipvs", "This flag is replaced by --cleanup.") + fs.BoolVar(&o.CleanupIPVS, "cleanup-ipvs", o.CleanupIPVS, "If true make kube-proxy cleanup ipvs rules before running. Default is true") // All flags below here are deprecated and will eventually be removed. @@ -201,6 +203,7 @@ func NewOptions() *Options { metricsPort: ports.ProxyStatusPort, scheme: scheme.Scheme, codecs: scheme.Codecs, + CleanupIPVS: true, errCh: make(chan error), } } @@ -496,6 +499,7 @@ type ProxyServer struct { ProxyMode string NodeRef *v1.ObjectReference CleanupAndExit bool + CleanupIPVS bool MetricsBindAddress string EnableProfiling bool OOMScoreAdj *int32 @@ -553,7 +557,7 @@ func (s *ProxyServer) Run() error { if s.CleanupAndExit { encounteredError := userspace.CleanupLeftovers(s.IptInterface) encounteredError = iptables.CleanupLeftovers(s.IptInterface) || encounteredError - encounteredError = ipvs.CleanupLeftovers(s.IpvsInterface, s.IptInterface, s.IpsetInterface) || encounteredError + encounteredError = ipvs.CleanupLeftovers(s.IpvsInterface, s.IptInterface, s.IpsetInterface, s.CleanupIPVS) || encounteredError if encounteredError { return errors.New("encountered an error while tearing down rules.") } diff --git a/pkg/proxy/ipvs/proxier.go b/pkg/proxy/ipvs/proxier.go index c8d691b840..aa42fa73b8 100644 --- a/pkg/proxy/ipvs/proxier.go +++ b/pkg/proxy/ipvs/proxier.go @@ -590,21 +590,22 @@ func cleanupIptablesLeftovers(ipt utiliptables.Interface) (encounteredError bool } // CleanupLeftovers clean up all ipvs and iptables rules created by ipvs Proxier. -func CleanupLeftovers(ipvs utilipvs.Interface, ipt utiliptables.Interface, ipset utilipset.Interface) (encounteredError bool) { - // Return immediately when ipvs interface is nil - Probably initialization failed in somewhere. - if ipvs == nil { - return true +func CleanupLeftovers(ipvs utilipvs.Interface, ipt utiliptables.Interface, ipset utilipset.Interface, cleanupIPVS bool) (encounteredError bool) { + if cleanupIPVS { + // Return immediately when ipvs interface is nil - Probably initialization failed in somewhere. + if ipvs == nil { + return true + } + encounteredError = false + err := ipvs.Flush() + if err != nil { + klog.Errorf("Error flushing IPVS rules: %v", err) + encounteredError = true + } } - encounteredError = false - err := ipvs.Flush() - if err != nil { - klog.Errorf("Error flushing IPVS rules: %v", err) - encounteredError = true - } - // Delete dummy interface created by ipvs Proxier. nl := NewNetLinkHandle(false) - err = nl.DeleteDummyDevice(DefaultDummyDevice) + err := nl.DeleteDummyDevice(DefaultDummyDevice) if err != nil { klog.Errorf("Error deleting dummy device %s created by IPVS proxier: %v", DefaultDummyDevice, err) encounteredError = true