Job and CronJob

Warning

注意API的版本,可能会随着Kubernetes的版本更新而改变

$ kubectl api-resources | grep job
cronjobs                          cj           batch/v1                               true         CronJob
jobs                                           batch/v1                               true         Job

Job

Job: https://kubernetes.io/docs/concepts/workloads/controllers/job/

一次性运行的Pod,一般为执行某个命令或者脚本,执行结束后pod的生命随之结束

create job

$ kubectl create job my-job --image=busybox -- sh -c "sleep 50"
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  template:
    spec:
      containers:
      - name: my-job
        image: busybox
        command: ["sh",  "-c", "sleep 50"]
      restartPolicy: Never
$ kubectl get pods
NAME           READY   STATUS    RESTARTS   AGE
my-job-z679f   1/1     Running   0          10s

$ kubectl get pods
NAME           READY   STATUS      RESTARTS   AGE
my-job-z679f   0/1     Completed   0          63s

CronJob

计划任务

CronJobs: https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/

create CronJob

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