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

和默认配置保持一致。

posted on 2025-04-26 12:37  王景迁  阅读(22)  评论(0)    收藏  举报

导航