m/n/kubernetes/{clusternet,nfproxy}: log informer errors
Change-Id: I9ea1444c7042dd25c25cecc6b6da054554010a85
Reviewed-on: https://review.monogon.dev/c/monogon/+/1447
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/kubernetes/clusternet/clusternet.go b/metropolis/node/kubernetes/clusternet/clusternet.go
index 3cf2535..3c86361 100644
--- a/metropolis/node/kubernetes/clusternet/clusternet.go
+++ b/metropolis/node/kubernetes/clusternet/clusternet.go
@@ -247,6 +247,9 @@
}
nodeInformer := s.InformerFactory.Core().V1().Nodes()
+ nodeInformer.Informer().SetWatchErrorHandler(func(_ *cache.Reflector, err error) {
+ supervisor.Logger(ctx).Errorf("node informer watch error: %v", err)
+ })
nodeInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
AddFunc: func(new interface{}) {
newNode, ok := new.(*corev1.Node)
diff --git a/metropolis/node/kubernetes/nfproxy/BUILD.bazel b/metropolis/node/kubernetes/nfproxy/BUILD.bazel
index e8dce41..539516a 100644
--- a/metropolis/node/kubernetes/nfproxy/BUILD.bazel
+++ b/metropolis/node/kubernetes/nfproxy/BUILD.bazel
@@ -17,6 +17,7 @@
"@io_k8s_client_go//informers",
"@io_k8s_client_go//kubernetes",
"@io_k8s_client_go//kubernetes/scheme",
+ "@io_k8s_client_go//tools/cache",
"@io_k8s_client_go//tools/record",
],
)
diff --git a/metropolis/node/kubernetes/nfproxy/nfproxy.go b/metropolis/node/kubernetes/nfproxy/nfproxy.go
index 5fcc5b5..c07b291 100644
--- a/metropolis/node/kubernetes/nfproxy/nfproxy.go
+++ b/metropolis/node/kubernetes/nfproxy/nfproxy.go
@@ -37,6 +37,7 @@
kubeinformers "k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
+ "k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"source.monogon.dev/metropolis/pkg/supervisor"
@@ -90,8 +91,17 @@
options.LabelSelector = labelSelector.String()
}))
- svcController := controller.NewServiceController(nfproxy, s.ClientSet, kubeInformerFactory.Core().V1().Services())
- ep := controller.NewEndpointSliceController(nfproxy, s.ClientSet, kubeInformerFactory.Discovery().V1beta1().EndpointSlices())
+ endpointSlicesInformer := kubeInformerFactory.Discovery().V1beta1().EndpointSlices()
+ endpointSlicesInformer.Informer().SetWatchErrorHandler(func(_ *cache.Reflector, err error) {
+ supervisor.Logger(ctx).Errorf("endpoint slices watch error: %v", err)
+ })
+ servicesInformer := kubeInformerFactory.Core().V1().Services()
+ servicesInformer.Informer().SetWatchErrorHandler(func(_ *cache.Reflector, err error) {
+ supervisor.Logger(ctx).Errorf("service informer watch error: %v", err)
+ })
+
+ svcController := controller.NewServiceController(nfproxy, s.ClientSet, servicesInformer)
+ ep := controller.NewEndpointSliceController(nfproxy, s.ClientSet, endpointSlicesInformer)
kubeInformerFactory.Start(ctx.Done())
if err = svcController.Start(ctx.Done()); err != nil {