@@ -36,10 +36,13 @@ import (
3636 genericapiserver "k8s.io/apiserver/pkg/server"
3737 openapispec "k8s.io/kube-openapi/pkg/validation/spec"
3838 coreclient "k8s.io/client-go/kubernetes/typed/core/v1"
39+ "k8s.io/client-go/metadata"
40+ "k8s.io/client-go/metadata/metadatainformer"
3941 customexternalmetrics "sigs.k8s.io/custom-metrics-apiserver/pkg/apiserver"
4042 "sigs.k8s.io/custom-metrics-apiserver/pkg/provider"
4143
4244 "k8s.io/apimachinery/pkg/labels"
45+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
4346 "k8s.io/apimachinery/pkg/version"
4447 "k8s.io/component-base/logs"
4548 "k8s.io/klog"
@@ -52,6 +55,7 @@ import (
5255)
5356
5457const (
58+ defaultResync = 0
5559 defaultExternalMetricsCacheSize = 300
5660 // This is only metric info and likely to be much smaller than separate metrics of each kind above
5761 defaultMetricKindCacheSize = 25
@@ -167,16 +171,29 @@ func (sa *StackdriverAdapter) withCoreMetrics(translator *translator.Translator)
167171 return err
168172 }
169173
170- podInformer , nil := informers . ForResource ( corev1 . SchemeGroupVersion . WithResource ( "pods" ) )
174+ config , err := sa . ClientConfig ( )
171175 if err != nil {
172176 return err
173177 }
178+ metadataClient , err := metadata .NewForConfig (config )
179+ if err != nil {
180+ return err
181+ }
182+ metadataInformers := metadatainformer .NewFilteredSharedInformerFactory (metadataClient , defaultResync , corev1 .NamespaceAll , func (options * metav1.ListOptions ) {
183+ options .FieldSelector = "status.phase=Running"
184+ })
185+ podInformer := metadataInformers .ForResource (corev1 .SchemeGroupVersion .WithResource ("pods" ))
174186
175187 nodes := informers .Core ().V1 ().Nodes ()
176188 if err := api .Install (provider , podInformer .Lister (), nodes .Lister (), server .GenericAPIServer , []labels.Requirement {}); err != nil {
177189 return err
178190 }
179191
192+ server .GenericAPIServer .AddPostStartHookOrDie ("custom-metrics-stackdriver-adapter-metadata-informer" , func (context genericapiserver.PostStartHookContext ) error {
193+ metadataInformers .Start (context .Done ())
194+ return nil
195+ })
196+
180197 return nil
181198}
182199
0 commit comments