Kubernetes v1.16.7的CronJob数量超过20k且不执行

问题描述

我正在使用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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...