From 7d78fb791d362d08ac0cfd672b7f07aa547d205b Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Tue, 12 Mar 2024 17:25:31 +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: Idb4e893862c55df5e29e13ac92ed288ff573dc0c --- 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 17179571de7..bdf6d026285 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -456,7 +456,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)