diff --git a/controller.go b/controller.go index 13a5c33a..59c0035a 100644 --- a/controller.go +++ b/controller.go @@ -21,6 +21,8 @@ import ( "fmt" "time" + "golang.org/x/time/rate" + appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" @@ -103,6 +105,10 @@ func NewController( eventBroadcaster.StartStructuredLogging(0) eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: kubeclientset.CoreV1().Events("")}) recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: controllerAgentName}) + ratelimiter := workqueue.NewMaxOfRateLimiter( + workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second), + &workqueue.BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(50), 300)}, + ) controller := &Controller{ kubeclientset: kubeclientset, @@ -111,7 +117,7 @@ func NewController( deploymentsSynced: deploymentInformer.Informer().HasSynced, foosLister: fooInformer.Lister(), foosSynced: fooInformer.Informer().HasSynced, - workqueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Foos"), + workqueue: workqueue.NewRateLimitingQueue(ratelimiter), recorder: recorder, } diff --git a/go.mod b/go.mod index c49415f8..7b8e3ef5 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +5,11 @@ module k8s.io/sample-controller go 1.20 require ( - k8s.io/api v0.0.0-20231020231154-1535dfa58aa1 - k8s.io/apimachinery v0.0.0-20231020230052-c047e325a432 - k8s.io/client-go v0.0.0-20231020232414-33d14001dbdf - k8s.io/code-generator v0.0.0-20231020225210-8e641d9e6730 + golang.org/x/time v0.3.0 + k8s.io/api v0.0.0-20231024171239-3942070de4fb + k8s.io/apimachinery v0.0.0-20231024171030-c18d2bfed439 + k8s.io/client-go v0.0.0-20231024171543-e2e59f3539ef + k8s.io/code-generator v0.0.0-20231024034032-0f8102fa0710 k8s.io/klog/v2 v2.100.1 ) @@ -42,7 +43,6 @@ require ( golang.org/x/sys v0.13.0 // indirect golang.org/x/term v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect - golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.12.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.31.0 // indirect @@ -58,8 +58,8 @@ require ( ) replace ( - k8s.io/api => k8s.io/api v0.0.0-20231020231154-1535dfa58aa1 - k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20231020230052-c047e325a432 - k8s.io/client-go => k8s.io/client-go v0.0.0-20231020232414-33d14001dbdf - k8s.io/code-generator => k8s.io/code-generator v0.0.0-20231020225210-8e641d9e6730 + k8s.io/api => k8s.io/api v0.0.0-20231024171239-3942070de4fb + k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20231024171030-c18d2bfed439 + k8s.io/client-go => k8s.io/client-go v0.0.0-20231024171543-e2e59f3539ef + k8s.io/code-generator => k8s.io/code-generator v0.0.0-20231024034032-0f8102fa0710 ) diff --git a/go.sum b/go.sum index a937de35..8a60bcec 100644 --- a/go.sum +++ b/go.sum @@ -143,14 +143,14 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.0.0-20231020231154-1535dfa58aa1 h1:qfLikakw9JxZoptlrycHCEd9rcAGdLMTg9ulMi0VrD0= -k8s.io/api v0.0.0-20231020231154-1535dfa58aa1/go.mod h1:mgYOiLIgrQcsuVxrBI6Pplk91r3sl5ZJ7eUx7UBMTkY= -k8s.io/apimachinery v0.0.0-20231020230052-c047e325a432 h1:TWovhSGZGPhiGaOsd06sIch/R3NwKrbnIj5leHo2OCM= -k8s.io/apimachinery v0.0.0-20231020230052-c047e325a432/go.mod h1:mdlGhJWO1mhVzQXm1Lx7D1BvvBIVKlRVy0vvl1LwGjg= -k8s.io/client-go v0.0.0-20231020232414-33d14001dbdf h1:GJG6EGnZ6Ocj4qCt0aVzikRHpo4kPtWczmNwDAyYlwU= -k8s.io/client-go v0.0.0-20231020232414-33d14001dbdf/go.mod h1:cGKZU0AgAp5L8ls5J81lefSUNjdEuDx73470sVI5EsQ= -k8s.io/code-generator v0.0.0-20231020225210-8e641d9e6730 h1:iuqEDXZSNaMw18oW+ioa8vW4VGAf7Mfq5+nU/i93flM= -k8s.io/code-generator v0.0.0-20231020225210-8e641d9e6730/go.mod h1:/CGhp0Jozfk+y1sMN+kE6kuLCzqCijporZeTaOl6kPM= +k8s.io/api v0.0.0-20231024171239-3942070de4fb h1:W3TExF0X+3mCONMf4XRR57TeKOolwMJjmzRsN6iVhSo= +k8s.io/api v0.0.0-20231024171239-3942070de4fb/go.mod h1:2u+JqiZkR4vuonY52HtvoOIEYMD6aNQHYL9GacJGfJE= +k8s.io/apimachinery v0.0.0-20231024171030-c18d2bfed439 h1:/oxbLzC7mkHNdeFI8AMsTPTwudQu7sz7rnPGIxv2yqM= +k8s.io/apimachinery v0.0.0-20231024171030-c18d2bfed439/go.mod h1:mdlGhJWO1mhVzQXm1Lx7D1BvvBIVKlRVy0vvl1LwGjg= +k8s.io/client-go v0.0.0-20231024171543-e2e59f3539ef h1:dx12CsKyk2cct0NtF7fHMX8cOzb1uJhI5wn2sQDpr60= +k8s.io/client-go v0.0.0-20231024171543-e2e59f3539ef/go.mod h1:3HC2qEcjQxIt5UW1R7vC5RX2sf/wkRWovfAEPkbmPxA= +k8s.io/code-generator v0.0.0-20231024034032-0f8102fa0710 h1:/n8aWASatCDLi7jUFBieHsdYbq2nwxhrt8FBoLIub4o= +k8s.io/code-generator v0.0.0-20231024034032-0f8102fa0710/go.mod h1:/CGhp0Jozfk+y1sMN+kE6kuLCzqCijporZeTaOl6kPM= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=