mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Remove conntrack entries from loadbalancer ip too.
This commit is contained in:
		@@ -619,6 +619,12 @@ func (proxier *Proxier) deleteEndpointConnections(connectionMap []proxy.ServiceE
 | 
			
		||||
					klog.Errorf("Failed to delete %s endpoint connections for externalIP %s, error: %v", epSvcPair.ServicePortName.String(), extIP, err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			for _, lbIP := range svcInfo.LoadBalancerIPStrings() {
 | 
			
		||||
				err := conntrack.ClearEntriesForNAT(proxier.exec, lbIP, endpointIP, v1.ProtocolUDP)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					klog.Errorf("Failed to delete %s endpoint connections for LoabBalancerIP %s, error: %v", epSvcPair.ServicePortName.String(), lbIP, err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1499,6 +1499,12 @@ func (proxier *Proxier) deleteEndpointConnections(connectionMap []proxy.ServiceE
 | 
			
		||||
					klog.Errorf("Failed to delete %s endpoint connections for externalIP %s, error: %v", epSvcPair.ServicePortName.String(), extIP, err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			for _, lbIP := range svcInfo.LoadBalancerIPStrings() {
 | 
			
		||||
				err := conntrack.ClearEntriesForNAT(proxier.exec, lbIP, endpointIP, v1.ProtocolUDP)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					klog.Errorf("Failed to delete %s endpoint connections for LoabBalancerIP %s, error: %v", epSvcPair.ServicePortName.String(), lbIP, err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -78,11 +78,21 @@ func (info *BaseServiceInfo) GetHealthCheckNodePort() int {
 | 
			
		||||
func (info *BaseServiceInfo) GetNodePort() int {
 | 
			
		||||
	return info.NodePort
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ExternalIPStrings is part of ServicePort interface.
 | 
			
		||||
func (info *BaseServiceInfo) ExternalIPStrings() []string {
 | 
			
		||||
	return info.ExternalIPs
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LoadBalancerIPStrings is part of ServicePort interface.
 | 
			
		||||
func (info *BaseServiceInfo) LoadBalancerIPStrings() []string {
 | 
			
		||||
	var ips []string
 | 
			
		||||
	for _, ing := range info.LoadBalancerStatus.Ingress {
 | 
			
		||||
		ips = append(ips, ing.IP)
 | 
			
		||||
	}
 | 
			
		||||
	return ips
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (sct *ServiceChangeTracker) newBaseServiceInfo(port *v1.ServicePort, service *v1.Service) *BaseServiceInfo {
 | 
			
		||||
	onlyNodeLocalEndpoints := false
 | 
			
		||||
	if apiservice.RequestsOnlyLocalTraffic(service) {
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,8 @@ type ServicePort interface {
 | 
			
		||||
	ClusterIPString() string
 | 
			
		||||
	// ExternalIPStrings returns service ExternalIPs as a string array.
 | 
			
		||||
	ExternalIPStrings() []string
 | 
			
		||||
	// LoadBalancerIPStrings returns service LoadBalancerIPs as a string array.
 | 
			
		||||
	LoadBalancerIPStrings() []string
 | 
			
		||||
	// GetProtocol returns service protocol.
 | 
			
		||||
	GetProtocol() v1.Protocol
 | 
			
		||||
	// GetHealthCheckNodePort returns service health check node port if present.  If return 0, it means not present.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user