k8s限速队列重试间隔和次数
package main
import (
"time"
"k8s.io/client-go/util/workqueue"
klog "k8s.io/klog/v2"
)
func handleKey(startTime time.Time) {
klog.Infof("handle key, interval time is %fs", time.Since(startTime).Seconds())
}
func main() {
queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
queue.Add("")
startTime := time.Now()
for {
queue.Get()
handleKey(startTime)
startTime = time.Now()
queue.AddRateLimited("")
queue.Done("")
}
}
I0426 11:04:13.041338 9672 main.go:11] handle key, interval time is 0.000000s
I0426 11:04:13.057303 9672 main.go:11] handle key, interval time is 0.005214s
I0426 11:04:13.067349 9672 main.go:11] handle key, interval time is 0.010046s
I0426 11:04:13.088072 9672 main.go:11] handle key, interval time is 0.020723s
I0426 11:04:13.128267 9672 main.go:11] handle key, interval time is 0.040051s
I0426 11:04:13.208695 9672 main.go:11] handle key, interval time is 0.080428s
I0426 11:04:13.369522 9672 main.go:11] handle key, interval time is 0.160828s
I0426 11:04:13.690069 9672 main.go:11] handle key, interval time is 0.320547s
I0426 11:04:14.330295 9672 main.go:11] handle key, interval time is 0.640225s
I0426 11:04:15.610543 9672 main.go:11] handle key, interval time is 1.280248s
I0426 11:04:18.170588 9672 main.go:11] handle key, interval time is 2.560045s
I0426 11:04:23.290724 9672 main.go:11] handle key, interval time is 5.120136s
I0426 11:04:33.531061 9672 main.go:11] handle key, interval time is 10.240337s
I0426 11:04:54.011563 9672 main.go:11] handle key, interval time is 20.480502s
I0426 11:05:34.971704 9672 main.go:11] handle key, interval time is 40.960141s
I0426 11:06:56.892050 9672 main.go:11] handle key, interval time is 81.920199s
I0426 11:09:40.732376 9672 main.go:11] handle key, interval time is 163.840326s
I0426 11:15:08.412629 9672 main.go:11] handle key, interval time is 327.680252s
I0426 11:26:03.773647 9672 main.go:11] handle key, interval time is 655.360918s
I0426 11:42:43.773831 9672 main.go:11] handle key, interval time is 1000.000184s
I0426 11:59:23.774247 9672 main.go:11] handle key, interval time is 1000.000416s
I0426 12:16:03.774917 9672 main.go:11] handle key, interval time is 1000.000533s
I0426 12:32:43.775691 9672 main.go:11] handle key, interval time is 1000.000774s
重试间隔(最高1000s,一直重试)
5ms -> 10ms -> 20ms -> ... -> 1000s -> 1000s -> 1000s
和默认配置保持一致。