Skip to content

Commit

Permalink
Adding config for event filtering
Browse files Browse the repository at this point in the history
CA Scalability improvement by throttling number of events
fired in the case where there are a lot of unschedulable
pods.
  • Loading branch information
vivekbagade committed Jun 28, 2019
1 parent a173ea1 commit 6601bf0
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion cluster-autoscaler/utils/kubernetes/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,31 @@ import (
"k8s.io/klog"
)

const (
// Rate of refill for the event spam filter in client go
// 1 per event key per 5 minutes.
defaultQPS = 1. / 300.
// Number of events allowed per event key before rate limiting is triggered
// Has to greater than or equal to 1.
defaultBurstSize = 1
// Number of distinct event keys in the rate limiting cache.
defaultLRUCache = 8192
)

// CreateEventRecorder creates an event recorder to send custom events to Kubernetes to be recorded for targeted Kubernetes objects
func CreateEventRecorder(kubeClient clientset.Interface) kube_record.EventRecorder {
eventBroadcaster := kube_record.NewBroadcaster()
eventBroadcaster := kube_record.NewBroadcasterWithCorrelatorOptions(getCorrelationOptions())
eventBroadcaster.StartLogging(klog.V(4).Infof)
if _, isfake := kubeClient.(*fake.Clientset); !isfake {
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: v1core.New(kubeClient.CoreV1().RESTClient()).Events("")})
}
return eventBroadcaster.NewRecorder(scheme.Scheme, clientv1.EventSource{Component: "cluster-autoscaler"})
}

func getCorrelationOptions() kube_record.CorrelatorOptions {
return kube_record.CorrelatorOptions{
QPS: defaultQPS,
BurstSize: defaultBurstSize,
LRUCacheSize: defaultLRUCache,
}
}

0 comments on commit 6601bf0

Please sign in to comment.