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