File tree 3 files changed +43
-1
lines changed
3 files changed +43
-1
lines changed Original file line number Diff line number Diff line change @@ -12,10 +12,10 @@ import (
12
12
"k8s.io/client-go/rest"
13
13
"k8s.io/client-go/tools/clientcmd"
14
14
"k8s.io/klog/v2"
15
+ "kubevirt.io/client-go/kubecli"
15
16
16
17
clientset "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned"
17
18
"github.com/kubeovn/kube-ovn/pkg/util"
18
- "kubevirt.io/client-go/kubecli"
19
19
)
20
20
21
21
// Configuration is the controller conf
@@ -290,6 +290,13 @@ func (config *Configuration) initKubeClient() error {
290
290
klog .Errorf ("failed to build kubeconfig %v" , err )
291
291
return err
292
292
}
293
+
294
+ // try to connect to apiserver's tcp port
295
+ if err = util .DialApiServer (cfg .Host ); err != nil {
296
+ klog .Errorf ("failed to dial apiserver: %v" , err )
297
+ return err
298
+ }
299
+
293
300
cfg .QPS = 1000
294
301
cfg .Burst = 2000
295
302
// use cmd arg to modify timeout later
Original file line number Diff line number Diff line change @@ -322,6 +322,13 @@ func (config *Configuration) initKubeClient() error {
322
322
return err
323
323
}
324
324
}
325
+
326
+ // try to connect to apiserver's tcp port
327
+ if err = util .DialApiServer (cfg .Host ); err != nil {
328
+ klog .Errorf ("failed to dial apiserver: %v" , err )
329
+ return err
330
+ }
331
+
325
332
cfg .QPS = 1000
326
333
cfg .Burst = 2000
327
334
Original file line number Diff line number Diff line change 1
1
package util
2
2
3
3
import (
4
+ "fmt"
5
+ "net"
6
+ "net/url"
4
7
"strings"
8
+ "time"
5
9
6
10
v1 "k8s.io/api/core/v1"
11
+ "k8s.io/klog/v2"
7
12
)
8
13
14
+ func DialApiServer (host string ) error {
15
+ u , err := url .Parse (host )
16
+ if err != nil {
17
+ return fmt .Errorf ("failed to parse host %q: %v" , host , err )
18
+ }
19
+
20
+ address := net .JoinHostPort (u .Hostname (), u .Port ())
21
+ timer := time .NewTimer (3 * time .Second )
22
+ for i := 0 ; i < 10 ; i ++ {
23
+ conn , err := net .DialTimeout ("tcp" , address , 3 * time .Second )
24
+ if err == nil {
25
+ klog .Infof ("succeeded to dial apiserver %q" , address )
26
+ _ = conn .Close ()
27
+ return nil
28
+ }
29
+ klog .Warningf ("failed to dial apiserver %q: %v" , address , err )
30
+ <- timer .C
31
+ timer .Reset (3 * time .Second )
32
+ }
33
+
34
+ return fmt .Errorf ("timed out dialing apiserver %q" , host )
35
+ }
36
+
9
37
func GetNodeInternalIP (node v1.Node ) (ipv4 , ipv6 string ) {
10
38
var ips []string
11
39
for _ , addr := range node .Status .Addresses {
You can’t perform that action at this time.
0 commit comments