code: func cleanupIptablesLeftovers(ipt utiliptables.Interface) (encounteredError bool) {
  	// Unlink the iptables chains created by ipvs Proxier
  	for _, jc := range iptablesJumpChain {
  		args := []string{
  			"-m", "comment", "--comment", jc.comment,
  			"-j", string(jc.to),
  		}
  		if err := ipt.DeleteRule(jc.table, jc.from, args...); err != nil {
  			if !utiliptables.IsNotFoundError(err) {
  				klog.Errorf("Error removing iptables rules in ipvs proxier: %v", err)
  				encounteredError = true
  			}
  		}
  	}
  
  	// Flush and remove all of our chains. Flushing all chains before removing them also removes all links between chains first.
  	for _, ch := range iptablesChains {
  		if err := ipt.FlushChain(ch.table, ch.chain); err != nil {
  			if !utiliptables.IsNotFoundError(err) {
  				klog.Errorf("Error removing iptables rules in ipvs proxier: %v", err)
  				encounteredError = true
  			}
  		}
  	}
  
  	// Remove all of our chains.
  	for _, ch := range iptablesChains {
  		if err := ipt.DeleteChain(ch.table, ch.chain); err != nil {
  			if !utiliptables.IsNotFoundError(err) {
  				klog.Errorf("Error removing iptables rules in ipvs proxier: %v", err)
  				encounteredError = true
  			}
  		}
  	}
  
  	return encounteredError
  }
docs: // CleanupIptablesLeftovers removes all iptables rules and chains created by the Proxier
  // It returns true if an error was encountered. Errors are logged.