From 5122fe07323057463b74721d4c73e0ac7ca039f6 Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Sun, 31 Dec 2023 18:31:22 +0000 Subject: [PATCH] don't watch headless services on kubelet The kubelet watches services only to generate the environment variables inside a pod, but headless services are not needed for this. Change-Id: I22ee2b3352f8fe71cddfafa6f09b768c0a0e26b4 --- pkg/kubelet/kubelet.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 2bd35b96611..a00ec548f34 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -451,7 +451,11 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, var serviceLister corelisters.ServiceLister var serviceHasSynced cache.InformerSynced if kubeDeps.KubeClient != nil { - kubeInformers := informers.NewSharedInformerFactoryWithOptions(kubeDeps.KubeClient, 0) + // don't watch headless services, they are not needed since this informer is only used to create the environment variables for pods. + // See https://issues.k8s.io/122394 + kubeInformers := informers.NewSharedInformerFactoryWithOptions(kubeDeps.KubeClient, 0, informers.WithTweakListOptions(func(options *metav1.ListOptions) { + options.FieldSelector = fields.OneTermNotEqualSelector("spec.clusterIP", v1.ClusterIPNone).String() + })) serviceLister = kubeInformers.Core().V1().Services().Lister() serviceHasSynced = kubeInformers.Core().V1().Services().Informer().HasSynced kubeInformers.Start(wait.NeverStop)