mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Merge pull request #94915 from Lion-Wei/fix-cleanup
fix kube-proxy cleanup
This commit is contained in:
commit
aa1f912868
@ -801,11 +801,20 @@ func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (in
|
|||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CleanupAndExit remove iptables rules and exit if success return nil
|
// CleanupAndExit remove iptables rules and ipset/ipvs rules in ipvs proxy mode
|
||||||
|
// and exit if success return nil
|
||||||
func (s *ProxyServer) CleanupAndExit() error {
|
func (s *ProxyServer) CleanupAndExit() error {
|
||||||
encounteredError := userspace.CleanupLeftovers(s.IptInterface)
|
// cleanup IPv6 and IPv4 iptables rules
|
||||||
encounteredError = iptables.CleanupLeftovers(s.IptInterface) || encounteredError
|
ipts := []utiliptables.Interface{
|
||||||
encounteredError = ipvs.CleanupLeftovers(s.IpvsInterface, s.IptInterface, s.IpsetInterface, s.CleanupIPVS) || encounteredError
|
utiliptables.New(s.execer, utiliptables.ProtocolIPv4),
|
||||||
|
utiliptables.New(s.execer, utiliptables.ProtocolIPv6),
|
||||||
|
}
|
||||||
|
var encounteredError bool
|
||||||
|
for _, ipt := range ipts {
|
||||||
|
encounteredError = userspace.CleanupLeftovers(ipt) || encounteredError
|
||||||
|
encounteredError = iptables.CleanupLeftovers(ipt) || encounteredError
|
||||||
|
encounteredError = ipvs.CleanupLeftovers(s.IpvsInterface, ipt, s.IpsetInterface, s.CleanupIPVS) || encounteredError
|
||||||
|
}
|
||||||
if encounteredError {
|
if encounteredError {
|
||||||
return errors.New("encountered an error while tearing down rules")
|
return errors.New("encountered an error while tearing down rules")
|
||||||
}
|
}
|
||||||
|
@ -91,26 +91,6 @@ func newProxyServer(
|
|||||||
return nil, fmt.Errorf("unable to register configz: %s", err)
|
return nil, fmt.Errorf("unable to register configz: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
hostname, err := utilnode.GetHostname(config.HostnameOverride)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
client, eventClient, err := createClients(config.ClientConnection, master)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
nodeIP := detectNodeIP(client, hostname, config.BindAddress)
|
|
||||||
|
|
||||||
protocol := utiliptables.ProtocolIPv4
|
|
||||||
if utilsnet.IsIPv6(nodeIP) {
|
|
||||||
klog.V(0).Infof("kube-proxy node IP is an IPv6 address (%s), assume IPv6 operation", nodeIP.String())
|
|
||||||
protocol = utiliptables.ProtocolIPv6
|
|
||||||
} else {
|
|
||||||
klog.V(0).Infof("kube-proxy node IP is an IPv4 address (%s), assume IPv4 operation", nodeIP.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
var iptInterface utiliptables.Interface
|
var iptInterface utiliptables.Interface
|
||||||
var ipvsInterface utilipvs.Interface
|
var ipvsInterface utilipvs.Interface
|
||||||
var kernelHandler ipvs.KernelHandler
|
var kernelHandler ipvs.KernelHandler
|
||||||
@ -119,7 +99,6 @@ func newProxyServer(
|
|||||||
// Create a iptables utils.
|
// Create a iptables utils.
|
||||||
execer := exec.New()
|
execer := exec.New()
|
||||||
|
|
||||||
iptInterface = utiliptables.New(execer, protocol)
|
|
||||||
kernelHandler = ipvs.NewLinuxKernelHandler()
|
kernelHandler = ipvs.NewLinuxKernelHandler()
|
||||||
ipsetInterface = utilipset.New(execer)
|
ipsetInterface = utilipset.New(execer)
|
||||||
canUseIPVS, err := ipvs.CanUseIPVSProxier(kernelHandler, ipsetInterface)
|
canUseIPVS, err := ipvs.CanUseIPVSProxier(kernelHandler, ipsetInterface)
|
||||||
@ -135,7 +114,6 @@ func newProxyServer(
|
|||||||
if cleanupAndExit {
|
if cleanupAndExit {
|
||||||
return &ProxyServer{
|
return &ProxyServer{
|
||||||
execer: execer,
|
execer: execer,
|
||||||
IptInterface: iptInterface,
|
|
||||||
IpvsInterface: ipvsInterface,
|
IpvsInterface: ipvsInterface,
|
||||||
IpsetInterface: ipsetInterface,
|
IpsetInterface: ipsetInterface,
|
||||||
}, nil
|
}, nil
|
||||||
@ -145,6 +123,27 @@ func newProxyServer(
|
|||||||
metrics.SetShowHidden()
|
metrics.SetShowHidden()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hostname, err := utilnode.GetHostname(config.HostnameOverride)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
client, eventClient, err := createClients(config.ClientConnection, master)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
nodeIP := detectNodeIP(client, hostname, config.BindAddress)
|
||||||
|
protocol := utiliptables.ProtocolIPv4
|
||||||
|
if utilsnet.IsIPv6(nodeIP) {
|
||||||
|
klog.V(0).Infof("kube-proxy node IP is an IPv6 address (%s), assume IPv6 operation", nodeIP.String())
|
||||||
|
protocol = utiliptables.ProtocolIPv6
|
||||||
|
} else {
|
||||||
|
klog.V(0).Infof("kube-proxy node IP is an IPv4 address (%s), assume IPv4 operation", nodeIP.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
iptInterface = utiliptables.New(execer, protocol)
|
||||||
|
|
||||||
// Create event recorder
|
// Create event recorder
|
||||||
eventBroadcaster := record.NewBroadcaster()
|
eventBroadcaster := record.NewBroadcaster()
|
||||||
recorder := eventBroadcaster.NewRecorder(proxyconfigscheme.Scheme, v1.EventSource{Component: "kube-proxy", Host: hostname})
|
recorder := eventBroadcaster.NewRecorder(proxyconfigscheme.Scheme, v1.EventSource{Component: "kube-proxy", Host: hostname})
|
||||||
|
Loading…
Reference in New Issue
Block a user