Merge pull request #99613 from xh4n3/master

fix wrong NumCPU in kube-proxy under static CPU policy
This commit is contained in:
Kubernetes Prow Robot 2021-03-06 14:21:41 -08:00 committed by GitHub
commit 0849d1bea1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 2 deletions

View File

@ -24,7 +24,6 @@ import (
"io/ioutil"
"net/http"
"os"
goruntime "runtime"
"strings"
"time"
@ -784,7 +783,7 @@ func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (in
if config.Min != nil {
floor = int(*config.Min)
}
scaled := int(*config.MaxPerCore) * goruntime.NumCPU()
scaled := int(*config.MaxPerCore) * detectNumCPU()
if scaled > floor {
klog.V(3).Infof("getConntrackMax: using scaled conntrack-max-per-core")
return scaled, nil

View File

@ -25,9 +25,12 @@ import (
"errors"
"fmt"
"net"
goruntime "runtime"
"strings"
"time"
"github.com/google/cadvisor/machine"
"github.com/google/cadvisor/utils/sysfs"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/apimachinery/pkg/runtime"
@ -436,6 +439,15 @@ func detectNodeIP(client clientset.Interface, hostname, bindAddress string) net.
return nodeIP
}
func detectNumCPU() int {
// try get numCPU from /sys firstly due to a known issue (https://github.com/kubernetes/kubernetes/issues/99225)
_, numCPU, err := machine.GetTopology(sysfs.NewRealSysFs())
if err != nil || numCPU < 1 {
return goruntime.NumCPU()
}
return numCPU
}
func getDetectLocalMode(config *proxyconfigapi.KubeProxyConfiguration) (proxyconfigapi.LocalMode, error) {
mode := config.DetectLocalMode
switch mode {

View File

@ -24,6 +24,7 @@ import (
"errors"
"fmt"
"net"
goruntime "runtime"
// Enable pprof HTTP handlers.
_ "net/http/pprof"
@ -185,6 +186,10 @@ func getProxyMode(proxyMode string, kcompat winkernel.KernelCompatTester) string
return proxyModeUserspace
}
func detectNumCPU() int {
return goruntime.NumCPU()
}
func tryWinKernelSpaceProxy(kcompat winkernel.KernelCompatTester) string {
// Check for Windows Kernel Version if we can support Kernel Space proxy
// Check for Windows Version