2025,每天10分钟,跟我学K8S(十六)- Job

        本章节来学习K8s中一种新的资源对象Job。

什么是Job?

        Job是Kubernetes中的一个核心概念,用于在集群中运行独立的任务。与其他控制器(如ReplicaSet和Deployment)不同,Job关注的是执行一次性任务而不是保持指定数量的实例运行。

Job的主要作用

  1. 独立任务执行:Job确保在集群中运行独立的任务,并在任务成功完成后自动终止。
  2. 任务的重试:Job支持定义任务的重试策略,以应对任务执行失败的情况。
  3. 并行任务:Job允许定义多个并行执行的任务,以提高任务执行效率。

Job的例子

我们用Job这个资源对象来创建一个任务,我们定一个Job来执行一个倒计时的任务,定义YAML文件:

apiVersion: batch/v1
kind: Job
metadata:
  name: job-test
spec:
  template:
    metadata:
      name: job-test
    spec:
      restartPolicy: Never
      containers:
      - name: counter
        image: m.daocloud.io/docker.io/busybox
        command:
        - "bin/sh"
        - "-c"
        - "for i in 1 2 3 4 5 6 7 8 9 ; do echo $i; done"

注意JobRestartPolicy仅支持NeverOnFailure两种,不支持Always,我们知道Job就相当于来执行一个批处理任务,执行完就结束了,如果支持Always的话是不是就陷入了死循环了?

然后来创建该Job,保存为job-demo.yaml

root@k8s-master:~# kubectl apply -f job.yaml
job.batch/job-test created

通过命令查看当前的Job资源对象:

# kubectl get pod 

发现job的状态为Completed,表示这个job已经完成,通过kubectl logs来查看当前任务的执行结果。看到yaml里面执行的shell命令也运行完毕

posted @ 2025-03-18 15:33  Devopser06  阅读(78)  评论(0)    收藏  举报  来源