diff --git a/cmd/kube-proxy/app/BUILD b/cmd/kube-proxy/app/BUILD index eab363f0b4..70a79a3597 100644 --- a/cmd/kube-proxy/app/BUILD +++ b/cmd/kube-proxy/app/BUILD @@ -36,7 +36,6 @@ go_library( "//pkg/util/iptables:go_default_library", "//pkg/util/ipvs:go_default_library", "//pkg/util/mount:go_default_library", - "//pkg/util/node:go_default_library", "//pkg/util/oom:go_default_library", "//pkg/util/resourcecontainer:go_default_library", "//pkg/util/sysctl:go_default_library", @@ -44,7 +43,6 @@ go_library( "//pkg/version/verflag:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/config:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", @@ -73,60 +71,70 @@ go_library( "@io_bazel_rules_go//go/platform:android": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:darwin": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:dragonfly": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:freebsd": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:nacl": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:netbsd": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:openbsd": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:plan9": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], "@io_bazel_rules_go//go/platform:solaris": [ "//pkg/proxy/metrics:go_default_library", "//pkg/util/dbus:go_default_library", + "//pkg/util/node:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", ], @@ -134,6 +142,7 @@ go_library( "//pkg/proxy/winkernel:go_default_library", "//pkg/proxy/winuserspace:go_default_library", "//pkg/util/netsh:go_default_library", + "//pkg/util/node:go_default_library", "//pkg/windows/service:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", diff --git a/cmd/kube-proxy/app/server.go b/cmd/kube-proxy/app/server.go index 7ee8e15d42..dccfc0ff17 100644 --- a/cmd/kube-proxy/app/server.go +++ b/cmd/kube-proxy/app/server.go @@ -22,7 +22,6 @@ import ( "errors" "fmt" "io/ioutil" - "net" "net/http" "os" goruntime "runtime" @@ -31,7 +30,6 @@ import ( "k8s.io/api/core/v1" apimachineryconfig "k8s.io/apimachinery/pkg/apis/config" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/runtime/serializer/json" @@ -67,7 +65,6 @@ import ( utilipset "k8s.io/kubernetes/pkg/util/ipset" utiliptables "k8s.io/kubernetes/pkg/util/iptables" utilipvs "k8s.io/kubernetes/pkg/util/ipvs" - utilnode "k8s.io/kubernetes/pkg/util/node" "k8s.io/kubernetes/pkg/util/oom" "k8s.io/kubernetes/pkg/util/resourcecontainer" "k8s.io/kubernetes/pkg/version" @@ -596,18 +593,3 @@ func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (in } return 0, nil } - -func getNodeIP(client clientset.Interface, hostname string) net.IP { - var nodeIP net.IP - node, err := client.CoreV1().Nodes().Get(hostname, metav1.GetOptions{}) - if err != nil { - glog.Warningf("Failed to retrieve node info: %v", err) - return nil - } - nodeIP, err = utilnode.GetNodeHostIP(node) - if err != nil { - glog.Warningf("Failed to retrieve node IP: %v", err) - return nil - } - return nodeIP -} diff --git a/cmd/kube-proxy/app/server_others.go b/cmd/kube-proxy/app/server_others.go index d290357994..83e359cf45 100644 --- a/cmd/kube-proxy/app/server_others.go +++ b/cmd/kube-proxy/app/server_others.go @@ -142,7 +142,7 @@ func newProxyServer( proxyMode := getProxyMode(string(config.Mode), iptInterface, kernelHandler, ipsetInterface, iptables.LinuxKernelCompatTester{}) nodeIP := net.ParseIP(config.BindAddress) if nodeIP.IsUnspecified() { - nodeIP = getNodeIP(client, hostname) + nodeIP = utilnode.GetNodeIP(client, hostname) } if proxyMode == proxyModeIPTables { glog.V(0).Info("Using iptables Proxier.") diff --git a/cmd/kube-proxy/app/server_windows.go b/cmd/kube-proxy/app/server_windows.go index 7a501ebe2b..725b0df718 100644 --- a/cmd/kube-proxy/app/server_windows.go +++ b/cmd/kube-proxy/app/server_windows.go @@ -107,7 +107,7 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, cleanupAndExi int(*config.IPTables.MasqueradeBit), config.ClusterCIDR, hostname, - getNodeIP(client, hostname), + utilnode.GetNodeIP(client, hostname), recorder, healthzUpdater, ) diff --git a/pkg/kubemark/hollow_proxy.go b/pkg/kubemark/hollow_proxy.go index 8af54ae176..dcde82c576 100644 --- a/pkg/kubemark/hollow_proxy.go +++ b/pkg/kubemark/hollow_proxy.go @@ -18,11 +18,9 @@ package kubemark import ( "fmt" - "net" "time" "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" clientset "k8s.io/client-go/kubernetes" v1core "k8s.io/client-go/kubernetes/typed/core/v1" @@ -90,7 +88,7 @@ func NewHollowProxyOrDie( 0, "10.0.0.0/8", nodeName, - getNodeIP(client, nodeName), + utilnode.GetNodeIP(client, nodeName), recorder, nil, []string{}, @@ -138,18 +136,3 @@ func (hp *HollowProxy) Run() { glog.Fatalf("Error while running proxy: %v\n", err) } } - -func getNodeIP(client clientset.Interface, hostname string) net.IP { - var nodeIP net.IP - node, err := client.CoreV1().Nodes().Get(hostname, metav1.GetOptions{}) - if err != nil { - glog.Warningf("Failed to retrieve node info: %v", err) - return nil - } - nodeIP, err = utilnode.GetNodeHostIP(node) - if err != nil { - glog.Warningf("Failed to retrieve node IP: %v", err) - return nil - } - return nodeIP -} diff --git a/pkg/util/node/BUILD b/pkg/util/node/BUILD index f07fb2f734..5a6dfba5f2 100644 --- a/pkg/util/node/BUILD +++ b/pkg/util/node/BUILD @@ -18,6 +18,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", ], ) diff --git a/pkg/util/node/node.go b/pkg/util/node/node.go index ddb29aac2b..617c242933 100644 --- a/pkg/util/node/node.go +++ b/pkg/util/node/node.go @@ -24,6 +24,8 @@ import ( "strings" "time" + "github.com/golang/glog" + "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -91,6 +93,22 @@ func GetNodeHostIP(node *v1.Node) (net.IP, error) { return nil, fmt.Errorf("host IP unknown; known addresses: %v", addresses) } +// GetNodeIP returns the ip of node with the provided hostname +func GetNodeIP(client clientset.Interface, hostname string) net.IP { + var nodeIP net.IP + node, err := client.CoreV1().Nodes().Get(hostname, metav1.GetOptions{}) + if err != nil { + glog.Warningf("Failed to retrieve node info: %v", err) + return nil + } + nodeIP, err = GetNodeHostIP(node) + if err != nil { + glog.Warningf("Failed to retrieve node IP: %v", err) + return nil + } + return nodeIP +} + // GetZoneKey is a helper function that builds a string identifier that is unique per failure-zone; // it returns empty-string for no zone. func GetZoneKey(node *v1.Node) string {