mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #77167 from paulsubrata55/spaul-kube-proxy-fix
Fix for kube-proxy to wait for some duration for the node to be defined.
This commit is contained in:
commit
c8c9d2e21c
@ -137,6 +137,9 @@ func newProxyServer(
|
|||||||
nodeIP := net.ParseIP(config.BindAddress)
|
nodeIP := net.ParseIP(config.BindAddress)
|
||||||
if nodeIP.IsUnspecified() {
|
if nodeIP.IsUnspecified() {
|
||||||
nodeIP = utilnode.GetNodeIP(client, hostname)
|
nodeIP = utilnode.GetNodeIP(client, hostname)
|
||||||
|
if nodeIP == nil {
|
||||||
|
return nil, fmt.Errorf("unable to get node IP for hostname %s", hostname)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if proxyMode == proxyModeIPTables {
|
if proxyMode == proxyModeIPTables {
|
||||||
klog.V(0).Info("Using iptables Proxier.")
|
klog.V(0).Info("Using iptables Proxier.")
|
||||||
|
@ -16,6 +16,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes: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",
|
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
@ -31,6 +31,7 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
||||||
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||||
)
|
)
|
||||||
@ -107,17 +108,31 @@ func GetNodeHostIP(node *v1.Node) (net.IP, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetNodeIP returns the ip of node with the provided hostname
|
// GetNodeIP returns the ip of node with the provided hostname
|
||||||
|
// If required, wait for the node to be defined.
|
||||||
func GetNodeIP(client clientset.Interface, hostname string) net.IP {
|
func GetNodeIP(client clientset.Interface, hostname string) net.IP {
|
||||||
var nodeIP net.IP
|
var nodeIP net.IP
|
||||||
node, err := client.CoreV1().Nodes().Get(hostname, metav1.GetOptions{})
|
backoff := wait.Backoff{
|
||||||
if err != nil {
|
Steps: 5,
|
||||||
klog.Warningf("Failed to retrieve node info: %v", err)
|
Duration: 1 * time.Second,
|
||||||
return nil
|
Factor: 2.0,
|
||||||
|
Jitter: 0.2,
|
||||||
}
|
}
|
||||||
nodeIP, err = GetNodeHostIP(node)
|
|
||||||
if err != nil {
|
err := wait.ExponentialBackoff(backoff, func() (bool, error) {
|
||||||
klog.Warningf("Failed to retrieve node IP: %v", err)
|
node, err := client.CoreV1().Nodes().Get(hostname, metav1.GetOptions{})
|
||||||
return nil
|
if err != nil {
|
||||||
|
klog.Errorf("Failed to retrieve node info: %v", err)
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
nodeIP, err = GetNodeHostIP(node)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("Failed to retrieve node IP: %v", err)
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
})
|
||||||
|
if err == nil {
|
||||||
|
klog.Infof("Successfully retrieved node IP: %v", nodeIP)
|
||||||
}
|
}
|
||||||
return nodeIP
|
return nodeIP
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user