Kubernetes v1.16.7 CronJob数量超过20k+;不要执行

Kubernetes v1.16.7 CronJob数量超过20k+;不要执行,kubernetes,microservices,kubernetes-cronjob,Kubernetes,Microservices,Kubernetes Cronjob,我使用的是Kubernetes v1.16.7 客户端版本:Version.Info{Major:“1”,Minor:“16”,GitVersion:“v1.16.3”,GitCommit:“b3cbbae08ec52a7fc73d334838e18d17e8512749”,GitRestate:“clean”,BuildDate:“2019-11-13T11:23:11Z”,政府版本:“go1.12.12”,编译器:“gc”,平台:“windows/amd64”} 服务器版本:Version.

我使用的是Kubernetes v1.16.7

客户端版本:Version.Info{Major:“1”,Minor:“16”,GitVersion:“v1.16.3”,GitCommit:“b3cbbae08ec52a7fc73d334838e18d17e8512749”,GitRestate:“clean”,BuildDate:“2019-11-13T11:23:11Z”,政府版本:“go1.12.12”,编译器:“gc”,平台:“windows/amd64”}
服务器版本:Version.Info{Major:“1”,Minor:“16”,GitVersion:“v1.16.7”,GitCommit:“be3d344ed06bff7a4fc60656200a93c74f31f9a4”,gittrestate:“clean”,BuildDate:“2020-02-11T19:24:46Z”,政府版本:“go1.13.6”,编译器:“gc”,平台:“linux/amd64”}
我发现集群中的许多cronjob没有正确执行。 登录控制器管理器是:

E0826 11:26:45.441592 1 cronjob_controller.go:146]无法提取cronJobs列表:提供的continue参数太旧,无法显示一致的列表结果。您可以在不使用continue参数的情况下启动新列表,或者在此响应中使用continue标记来检索其余结果。继续使用提供的标记会导致不一致的列表—在返回第一个块时创建、修改或删除的对象,现在可能会显示在列表中

我在kubernetes中阅读了cronjob的代码,这个错误是关于:

klog.V(4).Infof(“找到%d组”,len(jobsByCj))
err=pager.New(pager.SimplePageFunc(cronJobListFunc))。
EachListItem(context.Background(),metav1.ListOptions{},func(object runtime.object)错误{
cj,ok:=对象。(*batchv1beta1.CronJob)
如果!好的{
返回fmt.Errorf(“预期类型*batchv1beta1.CronJob,获取类型%T”,cj)
}
syncOne(cj,jobsByCj[cj.UID],time.Now(),jm.jobControl,jm.cjControl,jm.recorder)
清理完成DJOBS(cj,jobsByCj[cj.UID],jm.jobControl,jm.cjControl,jm.recorder)
归零
})
如果出错!=零{
utilruntime.HandleError(fmt.Errorf(“未能提取cronJobs列表:%v”,错误))
返回
}
它可能与此页相关

看起来,如果cronjob&job的数量太多(20k+),将花费大量时间,并且关于continue参数的令牌将过期


我想知道cron作业的数量是否会导致此错误,以及如何解决它?

只是出于好奇,您有多少个作业?我以为我们的集群中有很多,但我们甚至还没有接近20k。嗨,ewramner,我们有20668个cronjobs和相同数量的job。当我阅读代码时,我删除了所有的job并更新了cronjob.spec.successhistorylimit:)当您执行某些操作时,或者只是在控制器管理器中返回错误?我将尝试在这里复制创建2万个cronjobs,很快就会回来。嗨,KoopaKiller,创建cronjob是可以的。我想controller manager会检查cronjobs的计划以创建作业,可能会发生错误。@KoopaKiller嗨KoopaKiller,当我将cronjob的计数减少到2653时,一切看起来都正常,kubeapi服务器中的错误消失了。只是出于好奇,你有多少个作业?我以为我们的集群中有很多,但我们甚至还没有接近20k。嗨,ewramner,我们有20668个cronjobs和相同数量的job。当我阅读代码时,我删除了所有的job并更新了cronjob.spec.successhistorylimit:)当您执行某些操作时,或者只是在控制器管理器中返回错误?我将尝试在这里复制创建2万个cronjobs,很快就会回来。嗨,KoopaKiller,创建cronjob是可以的。我想控制器管理器会检查cronjobs的时间表来创建作业,可能会发生错误。@KoopaKiller嗨,KoopaKiller,当我将cronjob的计数减少到2653时,一切看起来都正常,kubeapi服务器中的错误消失了。