头图

  在Kubernetes中,Job是一次性任务的控制器。它控制Pod中的容器执行完成任务后不会再重启,并将容器的状态设置为“Completed”。如果Pod中的容器出现了异常终止的情况,Job控制器会根据设置的重启策略进行Pod的重启。如果因为Node节点的故障导致Pod无法正常运行,Job控制器会通过调度器将Pod调度到其他的节点上运行。Job控制器的运行方式分为:单工作队列的串行方式和多工作队列的并行方式。

  视频讲解如下:
https://www.bilibili.com/video/BV1sw4m1a7Te/?aid=1105996436&c...

  下面通过具体的示例来演示如何使用单工作队列的Job串行方式。
(1)创建“job-demo1.yaml”文件,并输入下面的内容:

apiVersion: batch/v1
kind: Job
metadata:
  name: job-demo1
spec:
  template:
    spec:
      containers:
      - name: busybox
        image: busybox:latest
        imagePullPolicy: IfNotPresent
        command: [ "/bin/sh", "-c", "sleep 120s" ]
      #重启策略,发生错误,不进行重启
      restartPolicy: Never 

(2)执行命令创建Job。

kubectl apply -f job-demo1.yaml

(3)查看Job信息和Pod信息,如下图所示。

kubectl get job,pod

在这里插入图片描述

(4)等待120秒后,再次查看Job信息和Pod信息,如下图所示。

kubectl get job,pod

在这里插入图片描述

(5)对比上面的两张图片,可以看出:由于Job控制器执行的一次性任务,当Pod中的容器运行120秒后,Pod将被设置成“Completed”状态,并且不再被重启。


赵渝强老师
33 声望11 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...