mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 03:03:59 +00:00
Merge pull request #89867 from gongguan/ipvs-check
remove duplicate ipvs check
This commit is contained in:
commit
5123c3a018
@ -159,7 +159,7 @@ func newProxyServer(
|
|||||||
var proxier proxy.Provider
|
var proxier proxy.Provider
|
||||||
var detectLocalMode proxyconfigapi.LocalMode
|
var detectLocalMode proxyconfigapi.LocalMode
|
||||||
|
|
||||||
proxyMode := getProxyMode(string(config.Mode), kernelHandler, ipsetInterface, iptables.LinuxKernelCompatTester{})
|
proxyMode := getProxyMode(string(config.Mode), canUseIPVS, iptables.LinuxKernelCompatTester{})
|
||||||
detectLocalMode, err = getDetectLocalMode(config)
|
detectLocalMode, err = getDetectLocalMode(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("cannot determine detect-local-mode: %v", err)
|
return nil, fmt.Errorf("cannot determine detect-local-mode: %v", err)
|
||||||
@ -554,28 +554,21 @@ func nodeIPTuple(bindAddress string) [2]net.IP {
|
|||||||
return nodes
|
return nodes
|
||||||
}
|
}
|
||||||
|
|
||||||
func getProxyMode(proxyMode string, khandle ipvs.KernelHandler, ipsetver ipvs.IPSetVersioner, kcompat iptables.KernelCompatTester) string {
|
func getProxyMode(proxyMode string, canUseIPVS bool, kcompat iptables.KernelCompatTester) string {
|
||||||
switch proxyMode {
|
switch proxyMode {
|
||||||
case proxyModeUserspace:
|
case proxyModeUserspace:
|
||||||
return proxyModeUserspace
|
return proxyModeUserspace
|
||||||
case proxyModeIPTables:
|
case proxyModeIPTables:
|
||||||
return tryIPTablesProxy(kcompat)
|
return tryIPTablesProxy(kcompat)
|
||||||
case proxyModeIPVS:
|
case proxyModeIPVS:
|
||||||
return tryIPVSProxy(khandle, ipsetver, kcompat)
|
return tryIPVSProxy(canUseIPVS, kcompat)
|
||||||
}
|
}
|
||||||
klog.Warningf("Unknown proxy mode %q, assuming iptables proxy", proxyMode)
|
klog.Warningf("Unknown proxy mode %q, assuming iptables proxy", proxyMode)
|
||||||
return tryIPTablesProxy(kcompat)
|
return tryIPTablesProxy(kcompat)
|
||||||
}
|
}
|
||||||
|
|
||||||
func tryIPVSProxy(khandle ipvs.KernelHandler, ipsetver ipvs.IPSetVersioner, kcompat iptables.KernelCompatTester) string {
|
func tryIPVSProxy(canUseIPVS bool, kcompat iptables.KernelCompatTester) string {
|
||||||
// guaranteed false on error, error only necessary for debugging
|
if canUseIPVS {
|
||||||
// IPVS Proxier relies on ip_vs_* kernel modules and ipset
|
|
||||||
useIPVSProxy, err := ipvs.CanUseIPVSProxier(khandle, ipsetver)
|
|
||||||
if err != nil {
|
|
||||||
// Try to fallback to iptables before falling back to userspace
|
|
||||||
utilruntime.HandleError(fmt.Errorf("can't determine whether to use ipvs proxy, error: %v", err))
|
|
||||||
}
|
|
||||||
if useIPVSProxy {
|
|
||||||
return proxyModeIPVS
|
return proxyModeIPVS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +145,8 @@ func Test_getProxyMode(t *testing.T) {
|
|||||||
modules: c.kmods,
|
modules: c.kmods,
|
||||||
kernelVersion: c.kernelVersion,
|
kernelVersion: c.kernelVersion,
|
||||||
}
|
}
|
||||||
r := getProxyMode(c.flag, khandler, ipsetver, kcompater)
|
canUseIPVS, _ := ipvs.CanUseIPVSProxier(khandler, ipsetver)
|
||||||
|
r := getProxyMode(c.flag, canUseIPVS, kcompater)
|
||||||
if r != c.expected {
|
if r != c.expected {
|
||||||
t.Errorf("Case[%d] Expected %q, got %q", i, c.expected, r)
|
t.Errorf("Case[%d] Expected %q, got %q", i, c.expected, r)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user