Skip to content

Commit 1137032

Browse files
authored
Fix k8s watcher issue when node access to list nodes and ns (#22714)
1 parent 144e94b commit 1137032

3 files changed

Lines changed: 19 additions & 10 deletions

File tree

libbeat/autodiscover/providers/kubernetes/pod.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,13 @@ func NewPodEventer(uuid uuid.UUID, cfg *common.Config, client k8s.Interface, pub
8888
}
8989
nodeWatcher, err := kubernetes.NewWatcher(client, &kubernetes.Node{}, options, nil)
9090
if err != nil {
91-
return nil, fmt.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Node{}, err)
91+
logger.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Node{}, err)
9292
}
9393
namespaceWatcher, err := kubernetes.NewWatcher(client, &kubernetes.Namespace{}, kubernetes.WatchOptions{
9494
SyncTimeout: config.SyncPeriod,
9595
}, nil)
9696
if err != nil {
97-
return nil, fmt.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Namespace{}, err)
97+
logger.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Namespace{}, err)
9898
}
9999
metaGen := metadata.GetPodMetaGen(cfg, watcher, nodeWatcher, namespaceWatcher, metaConf)
100100

libbeat/common/kubernetes/metadata/metadata.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,13 @@ func GetPodMetaGen(
6060
namespaceWatcher kubernetes.Watcher,
6161
metaConf *AddResourceMetadataConfig) MetaGen {
6262

63-
nodeMetaGen := NewNodeMetadataGenerator(metaConf.Node, nodeWatcher.Store())
64-
namespaceMetaGen := NewNamespaceMetadataGenerator(metaConf.Namespace, namespaceWatcher.Store())
63+
var nodeMetaGen, namespaceMetaGen MetaGen
64+
if nodeWatcher != nil {
65+
nodeMetaGen = NewNodeMetadataGenerator(metaConf.Node, nodeWatcher.Store())
66+
}
67+
if namespaceWatcher != nil {
68+
namespaceMetaGen = NewNamespaceMetadataGenerator(metaConf.Namespace, namespaceWatcher.Store())
69+
}
6570
metaGen := NewPodMetadataGenerator(cfg, podWatcher.Store(), nodeMetaGen, namespaceMetaGen)
6671

6772
return metaGen

libbeat/processors/add_kubernetes_metadata/kubernetes.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,17 @@ func (k *kubernetesAnnotator) init(config kubeAnnotatorConfig, cfg *common.Confi
220220

221221
// NOTE: order is important here since pod meta will include node meta and hence node.Store() should
222222
// be populated before trying to generate metadata for Pods.
223-
if err := nodeWatcher.Start(); err != nil {
224-
k.log.Debugf("add_kubernetes_metadata", "Couldn't start node watcher: %v", err)
225-
return
223+
if nodeWatcher != nil {
224+
if err := nodeWatcher.Start(); err != nil {
225+
k.log.Debugf("add_kubernetes_metadata", "Couldn't start node watcher: %v", err)
226+
return
227+
}
226228
}
227-
if err := namespaceWatcher.Start(); err != nil {
228-
k.log.Debugf("add_kubernetes_metadata", "Couldn't start namespace watcher: %v", err)
229-
return
229+
if namespaceWatcher != nil {
230+
if err := namespaceWatcher.Start(); err != nil {
231+
k.log.Debugf("add_kubernetes_metadata", "Couldn't start namespace watcher: %v", err)
232+
return
233+
}
230234
}
231235
if err := watcher.Start(); err != nil {
232236
k.log.Debugf("add_kubernetes_metadata", "Couldn't start pod watcher: %v", err)

0 commit comments

Comments
 (0)