@@ -38,11 +38,13 @@ import (
3838
3939 "github.com/kubernetes-csi/csi-lib-utils/standardflags"
4040 "go.uber.org/zap/zapcore"
41+ corev1 "k8s.io/api/core/v1"
4142 "k8s.io/apimachinery/pkg/runtime"
4243 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
4344 "k8s.io/client-go/kubernetes"
4445 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
4546 ctrl "sigs.k8s.io/controller-runtime"
47+ "sigs.k8s.io/controller-runtime/pkg/client"
4648 "sigs.k8s.io/controller-runtime/pkg/controller"
4749 "sigs.k8s.io/controller-runtime/pkg/healthz"
4850 "sigs.k8s.io/controller-runtime/pkg/log/zap"
@@ -178,6 +180,19 @@ func main() {
178180 Port : 9443 ,
179181 TLSOpts : tlsOpts ,
180182 }),
183+ Client : client.Options {
184+ Cache : & client.CacheOptions {
185+ DisableFor : []client.Object {
186+ // Pods are fetched by the CSIAddonsNode controller
187+ // Since we do not do this frequently the cache for it can be disabled
188+ // This benefits us a lot as there can be a large number of pods that are present in the cache
189+ & corev1.Pod {},
190+ // Namespaces are fetched by the old PVC reconciler
191+ // TODO: Remove this when the reconciler is phased out
192+ & corev1.Namespace {},
193+ },
194+ },
195+ },
181196 })
182197 if err != nil {
183198 setupLog .Error (err , "unable to start manager" )
@@ -223,14 +238,26 @@ func main() {
223238 setupLog .Error (err , "unable to create controller" , "controller" , "ReclaimSpaceCronJob" )
224239 os .Exit (1 )
225240 }
226- if err = (& controllers.PersistentVolumeClaimReconciler {
227- Client : mgr .GetClient (),
228- Scheme : mgr .GetScheme (),
229- ConnPool : connPool ,
230- SchedulePrecedence : cfg .SchedulePrecedence ,
231- }).SetupWithManager (mgr , ctrlOptions ); err != nil {
232- setupLog .Error (err , "unable to create controller" , "controller" , "PersistentVolumeClaim" )
233- os .Exit (1 )
241+ if cfg .SchedulePrecedence == util .ScheduleSC {
242+ setupLog .Info ("Using new PVC controller for precedence" , "schedulePrecedence" , cfg .SchedulePrecedence )
243+ if err = (& controllers.PVCReconiler {
244+ Client : mgr .GetClient (),
245+ Scheme : mgr .GetScheme (),
246+ ConnPool : connPool ,
247+ }).SetupWithManager (mgr , ctrlOptions ); err != nil {
248+ setupLog .Error (err , "unable to create controller" , "controller" , "PersistentVolumeClaim" )
249+ os .Exit (1 )
250+ }
251+ } else {
252+ if err = (& controllers.PersistentVolumeClaimReconciler {
253+ Client : mgr .GetClient (),
254+ Scheme : mgr .GetScheme (),
255+ ConnPool : connPool ,
256+ SchedulePrecedence : cfg .SchedulePrecedence ,
257+ }).SetupWithManager (mgr , ctrlOptions ); err != nil {
258+ setupLog .Error (err , "unable to create controller" , "controller" , "PersistentVolumeClaim" )
259+ os .Exit (1 )
260+ }
234261 }
235262 if err = (& replicationController.VolumeReplicationReconciler {
236263 Client : mgr .GetClient (),
0 commit comments