设置并发Kubernetes Cronjob

C.N*_*ivs 3 kubernetes

这是一个非常基本的问题,我似乎无法找到答案,但我无法弄清楚如何在cronjob中设置concurrencyPolicy.我尝试过当前文件配置的变体:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: job-newspaper
spec:
  schedule: "* */3 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
           - name: job-newspaper
            image: bdsdev.azurecr.io/job-newspaper:latest
            imagePullPolicy: Always
            resources:
              limits:
                cpu: "2048m"
                memory: "10G"
              requests:
                cpu: "512m"
                memory: "2G"
            command: ["spark-submit","/app/newspaper_job.py"]
          restartPolicy: OnFailure
          concurrencyPolicy: Forbid
Run Code Online (Sandbox Code Playgroud)

当我运行时,kubectl create -f ./job.yaml我收到以下错误:

error: error validating "./job.yaml": error validating data: 
ValidationError(CronJob.spec.jobTemplate.spec.template.spec): unknown 
field "concurrencyPolicy" in io.k8s.api.core.v1.PodSpec; if you choose 
to ignore these errors, turn validation off with --validate=false
Run Code Online (Sandbox Code Playgroud)

我可能要么把这个属性放在错误的地方或称它为错误的名称,我只是在文档中找不到它.谢谢!

Jos*_*sto 8

该属性concurrencyPolicy是CronJob规范的一部分,而不是PodSpec.您可以在本地查看给定对象的规范kubectl explain,例如

kubectl explain --api-version="batch/v1beta1" cronjobs.spec
Run Code Online (Sandbox Code Playgroud)

在那里你可以看到CronJob对象的结构/规范,在你的情况下应该是

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: job-newspaper
spec:
  schedule: "* */3 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          containers:
           - name: job-newspaper
            image: bdsdev.azurecr.io/job-newspaper:latest
            imagePullPolicy: Always
            resources:
              limits:
                cpu: "2048m"
                memory: "10G"
              requests:
                cpu: "512m"
                memory: "2G"
            command: ["spark-submit","/app/newspaper_job.py"]
          restartPolicy: OnFailure
Run Code Online (Sandbox Code Playgroud)