Skip to content

Commit 5b099c5

Browse files
black-dragon74mergify[bot]
authored andcommitted
manager: Disable cache for Pods, NS and enabled new PVC controller
when SchedulePrecedence is set to `StorageClass` Signed-off-by: Niraj Yadav <niryadav@redhat.com>
1 parent c6b335f commit 5b099c5

File tree

1 file changed

+35
-8
lines changed

1 file changed

+35
-8
lines changed

cmd/manager/main.go

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)