mirror of https://github.com/k3s-io/k3s
Wait for kubelet to update the Ready status before reading port
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>pull/7105/head
parent
abda53075e
commit
9360022bbe
|
@ -41,6 +41,7 @@ type agentTunnel struct {
|
||||||
ports map[string]bool
|
ports map[string]bool
|
||||||
mode string
|
mode string
|
||||||
kubeletPort string
|
kubeletPort string
|
||||||
|
startTime time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
// explicit interface check
|
// explicit interface check
|
||||||
|
@ -76,8 +77,8 @@ func Setup(ctx context.Context, config *daemonconfig.Node, proxy proxy.Proxy) er
|
||||||
cidrs: cidranger.NewPCTrieRanger(),
|
cidrs: cidranger.NewPCTrieRanger(),
|
||||||
ports: map[string]bool{},
|
ports: map[string]bool{},
|
||||||
mode: config.EgressSelectorMode,
|
mode: config.EgressSelectorMode,
|
||||||
|
|
||||||
kubeletPort: fmt.Sprint(ports.KubeletPort),
|
kubeletPort: fmt.Sprint(ports.KubeletPort),
|
||||||
|
startTime: time.Now().Truncate(time.Second),
|
||||||
}
|
}
|
||||||
|
|
||||||
apiServerReady := make(chan struct{})
|
apiServerReady := make(chan struct{})
|
||||||
|
@ -154,15 +155,25 @@ func (a *agentTunnel) setKubeletPort(ctx context.Context, apiServerReady <-chan
|
||||||
<-apiServerReady
|
<-apiServerReady
|
||||||
|
|
||||||
wait.PollImmediateWithContext(ctx, time.Second, util.DefaultAPIServerReadyTimeout, func(ctx context.Context) (bool, error) {
|
wait.PollImmediateWithContext(ctx, time.Second, util.DefaultAPIServerReadyTimeout, func(ctx context.Context) (bool, error) {
|
||||||
|
var readyTime metav1.Time
|
||||||
nodeName := os.Getenv("NODE_NAME")
|
nodeName := os.Getenv("NODE_NAME")
|
||||||
node, err := a.client.CoreV1().Nodes().Get(ctx, nodeName, metav1.GetOptions{})
|
node, err := a.client.CoreV1().Nodes().Get(ctx, nodeName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Debugf("Tunnel authorizer failed to get Kubelet Port: %v", err)
|
logrus.Debugf("Tunnel authorizer failed to get Kubelet Port: %v", err)
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
for _, cond := range node.Status.Conditions {
|
||||||
|
if cond.Type == v1.NodeReady && cond.Status == v1.ConditionTrue {
|
||||||
|
readyTime = cond.LastHeartbeatTime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if readyTime.Time.Before(a.startTime) {
|
||||||
|
logrus.Debugf("Waiting for Ready condition to be updated for Kubelet Port assignment")
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
kubeletPort := strconv.FormatInt(int64(node.Status.DaemonEndpoints.KubeletEndpoint.Port), 10)
|
kubeletPort := strconv.FormatInt(int64(node.Status.DaemonEndpoints.KubeletEndpoint.Port), 10)
|
||||||
if kubeletPort == "0" {
|
if kubeletPort == "0" {
|
||||||
logrus.Debugf("Waiting for the kubelet port to be populated")
|
logrus.Debugf("Waiting for Kubelet Port to be set")
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
a.kubeletPort = kubeletPort
|
a.kubeletPort = kubeletPort
|
||||||
|
|
Loading…
Reference in New Issue