@@ -112,6 +112,7 @@ func (cm *KubeClientManager) GetKubernetesClientSet(clusterID string) (*kubernet
112112 if err != nil {
113113 return nil , err
114114 }
115+ disableKeepAlive (cfg )
115116 cli , err := kubernetes .NewForConfig (cfg )
116117 if err == nil {
117118 cm .kubernetesClientSetMap .Store (clusterID , cli )
@@ -145,6 +146,7 @@ func (cm *KubeClientManager) GetKubernetesClientSet(clusterID string) (*kubernet
145146 return nil , fmt .Errorf ("failed to create kubeclient: unknown cluster type: %s" , clusterInfo .Type )
146147 }
147148
149+ disableKeepAlive (cfg )
148150 cli , err := kubernetes .NewForConfig (cfg )
149151 if err == nil {
150152 cm .kubernetesClientSetMap .Store (clusterID , cli )
@@ -166,6 +168,7 @@ func (cm *KubeClientManager) GetKruiseClient(clusterID string) (kruiseclientset.
166168 if err != nil {
167169 return nil , err
168170 }
171+ disableKeepAlive (cfg )
169172 cli , err := kruiseclientset .NewForConfig (cfg )
170173 if err == nil {
171174 cm .kruiseClientMap .Store (clusterID , cli )
@@ -198,6 +201,7 @@ func (cm *KubeClientManager) GetKruiseClient(clusterID string) (kruiseclientset.
198201 return nil , fmt .Errorf ("failed to create kruise client: unknown cluster type: %s" , clusterInfo .Type )
199202 }
200203
204+ disableKeepAlive (cfg )
201205 cli , err := kruiseclientset .NewForConfig (cfg )
202206 if err == nil {
203207 cm .kruiseClientMap .Store (clusterID , cli )
@@ -219,6 +223,7 @@ func (cm *KubeClientManager) GetKubernetesMetricsClient(clusterID string) (*metr
219223 if err != nil {
220224 return nil , err
221225 }
226+ disableKeepAlive (cfg )
222227 cli , err := metricsV1Beta1 .NewForConfig (cfg )
223228 if err == nil {
224229 cm .metricsClientMap .Store (clusterID , cli )
@@ -252,6 +257,7 @@ func (cm *KubeClientManager) GetKubernetesMetricsClient(clusterID string) (*metr
252257 return nil , fmt .Errorf ("failed to create kubeclient: unknown cluster type: %s" , clusterInfo .Type )
253258 }
254259
260+ disableKeepAlive (cfg )
255261 cli , err := metricsV1Beta1 .NewForConfig (cfg )
256262 if err == nil {
257263 cm .metricsClientMap .Store (clusterID , cli )
@@ -273,6 +279,7 @@ func (cm *KubeClientManager) GetIstioClientSet(clusterID string) (*istioClient.C
273279 if err != nil {
274280 return nil , err
275281 }
282+ disableKeepAlive (cfg )
276283 cli , err := istioClient .NewForConfig (cfg )
277284 if err == nil {
278285 cm .istioClientSetMap .Store (clusterID , cli )
@@ -306,6 +313,7 @@ func (cm *KubeClientManager) GetIstioClientSet(clusterID string) (*istioClient.C
306313 return nil , fmt .Errorf ("failed to create kubeclient: unknown cluster type: %s" , clusterInfo .Type )
307314 }
308315
316+ disableKeepAlive (cfg )
309317 cli , err := istioClient .NewForConfig (cfg )
310318 if err == nil {
311319 cm .istioClientSetMap .Store (clusterID , cli )
@@ -428,6 +436,7 @@ func (cm *KubeClientManager) GetSPDYExecutor(clusterID string, URL *url.URL) (re
428436 return nil , err
429437 }
430438
439+ disableKeepAlive (cfg )
431440 return remotecommand .NewSPDYExecutor (cfg , http .MethodPost , URL )
432441}
433442
@@ -436,7 +445,12 @@ func (cm *KubeClientManager) GetRestConfig(clusterID string) (*rest.Config, erro
436445 clusterID = handleClusterID (clusterID )
437446
438447 if clusterID == setting .LocalClusterID {
439- return rest .InClusterConfig ()
448+ cfg , err := rest .InClusterConfig ()
449+ if err != nil {
450+ return nil , err
451+ }
452+ disableKeepAlive (cfg )
453+ return cfg , nil
440454 }
441455
442456 clusterInfo , err := aslanClient .New (config .AslanServiceAddress ()).GetClusterInfo (clusterID )
@@ -461,6 +475,7 @@ func (cm *KubeClientManager) GetRestConfig(clusterID string) (*rest.Config, erro
461475 return nil , fmt .Errorf ("failed to create kubeclient: unknown cluster type: %s" , clusterInfo .Type )
462476 }
463477
478+ disableKeepAlive (cfg )
464479 return cfg , err
465480}
466481
@@ -503,7 +518,9 @@ func (cm *KubeClientManager) getControllerRuntimeCluster(clusterID string) (cont
503518 }
504519
505520 if clusterID == setting .LocalClusterID {
506- controllerClient , err := createControllerRuntimeCluster (ctrl .GetConfigOrDie ())
521+ cfg := ctrl .GetConfigOrDie ()
522+ disableKeepAlive (cfg )
523+ controllerClient , err := createControllerRuntimeCluster (cfg )
507524 if err == nil {
508525 go func () {
509526 if err := controllerClient .Start (stopContext ); err != nil {
@@ -544,6 +561,7 @@ func (cm *KubeClientManager) getControllerRuntimeCluster(clusterID string) (cont
544561 return nil , fmt .Errorf ("failed to create kubeclient: unknown cluster type: %s" , clusterInfo .Type )
545562 }
546563
564+ disableKeepAlive (cfg )
547565 controllerClient , err := createControllerRuntimeCluster (cfg )
548566 if err == nil {
549567 go func () {
@@ -615,3 +633,14 @@ func createControllerRuntimeCluster(restConfig *rest.Config) (controllerRuntimeC
615633func generateInformerKey (clusterID , namespace string ) string {
616634 return fmt .Sprintf (setting .InformerNamingConvention , clusterID , namespace )
617635}
636+
637+ // disableKeepAlive configures REST config to not keep connections alive
638+ func disableKeepAlive (cfg * rest.Config ) {
639+ // Use WrapTransport instead of directly setting Transport to avoid conflicts with TLS configuration
640+ cfg .WrapTransport = func (rt http.RoundTripper ) http.RoundTripper {
641+ if transport , ok := rt .(* http.Transport ); ok {
642+ transport .DisableKeepAlives = true
643+ }
644+ return rt
645+ }
646+ }
0 commit comments