先来生成一个YAML文件模板

$ k create job job-demo --image=busybox  --dry-run=client  -o yaml > job-demo.yaml

修改模拟文件

$ vim job-demo.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: job-demo
spec:
  template:  ##模板,基于此模板来创建pod,它用来定义pod的属性,比如container
    spec:
      restartPolicy: OnFailure ##定义Pod运行失败时的策略,可以是OnFailure和Never,其中OnFailure表示失败的话需要重启容器,Never表示失败的话不重启容器,而是重新生成一个新的Pod
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/abroad_images/busybox:latest
        name: job-demo
        command: ["/bin/echo"]
        args: ["hellow", "world"]

创建Job

$ k apply -f job-demo.yaml

查看Job,可以看到该容器运行完成后状态就变成了Completed。

$ k get job,pod

NAME                 COMPLETIONS   DURATION   AGE
job.batch/job-demo   1/1           12s        88s

NAME                                READY   STATUS      RESTARTS       AGE
pod/job-demo-nhlsm                  0/1     Completed   0              88s

对于Job,还有几个特殊字段:

  • activeDeadlineSeconds,设置 Pod 运行的超时时间。
  • backoffLimit,设置 Pod 的失败重试次数。
  • completions,Job 完成需要运行多少个 Pod,默认是 1 个。
  • parallelism,它与 completions 相关,表示允许并发运行的 Pod 数量,避免过多占用资源。

创建Job

$ vim  myjob.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: sleep-job

spec:
  activeDeadlineSeconds: 60  #60s就超时
  backoffLimit: 2 #失败重试2次就放弃
  completions: 4 #要运行4个pod,才算完成
  parallelism: 2 #允许并发运行2个pod

  template:
    spec:
      restartPolicy: Never
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/abroad_images/busybox:latest
        name: echo-job
        imagePullPolicy: IfNotPresent
        command:
          - sh
          - -c
          - sleep 10; echo done

创建job,并查看job情况,最终运行4个pod

$ k apply -f myjob.yaml ; kubectl get pod -w

NAME                            READY   STATUS              RESTARTS       AGE
cluster-test-79b978867f-4x2lw   1/1     Running             33 (30m ago)   203d
pod-demo                        1/1     Running             0              10h
sleep-job-vjbfl                 0/1     ContainerCreating   0              0s
sleep-job-z9s8m                 0/1     ContainerCreating   0              0s
sleep-job-z9s8m                 0/1     ContainerCreating   0              0s
sleep-job-vjbfl                 0/1     ContainerCreating   0              0s
sleep-job-z9s8m                 1/1     Running             0              1s
sleep-job-vjbfl                 1/1     Running             0              1s
sleep-job-z9s8m                 0/1     Completed           0              11s
sleep-job-vjbfl                 0/1     Completed           0              11s
sleep-job-z9s8m                 0/1     Completed           0              12s
sleep-job-vjbfl                 0/1     Completed           0              12s
sleep-job-z9s8m                 0/1     Completed           0              13s
sleep-job-5q8bq                 0/1     Pending             0              0s
sleep-job-5q8bq                 0/1     Pending             0              0s
sleep-job-5q8bq                 0/1     ContainerCreating   0              0s
sleep-job-vjbfl                 0/1     Completed           0              13s
sleep-job-p2v6j                 0/1     Pending             0              0s
sleep-job-p2v6j                 0/1     Pending             0              0s
sleep-job-p2v6j                 0/1     ContainerCreating   0              0s
sleep-job-5q8bq                 0/1     ContainerCreating   0              0s
sleep-job-p2v6j                 0/1     ContainerCreating   0              1s
sleep-job-5q8bq                 1/1     Running             0              1s
sleep-job-p2v6j                 1/1     Running             0              1s
sleep-job-5q8bq                 0/1     Completed           0              11s
sleep-job-p2v6j                 0/1     Completed           0              11s
sleep-job-5q8bq                 0/1     Completed           0              12s
sleep-job-p2v6j                 0/1     Completed           0              12s
sleep-job-5q8bq                 0/1     Completed           0              13s
sleep-job-p2v6j                 0/1     Completed           0              13s