1

我已经像这样添加—-runtime-config=batch/v2alpha1=truekube-apiserver配置中:

      ... other stuff
      command:
        - "/hyperkube"
        - "apiserver"
        - "--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota"
        - "--address=0.0.0.0"
        - "--allow-privileged"
        - "--insecure-port=8080"
        - "--secure-port=443"
        - "--cloud-provider=azure"
        - "--cloud-config=/etc/kubernetes/azure.json"
        - "--service-cluster-ip-range=10.0.0.0/16"
        - "--etcd-servers=http://127.0.0.1:2379"
        - "--etcd-quorum-read=true"
        - "--advertise-address=10.240.255.15"
        - "--tls-cert-file=/etc/kubernetes/certs/apiserver.crt"
        - "--tls-private-key-file=/etc/kubernetes/certs/apiserver.key"
        - "--client-ca-file=/etc/kubernetes/certs/ca.crt"
        - "--service-account-key-file=/etc/kubernetes/certs/apiserver.key"
        - "--storage-backend=etcd2"
        - "--v=4"
        - "—-runtime-config=batch/v2alpha1=true"
        ... etc

但是重启后masterkubectl api-versions仍然只显示batch/v1v2alpha1看不到。

$ kubectl api-versions
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1beta1
apps/v1beta1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
batch/v1
certificates.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1alpha1
rbac.authorization.k8s.io/v1beta1
settings.k8s.io/v1alpha1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

这是我的工作定义:

kind: CronJob
apiVersion: batch/v2alpha1
metadata:
  name: mongo-backup
spec:
  schedule: "* */1 * * *"
  jobTemplate:
    spec:
... etc

当我尝试创建作业时遇到的错误:

$ kubectl create -f backup-job.yaml                 
error: error validating "backup-job.yaml": error validating data: unknown object type schema.GroupVersionKind{Group:"batch", Version:"v2alpha1", Kind:"CronJob"}; if you choose to ignore these errors, turn validation off with --validate=false
$ kubectl create -f backup-job.yaml --validate=false
error: unable to recognize "backup-job.yaml": no matches for batch/, Kind=CronJob

我还需要做什么?

PS。这是在 Azure ACS 上,但我认为这没有什么不同。

4

3 回答 3

4

你可以在这里使用最新的 API 版本来apiVersion: batch/v1beta1解决这个问题。

于 2021-05-07T10:23:02.013 回答
3

最新的 Kubernetes v1.21 发行说明指出:

  • batch/v2alpha1 CronJob 类型定义和客户端已被弃用和删除。(#96987@soltysh)[SIG API 机械、应用程序、CLI 和测试]

在该版本中,您应该使用apiVersion: batch/v1,请参见下面的示例

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

请注意

CronJobs在 Kubernetes v1.21 中被提升为普遍可用。如果您使用的是旧版本的 Kubernetes,请参考您使用的 Kubernetes 版本的文档,以便您看到准确的信息。较旧的 Kubernetes 版本不支持batch/v1CronJob API。

于 2021-04-16T13:19:21.683 回答
-1

在他们的 github 上有一个未解决的问题: https ://github.com/kubernetes/kubernetes/issues/51939

我相信除了等待之外别无选择,现在我实际上陷入了同样的问题

于 2017-11-28T11:02:10.880 回答