服务类容器通常持续提供服务,需要一直运行, 比如HTTP Server、 Daemon 等 。工作类容器则是一次性任务, 比如批处理程序,完成后容器就退出。
配置hello-job.yml文件

  1. apiVersion: batch/v1
  2. kind: Job
  3. metadata:
  4. name: hellojob
  5. spec:
  6. template:
  7. metadata:
  8. name: hellojob
  9. spec:
  10. containers:
  11. - name: hello
  12. image: busybox
  13. command: ["echo","hello k8s"]
  14. restartPolicy: Never

batch/v1是当前 Job 的 apiVersion。
kind指明当前资源的类型为 Job 。
restartPolicy指定什么情况下需要重启容器。 对于Job ,只能设置为Never或者 OnFailure对于其他 controller (比如Deployment) 通常设置为Always
启动Job

  1. $ kubectl apply -f hello-job.yml
  2. job.batch/hellojob created

查看job

  1. $ kubectl get jobs
  2. NAME COMPLETIONS DURATION AGE
  3. hellojob 1/1 9s 5m22s

hellojob的状态是 Completed

  1. $ kubectl get pods
  2. NAME READY STATUS RESTARTS AGE
  3. hellojob-s9qks 0/1 Completed 0 6m17s

通过日志查看执行结果

  1. $ kubectl logs hellojob-s9qks
  2. hello k8s

CronJob

基于时间的Job
在给定时间点只运用一次
周期性的在定时间点运行
rontab 的格式为:分 时 日 月 星期 要运行的命令 。

  • 第1列分钟0~59
  • 第2列小时0~23)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要运行的命令
    1. apiVersion: batch/v1beta1
    2. kind: CronJob
    3. metadata:
    4. name: hello
    5. namespace: default
    6. labels:
    7. app: hello-cron
    8. spec:
    9. schedule: "*/1 * * * *"
    10. jobTemplate:
    11. spec:
    12. template:
    13. spec:
    14. containers:
    15. - name: hello
    16. image: busybox:1.28
    17. args: ['/bin/sh', '-c', 'date; echo Hello Kubernetes']
    18. restartPolicy: OnFailure
    上面的cronejob每分钟执行一次,还有一些值得我们关注的字段 .spec.successfulJobsHistoryLimit(默认为3) 和 .spec.failedJobsHistoryLimit(默认为1),表示历史限制,是可选的字段,指定可以保留多少完成和失败的 Job。
    查看
    1. $ kubectl get cronjob -l app=hello-cron
    2. NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
    3. hello */1 * * * * False 0 30s 92s
    4. $ kubectl get job
    5. NAME COMPLETIONS DURATION AGE
    6. hello-1626964200 1/1 37s 2m55s
    7. hello-1626964260 1/1 2s 115s
    8. hello-1626964320 1/1 2s 55s
    9. $ kubectl get pods
    10. NAME READY STATUS RESTARTS AGE
    11. hello-1626964260-5hmqj 0/1 Completed 0 2m49s
    12. hello-1626964320-4vbg9 0/1 Completed 0 109s
    13. hello-1626964380-zzng8 0/1 Completed 0 49s