diff --git a/cmd/kube-proxy/app/server.go b/cmd/kube-proxy/app/server.go index b30d9b3b74..e07f14b01c 100644 --- a/cmd/kube-proxy/app/server.go +++ b/cmd/kube-proxy/app/server.go @@ -100,10 +100,8 @@ 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 rules, then exit. + // CleanupAndExit, when true, makes the proxy server clean up iptables, ipvs, etc 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 @@ -143,7 +141,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.BoolVar(&o.CleanupIPVS, "cleanup-ipvs", o.CleanupIPVS, "If true make kube-proxy cleanup ipvs rules before running. Default is true") + fs.MarkDeprecated("cleanup-ipvs", "This flag is replaced by --cleanup.") // All flags below here are deprecated and will eventually be removed. @@ -203,7 +201,6 @@ func NewOptions() *Options { metricsPort: ports.ProxyStatusPort, scheme: scheme.Scheme, codecs: scheme.Codecs, - CleanupIPVS: true, errCh: make(chan error), } } @@ -499,7 +496,6 @@ type ProxyServer struct { ProxyMode string NodeRef *v1.ObjectReference CleanupAndExit bool - CleanupIPVS bool MetricsBindAddress string EnableProfiling bool OOMScoreAdj *int32 @@ -557,7 +553,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, s.CleanupIPVS) || encounteredError + encounteredError = ipvs.CleanupLeftovers(s.IpvsInterface, s.IptInterface, s.IpsetInterface) || 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 aa42fa73b8..c8d691b840 100644 --- a/pkg/proxy/ipvs/proxier.go +++ b/pkg/proxy/ipvs/proxier.go @@ -590,22 +590,21 @@ 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, 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 - } +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 } + 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