Skip to content

Commit

Permalink
remove duplicate ipvs check
Browse files Browse the repository at this point in the history
  • Loading branch information
gongguan committed Apr 7, 2020
1 parent 4d0e86f commit d6ea9d7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 13 deletions.
17 changes: 5 additions & 12 deletions cmd/kube-proxy/app/server_others.go
Expand Up @@ -159,7 +159,7 @@ func newProxyServer(
var proxier proxy.Provider
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)
if err != nil {
return nil, fmt.Errorf("cannot determine detect-local-mode: %v", err)
Expand Down Expand Up @@ -553,28 +553,21 @@ func nodeIPTuple(bindAddress string) [2]net.IP {
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 {
case proxyModeUserspace:
return proxyModeUserspace
case proxyModeIPTables:
return tryIPTablesProxy(kcompat)
case proxyModeIPVS:
return tryIPVSProxy(khandle, ipsetver, kcompat)
return tryIPVSProxy(canUseIPVS, kcompat)
}
klog.Warningf("Unknown proxy mode %q, assuming iptables proxy", proxyMode)
return tryIPTablesProxy(kcompat)
}

func tryIPVSProxy(khandle ipvs.KernelHandler, ipsetver ipvs.IPSetVersioner, kcompat iptables.KernelCompatTester) string {
// guaranteed false on error, error only necessary for debugging
// 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 {
func tryIPVSProxy(canUseIPVS bool, kcompat iptables.KernelCompatTester) string {
if canUseIPVS {
return proxyModeIPVS
}

Expand Down
3 changes: 2 additions & 1 deletion cmd/kube-proxy/app/server_others_test.go
Expand Up @@ -145,7 +145,8 @@ func Test_getProxyMode(t *testing.T) {
modules: c.kmods,
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 {
t.Errorf("Case[%d] Expected %q, got %q", i, c.expected, r)
}
Expand Down

0 comments on commit d6ea9d7

Please sign in to comment.