@@ -30,6 +30,7 @@ import (
30
30
appsv1 "k8s.io/api/apps/v1"
31
31
corev1 "k8s.io/api/core/v1"
32
32
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
33
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33
34
"k8s.io/apimachinery/pkg/labels"
34
35
"k8s.io/apimachinery/pkg/runtime"
35
36
"k8s.io/apimachinery/pkg/selection"
@@ -341,9 +342,31 @@ func setupReconcilers(ctx context.Context, mgr ctrl.Manager) {
341
342
os .Exit (1 )
342
343
}
343
344
345
+ must := func (r * labels.Requirement , err error ) labels.Requirement {
346
+ if err != nil {
347
+ panic (err )
348
+ }
349
+ return * r
350
+ }
351
+ podSelector := labels .NewSelector ().Add (
352
+ must (labels .NewRequirement ("tier" , selection .Equals , []string {"control-plane" })),
353
+ must (labels .NewRequirement ("component" , selection .In , []string {"kube-apiserver" , "kube-controller-manager" , "kube-scheduler" , "etcd" })),
354
+ )
355
+
344
356
clusterCache , err := clustercache .SetupWithManager (ctx , mgr , clustercache.Options {
345
357
SecretClient : secretCachingClient ,
346
- Cache : clustercache.CacheOptions {},
358
+ Cache : clustercache.CacheOptions {
359
+ // Only cache kubeadm static pods
360
+ ByObject : map [client.Object ]cache.ByObject {
361
+ & corev1.Pod {}: {
362
+ Namespaces : map [string ]cache.Config {
363
+ metav1 .NamespaceSystem : {
364
+ LabelSelector : podSelector ,
365
+ },
366
+ },
367
+ },
368
+ },
369
+ },
347
370
Client : clustercache.ClientOptions {
348
371
QPS : clusterCacheClientQPS ,
349
372
Burst : clusterCacheClientBurst ,
@@ -352,7 +375,6 @@ func setupReconcilers(ctx context.Context, mgr ctrl.Manager) {
352
375
DisableFor : []client.Object {
353
376
& corev1.ConfigMap {},
354
377
& corev1.Secret {},
355
- & corev1.Pod {},
356
378
& appsv1.Deployment {},
357
379
& appsv1.DaemonSet {},
358
380
},
0 commit comments