"kubectl create job"从CronJob失败,显示错误信息:"error: unknown object type *v1beta1.CronJob"。

29

我有一个 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

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

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

Kubernetes集群识别定时任务的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

有人能帮忙吗?

4个回答

20

现在问题已经解决了。版本差异是造成主要问题的原因。安装与服务器端相匹配的版本后,再次运行查询,没有出现问题。


1
我原本并没有想到需要使用多个版本的 kubectl,但是这确实为我解决了问题。最终我使用了 asdf 版本管理器,并且安装了 kubectl 插件,非常推荐使用。https://github.com/asdf-community/asdf-kubectl - earlonrails
确实,这应该是被接受的答案。此外,当版本不匹配可能会导致问题时,kubectl会输出警告:WARNING: version difference between client (1.25) and server (1.20) exceeds the supported minor version skew of +/-1 - dimisjim

13

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


2
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.16.0/bin/darwin/amd64/kubectl$./kubectl version - Vishal Kanaujia

6

你正在使用的 CronJobs API 版本 (batch/v1beta1) 不再适用。

从客户端版本 v1.25 开始,请使用以下内容来指定 CronJob:

apiVersion: batch/v1

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

CronJobbatch/v1beta1 API 版本从 v1.25 开始不再提供服务。
...

  • 将清单和 API 客户端迁移到自 v1.21 开始就可用的 batch/v1 API 版本。

文档链接:https://kubernetes.io/docs/reference/using-api/deprecation-guide/#cronjob-v125 - Arvind Sridharan

2
在我的情况下,我需要使用的 Kubernetes 服务器非常老旧。它太老了,以至于我无法在我的机器上运行与之匹配的 kubectl 版本。因此,我不得不使用 Docker 来代替。
docker run --rm  -v /path/to/.kube/:/.kube/ \
  bitnami/kubectl:1.11.9 \
  <insert kubectl command here>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接