mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Merge pull request #73323 from prameshj/clear-externalip-conntrack
Clear conntrack entries for externalIP and LoadBalancer IP
This commit is contained in:
commit
059d6057dd
@ -613,6 +613,18 @@ func (proxier *Proxier) deleteEndpointConnections(connectionMap []proxy.ServiceE
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to delete %s endpoint connections, error: %v", epSvcPair.ServicePortName.String(), err)
|
klog.Errorf("Failed to delete %s endpoint connections, error: %v", epSvcPair.ServicePortName.String(), err)
|
||||||
}
|
}
|
||||||
|
for _, extIP := range svcInfo.ExternalIPStrings() {
|
||||||
|
err := conntrack.ClearEntriesForNAT(proxier.exec, extIP, endpointIP, v1.ProtocolUDP)
|
||||||
|
if err != nil {
|
||||||
|
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,18 @@ func (proxier *Proxier) deleteEndpointConnections(connectionMap []proxy.ServiceE
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to delete %s endpoint connections, error: %v", epSvcPair.ServicePortName.String(), err)
|
klog.Errorf("Failed to delete %s endpoint connections, error: %v", epSvcPair.ServicePortName.String(), err)
|
||||||
}
|
}
|
||||||
|
for _, extIP := range svcInfo.ExternalIPStrings() {
|
||||||
|
err := conntrack.ClearEntriesForNAT(proxier.exec, extIP, endpointIP, v1.ProtocolUDP)
|
||||||
|
if err != nil {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,6 +79,20 @@ func (info *BaseServiceInfo) GetNodePort() int {
|
|||||||
return info.NodePort
|
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 {
|
func (sct *ServiceChangeTracker) newBaseServiceInfo(port *v1.ServicePort, service *v1.Service) *BaseServiceInfo {
|
||||||
onlyNodeLocalEndpoints := false
|
onlyNodeLocalEndpoints := false
|
||||||
if apiservice.RequestsOnlyLocalTraffic(service) {
|
if apiservice.RequestsOnlyLocalTraffic(service) {
|
||||||
|
@ -50,6 +50,10 @@ type ServicePort interface {
|
|||||||
String() string
|
String() string
|
||||||
// ClusterIPString returns service cluster IP in string format.
|
// ClusterIPString returns service cluster IP in string format.
|
||||||
ClusterIPString() string
|
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 returns service protocol.
|
||||||
GetProtocol() v1.Protocol
|
GetProtocol() v1.Protocol
|
||||||
// GetHealthCheckNodePort returns service health check node port if present. If return 0, it means not present.
|
// GetHealthCheckNodePort returns service health check node port if present. If return 0, it means not present.
|
||||||
|
Loading…
Reference in New Issue
Block a user