栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

k8s学习(十二)创建Job

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s学习(十二)创建Job

目录
  • 前言
  • 一、Job
  • 二、非并行Job
  • 三、固定结束次数的Job
  • 四、带有工作队列的并行Job


前言 Job负责批量处理短暂的一次性任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
一、Job

1、Kubernetes支持以下几种Job:

    非并行Job:通常创建一个Pod直至其成功结束

    固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束

    带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功

2、特点

    RestartPolicy仅支持Never或OnFailure

    单个Pod时,默认Pod成功运行后Job即结束

    .spec.completions标志Job结束需要成功运行的Pod个数,默认为1

    .spec.parallelism标志并行运行的Pod的个数,默认为1

    spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试

二、非并行Job

(1)job-once.yaml

[root@k8s-master k8s]# cat job-once.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: busybox-job-test
spec:
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: busybox-job-container
        image: busybox
        command: ["sh",  "-c"]
        args: ['echo "hello";sleep 30; echo "job"']

(2)创建

[root@k8s-master k8s]# kubectl create -f job-once.yaml
job.batch/busybox-job-test created

(3)查看pod

任务处于 Running 状态

[root@k8s-master k8s]# kubectl get pods
NAME                                           READY   STATUS    RESTARTS   AGE
busybox-job-test-qwvd2                         1/1     Running   0          7s
[root@k8s-master k8s]# kubectl logs busybox-job-test-qwvd2
hello

等待30s过后,再次查看,任务处理Completed 状态

[root@k8s-master k8s]# kubectl get pods
NAME                                           READY   STATUS      RESTARTS   AGE
busybox-job-test-qwvd2                         0/1     Completed   0          1m20s
[root@k8s-master k8s]# kubectl logs busybox-job-test-qwvd2
hello
job

(4)查看pod详细信息

能够看到job执行情况

[root@k8s-master k8s]# kubectl describe pod busybox-job-test-qwvd2
...
    Command:
      sh
      -c
    Args:
      echo "hello";sleep 30; echo "job"
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Sun, 26 Dec 2021 23:16:01 -0500
      Finished:     Sun, 26 Dec 2021 23:16:31 -0500
    Ready:          False
    Restart Count:  0
    Environment:    
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-w5gbb (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-w5gbb:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-w5gbb
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  43s   default-scheduler  Successfully assigned default/busybox-job-test-qwvd2 to k8s-node01
  Normal  Pulling    41s   kubelet            Pulling image "busybox"
  Normal  Pulled     37s   kubelet            Successfully pulled image "busybox" in 4.480345937s
  Normal  Created    37s   kubelet            Created container busybox-job-container
  Normal  Started    37s   kubelet            Started container busybox-job-container
三、固定结束次数的Job

(1)job-many.yaml

[root@k8s-master k8s]# cat job-many.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: busybox-job-many-test
spec:
  completions: 6
  parallelism: 3
  backoffLimit: 6
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: busybox-job-many-container
        image: busybox
        command: ["sh",  "-c"]
        args: ['echo "hello";sleep 30; echo "job"']

(2)创建

[root@k8s-master k8s]# kubectl create -f job-many.yaml
job.batch/busybox-job-many-test created

(3)查看pod

首先创建了3个job

[root@k8s-master k8s]# kubectl get pods
NAME                                           READY   STATUS    RESTARTS   AGE
busybox-job-many-test-75gq9                    1/1     Running   0          34s
busybox-job-many-test-l2v8w                    1/1     Running   0          34s
busybox-job-many-test-njhf6                    1/1     Running   0          34s

3个job完成后,又并行创建了3个job

[root@k8s-master k8s]# kubectl get pods
NAME                                           READY   STATUS      RESTARTS   AGE
busybox-job-many-test-75gq9                    0/1     Completed   0          56s
busybox-job-many-test-h99mq                    1/1     Running     0          15s
busybox-job-many-test-l2v8w                    0/1     Completed   0          56s
busybox-job-many-test-njhf6                    0/1     Completed   0          56s
busybox-job-many-test-pdsl2                    1/1     Running     0          10s
busybox-job-many-test-zpc74                    1/1     Running     0          19s

6个job全部完成

[root@k8s-master k8s]# kubectl get pods
NAME                                           READY   STATUS      RESTARTS   AGE
busybox-job-many-test-75gq9                    0/1     Completed   0          2m7s
busybox-job-many-test-h99mq                    0/1     Completed   0          86s
busybox-job-many-test-l2v8w                    0/1     Completed   0          2m7s
busybox-job-many-test-njhf6                    0/1     Completed   0          2m7s
busybox-job-many-test-pdsl2                    0/1     Completed   0          81s
busybox-job-many-test-zpc74                    0/1     Completed   0          90s
[root@k8s-master k8s]# kubectl get job
NAME                    COMPLETIONS   DURATION   AGE
busybox-job-many-test   6/6           83s        5m51s
四、带有工作队列的并行Job

(1)job-queue.yaml

[root@k8s-master k8s]# cat job-queue.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: busybox-job-queue-test
spec:
  parallelism: 3
  backoffLimit: 6
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: busybox-job-queue-container
        image: busybox
        command: ["sh",  "-c"]
        args: ['echo "hello";sleep 30; echo "job"']

(2)创建

[root@k8s-master k8s]# kubectl create -f job-queue.yaml
job.batch/busybox-job-queue-test created

(3)查看job

并行启动了3个job,都处于Running 状态

[root@k8s-master k8s]# kubectl get pods
NAME                                           READY   STATUS    RESTARTS   AGE
busybox-job-queue-test-h4k9w                   1/1     Running   0          16s
busybox-job-queue-test-lhs6q                   1/1     Running   0          16s
busybox-job-queue-test-wr5zz                   1/1     Running   0          16s
[root@k8s-master k8s]# kubectl get job
NAME                     COMPLETIONS   DURATION   AGE
busybox-job-queue-test   0/1 of 3      20s        20s

等待一会任务完成后

[root@k8s-master k8s]# kubectl get pods
NAME                                           READY   STATUS      RESTARTS   AGE
busybox-job-queue-test-h4k9w                   0/1     Completed   0          101s
busybox-job-queue-test-lhs6q                   0/1     Completed   0          101s
busybox-job-queue-test-wr5zz                   0/1     Completed   0          101s
[root@k8s-master k8s]# kubectl get job
NAME                     COMPLETIONS   DURATION   AGE
busybox-job-queue-test   3/1 of 3      46s        100s
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号