Kubernetes----Job控制器

本文详细介绍了Kubernetes Job控制器的功能和用法,包括用于一次性批量任务的特性,如成功完成次数、并发执行数量和超时设置。通过实例展示了如何创建和配置Job,以及如何观察Job和Pod的状态变化,进一步解释了设置总数和并行参数的Job控制器如何工作,以实现多任务并发执行。
摘要由CSDN通过智能技术生成

【原文链接】

一、Job控制器简介

1.1 Job控制器简介

Job,主要用于负责批量处理短暂的一次性任务,Job特点如下:

  • 当Job创建的Pod执行成功时,job将几乎成功结束的pod数量
  • 当成功结束的pod达到指定的数量时,job将完成执行

1.2 Job控制器资源文件

apiVersion: batch/v1   # 版本号
kind: Job  # 类型
metadata: # 元数据
  name: # rs名称
  namespae: # 所属命名空间
  labels:  # 标签
    controller: job
spec:  # 详情描述
  completions: 1 # 指定Job需要成功运行Pod的次数,默认值为1
  parallelism: 1 # 指定Job在同一时刻应该并发运行Pod的数量,默认值为1
  activeDeadlineSeconds: 30  # 指定Job可运行的时间期限,超过时间还为结束,系统将会尝试进行终止
  backoffLimit: 6  # 指定Job失败后进行重试的次数,默认值为6
  manualSelector: true  # 是否可以使用selector选择器选择pod,默认是false
  selector:  # 选择器,通过它指定该控制器管理哪些Pod
    matchLabels:   # Label匹配规则
      app: controller-pod
    matchExpressions:  # Expressions匹配项
      - {key: app, operator: In, values: [controller-pod]}
  template:   # 模板,当副本数量不足时,会根据下面的模板创建pod副本
    metadata:
      labels:
        app: controller-pod
    spec:
      restartPolicy: Never  # 重启策略只能设置为Never或者OnFailure
      containers:
      - name: counter
      - image: nginx:1.17.1

二、Job控制器实例

2.1 Job控制器实例演示

编辑pc_job.yaml文件,内容如下

apiVersion: v1
kind: Namespace
metadata:
  name: dev

---

apiVersion: batch/v1
kind: Job
metadata:
  name: pc-job
  namespace: dev
spec:
  manualSelector: true
  selector:
    matchLabels:
      app: counter-pod
  template:
    metadata:
      labels:
        app: counter-pod
    spec:
      restartPolicy: Never
      containers:
      - name: counter
        image: busybox:1.30
        command: ["/bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1;  do echo $i;sleep 3;done"]

然后开启另外两个窗口分别使用如下命令监视job和pod的状态变化

# 监视job的窗口
 kubectl get job -n dev -o wide -w
# 监视pod的窗口
 kubectl get pod -n dev -o wide -w

然后使用如下命令创建资源

[root@master pod_controller]# kubectl apply -f pc_job.yaml
namespace/dev created
job.batch/pc-job created
[root@master pod_controller]#

然后可以看到job的变化如下:

[root@master ~]# kubectl get job -n dev -o wide -w
NAME     COMPLETIONS   DURATION   AGE   CONTAINERS   IMAGES         SELECTOR
pc-job   0/1                      0s    counter      busybox:1.30   app=counter-pod
pc-job   0/1           0s         0s    counter      busybox:1.30   app=counter-pod
pc-job   1/1           28s        28s   counter      busybox:1.30   app=counter-pod

而pod的变化如下:

[root@master ~]# kubectl get pod -n dev -o wide -w
NAME           READY   STATUS    RESTARTS   AGE   IP       NODE     NOMINATED NODE   READINESS GATES
pc-job-hn5gj   0/1     Pending   0          0s    <none>   <none>   <none>           <none>
pc-job-hn5gj   0/1     Pending   0          0s    <none>   node2    <none>           <none>
pc-job-hn5gj   0/1     ContainerCreating   0          0s    <none>   node2    <none>           <none>
pc-job-hn5gj   1/1     Running             0          1s    10.244.2.105   node2    <none>           <none>
pc-job-hn5gj   0/1     Completed           0          28s   10.244.2.105   node2    <none>           <none>

2.2 设置总数和并行参数的Job控制器实例

编辑pc_job.yaml文件,内容如下,需要创建6个pod,允许并行执行3个

apiVersion: v1
kind: Namespace
metadata:
  name: dev

---

apiVersion: batch/v1
kind: Job
metadata:
  name: pc-job
  namespace: dev
spec:
  manualSelector: true
  completions: 6
  parallelism: 3
  selector:
    matchLabels:
      app: counter-pod
  template:
    metadata:
      labels:
        app: counter-pod
    spec:
      restartPolicy: Never
      containers:
      - name: counter
        image: busybox:1.30
        command: ["/bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1;  do echo $i;sleep 3;done"]

