mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #65425 from islinwb/ipvs_cleanup_rules
Automatic merge from submit-queue (batch tested with PRs 66136, 64999, 65425, 66120, 66074). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Not step into ipvs.CleanupLeftovers() if canUseIPVS's false **What this PR does / why we need it**: Earlier we decide whether we should clean up the left-over ipvs rules inside `ipvs.CleanupLeftovers()`, therefore we call function `ipvs.CanUseIPVSProxier()` two times (and `GetModules()` two times). Actually no need to step into `ipvs.CleanupLeftovers()` if `canUseIPVS` is false. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: **Release note**: ```release-note NONE ```
This commit is contained in:
		@@ -92,7 +92,8 @@ func newProxyServer(
 | 
			
		||||
	iptInterface = utiliptables.New(execer, dbus, protocol)
 | 
			
		||||
	kernelHandler = ipvs.NewLinuxKernelHandler()
 | 
			
		||||
	ipsetInterface = utilipset.New(execer)
 | 
			
		||||
	if canUse, _ := ipvs.CanUseIPVSProxier(kernelHandler, ipsetInterface); canUse {
 | 
			
		||||
	canUseIPVS, _ := ipvs.CanUseIPVSProxier(kernelHandler, ipsetInterface)
 | 
			
		||||
	if canUseIPVS {
 | 
			
		||||
		ipvsInterface = utilipvs.New(execer)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -178,7 +179,9 @@ func newProxyServer(
 | 
			
		||||
		// Besides, ipvs proxier will create some ipvs rules as well.  Because there is no way to tell if a given
 | 
			
		||||
		// ipvs rule is created by IPVS proxier or not.  Users should explicitly specify `--clean-ipvs=true` to flush
 | 
			
		||||
		// all ipvs rules when kube-proxy start up.  Users do this operation should be with caution.
 | 
			
		||||
		ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS)
 | 
			
		||||
		if canUseIPVS {
 | 
			
		||||
			ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS)
 | 
			
		||||
		}
 | 
			
		||||
	} else if proxyMode == proxyModeIPVS {
 | 
			
		||||
		glog.V(0).Info("Using ipvs Proxier.")
 | 
			
		||||
		proxierIPVS, err := ipvs.NewProxier(
 | 
			
		||||
@@ -245,7 +248,9 @@ func newProxyServer(
 | 
			
		||||
		// Besides, ipvs proxier will create some ipvs rules as well.  Because there is no way to tell if a given
 | 
			
		||||
		// ipvs rule is created by IPVS proxier or not.  Users should explicitly specify `--clean-ipvs=true` to flush
 | 
			
		||||
		// all ipvs rules when kube-proxy start up.  Users do this operation should be with caution.
 | 
			
		||||
		ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS)
 | 
			
		||||
		if canUseIPVS {
 | 
			
		||||
			ipvs.CleanupLeftovers(ipvsInterface, iptInterface, ipsetInterface, cleanupIPVS)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iptInterface.AddReloadFunc(proxier.Sync)
 | 
			
		||||
 
 | 
			
		||||
@@ -551,9 +551,6 @@ 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 canUse, _ := CanUseIPVSProxier(NewLinuxKernelHandler(), ipset); !canUse {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	if cleanupIPVS {
 | 
			
		||||
		// Return immediately when ipvs interface is nil - Probably initialization failed in somewhere.
 | 
			
		||||
		if ipvs == nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user