问题描述
我正在使用Kubernetes v1.16.7
Client Version: version.Info{Major:"1",Minor:"16",GitVersion:"v1.16.3",GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749",GitTreeState:"clean",BuildDate:"2019-11-13T11:23:11Z",GoVersion:"go1.12.12",Compiler:"gc",Platform:"windows/amd64"}
Server Version: version.Info{Major:"1",GitVersion:"v1.16.7",GitCommit:"be3d344ed06bff7a4fc60656200a93c74f31f9a4",BuildDate:"2020-02-11T19:24:46Z",GoVersion:"go1.13.6",Platform:"linux/amd64"}
我发现集群中的许多cronjobs无法正确执行。 控制器管理器中的登录为:
E0826 11:26:45.441592 1 cronjob_controller.go:146]无法提取cronJobs列表:提供的continue参数太旧,无法显示一致的列表结果。您可以不使用continue参数启动新列表,也可以在此响应中使用continue令牌来检索结果的其余部分。继续使用提供的令牌会导致列表不一致-在第一个块返回之前到现在可能在列表中显示的对象之间创建,修改或删除的对象。
我在kubernetes中阅读了cronjob的代码,该错误是关于:
klog.V(4).Infof("Found %d groups",len(jobsByCj))
err = pager.New(pager.SimplePageFunc(cronJobListFunc)).
EachListItem(context.Background(),metav1.ListOptions{},func(object runtime.Object) error {
cj,ok := object.(*batchv1beta1.CronJob)
if !ok {
return fmt.Errorf("expected type *batchv1beta1.CronJob,got type %T",cj)
}
syncOne(cj,jobsByCj[cj.UID],time.Now(),jm.jobControl,jm.cjControl,jm.recorder)
cleanupFinishedJobs(cj,jm.recorder)
return nil
})
if err != nil {
utilruntime.HandleError(fmt.Errorf("Failed to extract cronJobs list: %v",err))
return
}
它可能与此页面https://kubernetes.io/docs/reference/using-api/api-concepts/#retrieving-large-results-sets-in-chunks有关。
如果cronjob和job的数量过多(超过20k),则将花费大量时间,并且有关continue参数的令牌将失效。
我想知道cron作业的数量是否导致此错误,如何解决?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)