来自 CronJob 的"kubectl create job"失败,"error: unknown object type *v1beta1.CronJob"



我有一个Kubernetes集群,有以下版本:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.1", GitCommit:"632ed300f2c34f6d6d15ca4cef3d3c7073412212", GitTreeState:"clean", BuildDate:"2021-08-19T15:38:26Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.13", GitCommit:"aac5f64a5218b0b1d0138a57d273a12db99390c9", GitTreeState:"clean", BuildDate:"2021-01-18T07:43:30Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version difference between client (1.22) and server (1.16) exceeds the supported minor version skew of +/-1

我有一个CronJob在我的Kubernetes集群。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: abc-cronjob
namespace: abc-namespace
...

Kubernetes集群识别cron作业的api资源。

$ kubectl -n abc-namespace api-resources
NAME                              SHORTNAMES   APIVERSION                        NAMESPACED   KIND
...
cronjobs                          cj           batch/v1beta1                     true         CronJob
...

我正在尝试为此创建一个手动作业,但我面临这个错误:

$ kubectl -n abc-namespace create job abc-job --from=cronjob/abc-cronjob
error: unknown object type *v1beta1.CronJob

有人能帮忙吗?

现在知道问题了。版本差异导致了主要问题。安装与服务器端版本匹配的版本,并再次运行查询,没有问题。

降级客户端"对v1.16或者将服务器端k8s集群升级到v1.22

您正在使用的用于CronJobs的API版本(batch/v1beta1)不再有效。

从客户端版本v1.25开始,对CronJob使用以下命令:

apiVersion: batch/v1

参考:https://kubernetes.io/docs/reference/using-api/deprecation-guide/cronjob-v125

批/v1beta1CronJob的API版本从v1.25开始不再提供。


  • 迁移清单和API客户端以使用批处理/v1API版本,从v1.21开始可用。

在我的例子中,我必须使用的kubernetes服务器非常旧。太旧了,我根本无法在我的机器上运行匹配版本的kubectl。我转而使用docker。

docker run --rm  -v /path/to/.kube/:/.kube/ 
bitnami/kubectl:1.11.9 
<insert kubectl command here>

相关内容

  • 没有找到相关文章

最新更新