EKS 1.21集群手动触发CronJob报batch/v1无CronJob类型错误如何解决
问题根因
报错核心原因是kubectl客户端版本与EKS服务端版本不匹配导致的资源版本识别异常:
- Kubernetes 1.21 正式将CronJob资源从
batch/v1beta1升级为GA版本batch/v1 - 你当前使用的v1.20.2版本kubectl内置的资源schema中,未注册
batch/v1版本的CronJob资源类型,无法识别服务端已经使用的GA版本CronJob - 该场景不符合Kubernetes官方版本 skew 政策要求:kubectl客户端和服务端版本差不能超过1个小版本,且建议客户端版本不低于服务端版本
解决方案
方案1(推荐):升级kubectl客户端到匹配EKS服务端的版本
将本地kubectl客户端升级到v1.21.x版本(建议和服务端v1.21.2一致),升级后即可正常执行对应命令:
- 升级后验证版本:
kubectl version --short
- 再次执行原命令即可成功触发任务:
kubectl create job --from=cronjob/elt-dim-customer-new test-1 -n dwh-dev
方案2(临时兼容方案,无需升级kubectl)
如果暂时无法升级kubectl客户端,可通过两种方式绕过限制:
- 方式一:指定CronJob的旧版本API组触发
kubectl create job --from=cronjob.batch/v1beta1/elt-dim-customer-new test-1 -n dwh-dev
- 方式二:手动导出CronJob的
jobTemplate配置,调整为Job资源定义后直接创建
内容的提问来源于stack exchange,提问作者jrz
相关产品推荐
相关产品推荐

