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
This commit is contained in:
Antonio Ojea 2024-03-12 17:25:31 +00:00
parent c37e14364c
commit 7d78fb791d

View File

@ -456,7 +456,11 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
var serviceLister corelisters.ServiceLister var serviceLister corelisters.ServiceLister
var serviceHasSynced cache.InformerSynced var serviceHasSynced cache.InformerSynced
if kubeDeps.KubeClient != nil { 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() serviceLister = kubeInformers.Core().V1().Services().Lister()
serviceHasSynced = kubeInformers.Core().V1().Services().Informer().HasSynced serviceHasSynced = kubeInformers.Core().V1().Services().Informer().HasSynced
kubeInformers.Start(wait.NeverStop) kubeInformers.Start(wait.NeverStop)