然后开启另外两个窗口分别使用如下命令监视job和pod的状态变化

# 监视job的窗口
 kubectl get job -n dev -o wide -w
# 监视pod的窗口
 kubectl get pod -n dev -o wide -w

然后使用如下命令创建资源

[root@master pod_controller]# kubectl apply -f pc_job.yaml
namespace/dev created
job.batch/pc-job created
[root@master pod_controller]#

job的变化过程如下:

[root@master ~]# kubectl get job -n dev -o wide -w
NAME     COMPLETIONS   DURATION   AGE   CONTAINERS   IMAGES         SELECTOR
pc-job   0/6                      0s    counter      busybox:1.30   app=counter-pod
pc-job   0/6           0s         0s    counter      busybox:1.30   app=counter-pod
pc-job   1/6           28s        28s   counter      busybox:1.30   app=counter-pod
pc-job   2/6           28s        28s   counter      busybox:1.30   app=counter-pod
pc-job   3/6           29s        29s   counter      busybox:1.30   app=counter-pod
pc-job   4/6           57s        57s   counter      busybox:1.30   app=counter-pod
pc-job   5/6           57s        57s   counter      busybox:1.30   app=counter-pod
pc-job   6/6           57s        57s   counter      busybox:1.30   app=counter-pod

pod的变化过程如下:

[root@master ~]# kubectl get pod -n dev -o wide -w
NAME           READY   STATUS    RESTARTS   AGE   IP       NODE     NOMINATED NODE   READINESS GATES
pc-job-m7q4d   0/1     Pending   0          0s    <none>   <none>   <none>           <none>
pc-job-jwtsg   0/1     Pending   0          0s    <none>   <none>   <none>           <none>
pc-job-7hg9g   0/1     Pending   0          0s    <none>   <none>   <none>           <none>
pc-job-m7q4d   0/1     Pending   0          0s    <none>   node2    <none>           <none>
pc-job-jwtsg   0/1     Pending   0          0s    <none>   node1    <none>           <none>
pc-job-7hg9g   0/1     Pending   0          0s    <none>   node1    <none>           <none>
pc-job-m7q4d   0/1     ContainerCreating   0          0s    <none>   node2    <none>           <none>
pc-job-jwtsg   0/1     ContainerCreating   0          0s    <none>   node1    <none>           <none>
pc-job-7hg9g   0/1     ContainerCreating   0          0s    <none>   node1    <none>           <none>
pc-job-jwtsg   1/1     Running             0          1s    10.244.1.89   node1    <none>           <none>
pc-job-7hg9g   1/1     Running             0          1s    10.244.1.88   node1    <none>           <none>
pc-job-m7q4d   1/1     Running             0          2s    10.244.2.106   node2    <none>           <none>
pc-job-7hg9g   0/1     Completed           0          28s   10.244.1.88    node1    <none>           <none>
pc-job-vdsgl   0/1     Pending             0          0s    <none>         <none>   <none>           <none>
pc-job-jwtsg   0/1     Completed           0          28s   10.244.1.89    node1    <none>           <none>
pc-job-vdsgl   0/1     Pending             0          0s    <none>         node1    <none>           <none>
pc-job-vtln5   0/1     Pending             0          0s    <none>         <none>   <none>           <none>
pc-job-vdsgl   0/1     ContainerCreating   0          0s    <none>         node1    <none>           <none>
pc-job-vtln5   0/1     Pending             0          0s    <none>         node1    <none>           <none>
pc-job-vtln5   0/1     ContainerCreating   0          1s    <none>         node1    <none>           <none>
pc-job-m7q4d   0/1     Completed           0          29s   10.244.2.106   node2    <none>           <none>
pc-job-d77m9   0/1     Pending             0          0s    <none>         <none>   <none>           <none>
pc-job-d77m9   0/1     Pending             0          0s    <none>         node2    <none>           <none>
pc-job-d77m9   0/1     ContainerCreating   0          0s    <none>         node2    <none>           <none>
pc-job-vtln5   1/1     Running             0          1s    10.244.1.90    node1    <none>           <none>
pc-job-vdsgl   1/1     Running             0          2s    10.244.1.91    node1    <none>           <none>
pc-job-d77m9   1/1     Running             0          1s    10.244.2.107   node2    <none>           <none>
pc-job-vtln5   0/1     Completed           0          29s   10.244.1.90    node1    <none>           <none>
pc-job-vdsgl   0/1     Completed           0          29s   10.244.1.91    node1    <none>           <none>
pc-job-d77m9   0/1     Completed           0          28s   10.244.2.107   node2    <none>           <none>

可以看出,确实可以实现创建6个任务,同时并发3个执行,总体执行时间大概两个周期即58秒左右即可完成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redrose2100

您的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值