@@ -29,6 +29,7 @@ import (
29
29
nfdclientset "sigs.k8s.io/node-feature-discovery/api/generated/clientset/versioned"
30
30
nfdscheme "sigs.k8s.io/node-feature-discovery/api/generated/clientset/versioned/scheme"
31
31
nfdinformers "sigs.k8s.io/node-feature-discovery/api/generated/informers/externalversions"
32
+ nfdinformersv1alpha1 "sigs.k8s.io/node-feature-discovery/api/generated/informers/externalversions/nfd/v1alpha1"
32
33
nfdlisters "sigs.k8s.io/node-feature-discovery/api/generated/listers/nfd/v1alpha1"
33
34
nfdv1alpha1 "sigs.k8s.io/node-feature-discovery/api/nfd/v1alpha1"
34
35
"sigs.k8s.io/node-feature-discovery/pkg/utils"
@@ -67,13 +68,23 @@ func newNfdController(config *restclient.Config, nfdApiControllerOptions nfdApiC
67
68
}
68
69
69
70
nfdClient := nfdclientset .NewForConfigOrDie (config )
71
+
70
72
klog .V (2 ).InfoS ("initializing new NFD API controller" , "options" , utils .DelayedDumper (nfdApiControllerOptions ))
71
73
72
74
informerFactory := nfdinformers .NewSharedInformerFactory (nfdClient , nfdApiControllerOptions .ResyncPeriod )
73
75
74
76
// Add informer for NodeFeature objects
75
77
if ! nfdApiControllerOptions .DisableNodeFeature {
76
- featureInformer := informerFactory .Nfd ().V1alpha1 ().NodeFeatures ()
78
+ tweakListOpts := func (opts * metav1.ListOptions ) {
79
+ // Tweak list opts on initial sync to avoid timeouts on the apiserver.
80
+ // NodeFeature objects are huge and the Kubernetes apiserver
81
+ // (v1.30) experiences http handler timeouts when the resource
82
+ // version is set to some non-empty value (TODO: find out why).
83
+ if opts .ResourceVersion == "0" {
84
+ opts .ResourceVersion = ""
85
+ }
86
+ }
87
+ featureInformer := nfdinformersv1alpha1 .New (informerFactory , "" , tweakListOpts ).NodeFeatures ()
77
88
if _ , err := featureInformer .Informer ().AddEventHandler (cache.ResourceEventHandlerFuncs {
78
89
AddFunc : func (obj interface {}) {
79
90
nfr := obj .(* nfdv1alpha1.NodeFeature )
0 commit comments