当前位置:   article > 正文

Kubernetes----Job控制器_dashboard怎么限制job

dashboard怎么限制job

【原文链接】

一、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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

二、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"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

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

# 监视job的窗口
 kubectl get job -n dev -o wide -w
# 监视pod的窗口
 kubectl get pod -n dev -o wide -w
  • 1
  • 2
  • 3
  • 4

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

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

然后可以看到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
  • 1
  • 2
  • 3
  • 4
  • 5

而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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

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

# 监视job的窗口
 kubectl get job -n dev -o wide -w
# 监视pod的窗口
 kubectl get pod -n dev -o wide -w
  • 1
  • 2
  • 3
  • 4

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

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

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/563793
推荐阅读
相关标签
  

闽ICP备14008679号